Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 why is program working weird after a while?
Index -> Programming, Turing -> Turing Help
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
tianxiao




PostPosted: Wed Dec 24, 2008 12:10 am   Post subject: why is program working weird after a while?

my game is only starting to take shape. But when my 2 clouds shoot lightning, they were fine at the beginning (they shoot at where they stops) but then after about 2 minutes the lightning sprites begin to appear everywhere. What's happening? how can this be improved? Sample of program:

%FINAL PROJECT
var gCloudY : int
var gCloudX : int
var groundh : int
%Main Menu
var win : int
win := Window.Open ("title:DISASTER;position:center;middle;nocursor;noecho;graphics:716,700")

%FONTS
var font1 : int
font1 := Font.New ("Comic Sans MS:18x12: bold")


%Sprites: Sand
var sand1, sand2, sand3, sand4 : int
sand1 := Sprite.New (Pic.FileNew ("sand1.bmp"))
sand2 := Sprite.New (Pic.FileNew ("sand2.bmp"))
sand3 := Sprite.New (Pic.FileNew ("sand3.bmp"))
sand4 := Sprite.New (Pic.FileNew ("sand4.bmp"))

%Sprites: Fire
var fire1, fire2, fire3, fire4 : int
fire1 := Sprite.New (Pic.FileNew ("fire1.bmp"))
fire2 := Sprite.New (Pic.FileNew ("fire2.bmp"))
fire3 := Sprite.New (Pic.FileNew ("fire3.bmp"))
fire4 := Sprite.New (Pic.FileNew ("fire4.bmp"))
%Sprites: Block


%Sprite: Meteor
var meteor : int
meteor := Sprite.New (Pic.FileNew ("meteor11.bmp"))


%Sprite: Cloud
var cloud : int
cloud := Sprite.New (Pic.FileNew ("cloud.bmp"))

%Sprite: Lightning
var lightning1, lightning2, lightning3, lightning4, lightning5 : int
var lightning6, lightning7, lightning8 : int
lightning1 := Sprite.New (Pic.FileNew ("lightning1.bmp"))
lightning2 := Sprite.New (Pic.FileNew ("lightning2.bmp"))
lightning3 := Sprite.New (Pic.FileNew ("lightning3.bmp"))
lightning4 := Sprite.New (Pic.FileNew ("lightning4.bmp"))
lightning5 := Sprite.New (Pic.FileNew ("lightning5.bmp"))
lightning6 := Sprite.New (Pic.FileNew ("lightning6.bmp"))
lightning7 := Sprite.New (Pic.FileNew ("lightning7.bmp"))
lightning8 := Sprite.New (Pic.FileNew ("lightning8.bmp"))


process sand
var sand1, sand2, sand3, sand4 : int
sand1 := Sprite.New (Pic.FileNew ("sand1.bmp"))
sand2 := Sprite.New (Pic.FileNew ("sand2.bmp"))
sand3 := Sprite.New (Pic.FileNew ("sand3.bmp"))
sand4 := Sprite.New (Pic.FileNew ("sand4.bmp"))
var sandx, sandy : int
var num, maxnum : int
sandy := 100
maxnum := 100

randomize

loop
num := Rand.Int (1, maxnum)
sandx := Rand.Int (0, 680)
if (num = 8) then
Sprite.SetPosition (sand1, sandx, sandy, false)
Sprite.Show (sand1)
delay (100)
Sprite.Hide (sand1)

Sprite.SetPosition (sand2, sandx, sandy, false)
Sprite.Show (sand2)
delay (100)
Sprite.Hide (sand2)

Sprite.SetPosition (sand3, sandx, sandy, false)
Sprite.Show (sand3)
delay (100)
Sprite.Hide (sand3)

Sprite.SetPosition (sand4, sandx, sandy, false)
Sprite.Show (sand4)
delay (2000)
Sprite.Hide (sand4)
end if
end loop

end sand


randomize

process cloudright
var cloud : int
cloud := Sprite.New (Pic.FileNew ("cloud.bmp"))
var CloudY : int
loop
CloudY := groundh + 282
for CloudX : -170 .. 1240 by 1
Sprite.SetPosition (cloud, CloudX, CloudY, false)
Sprite.Show (cloud)
delay (8)
Sprite.Hide (cloud)
end for
end loop
end cloudright







process lightning
var lightning1, lightning2, lightning3, lightning4, lightning5 : int
var lightning6, lightning7, lightning8 : int
lightning1 := Sprite.New (Pic.FileNew ("lightning1.bmp"))
lightning2 := Sprite.New (Pic.FileNew ("lightning2.bmp"))
lightning3 := Sprite.New (Pic.FileNew ("lightning3.bmp"))
lightning4 := Sprite.New (Pic.FileNew ("lightning4.bmp"))
lightning5 := Sprite.New (Pic.FileNew ("lightning5.bmp"))
lightning6 := Sprite.New (Pic.FileNew ("lightning6.bmp"))
lightning7 := Sprite.New (Pic.FileNew ("lightning7.bmp"))
lightning8 := Sprite.New (Pic.FileNew ("lightning8.bmp"))

Sprite.SetPosition (lightning1, gCloudX, gCloudY - 10, false)
Sprite.Show (lightning1)
delay (20)
Sprite.Hide (lightning1)
Sprite.SetPosition (lightning2, gCloudX, gCloudY - 78, false)
Sprite.Show (lightning2)
delay (20)
Sprite.Hide (lightning2)
Sprite.SetPosition (lightning3, gCloudX, gCloudY - 92, false)
Sprite.Show (lightning3)
delay (20)
Sprite.Hide (lightning3)
Sprite.SetPosition (lightning4, gCloudX, gCloudY - 132, false)
Sprite.Show (lightning4)
delay (20)
Sprite.Hide (lightning4)
Sprite.SetPosition (lightning5, gCloudX, gCloudY - 162, false)
Sprite.Show (lightning5)
delay (20)
Sprite.Hide (lightning5)
Sprite.SetPosition (lightning6, gCloudX, gCloudY - 186, false)
Sprite.Show (lightning6)
delay (20)
Sprite.Hide (lightning6)
Sprite.SetPosition (lightning7, gCloudX, gCloudY - 218, false)
Sprite.Show (lightning7)
delay (40)
Sprite.Hide (lightning7)
Sprite.SetPosition (lightning8, gCloudX, gCloudY - 214, false)
Sprite.Show (lightning8)
delay (40)
Sprite.Hide (lightning8)


end lightning








process CLOUDLEFT
var cloud : int
cloud := Sprite.New (Pic.FileNew ("cloud.bmp"))
var CloudY : int
var num1 : int
var guess : int
loop
CloudY := groundh + 242
gCloudY := CloudY
guess := Rand.Int (1, 2)
num1 := Rand.Int (1, 1000)
if (guess = 1) then
for decreasing CloudX : 1240 .. num1 by 1
gCloudX := num1
Sprite.SetPosition (cloud, CloudX, CloudY, false)
Sprite.Show (cloud)
delay (8)
Sprite.Hide (cloud)
end for
Sprite.SetPosition (cloud, num1, CloudY, false)
Sprite.Show (cloud)
delay (1000)
Sprite.Hide (cloud)
fork lightning
Sprite.SetPosition (cloud, num1, CloudY, false)
Sprite.Show (cloud)
delay (1000)
Sprite.Hide (cloud)
else
for decreasing CloudX : 1240 .. -300 by 1
Sprite.SetPosition (cloud, CloudX, CloudY, false)
Sprite.Show (cloud)
delay (8)
Sprite.Hide (cloud)
end for
end if

end loop
end CLOUDLEFT



process CLOUDRIGHT
var cloud : int
cloud := Sprite.New (Pic.FileNew ("cloud.bmp"))
var CloudY : int
var num : int
var guess : int
loop
CloudY := groundh + 242
gCloudY := CloudY
guess := Rand.Int (1, 2)
num := Rand.Int (1, 1000)
if (guess = 1) then
for CloudX : -300 .. num by 1
gCloudX := num
Sprite.SetPosition (cloud, CloudX, CloudY, false)
Sprite.Show (cloud)
delay (8)
Sprite.Hide (cloud)
end for
Sprite.SetPosition (cloud, num, CloudY, false)
Sprite.Show (cloud)
delay (1000)
Sprite.Hide (cloud)
fork lightning
Sprite.SetPosition (cloud, num, CloudY, false)
Sprite.Show (cloud)
delay (1000)
Sprite.Hide (cloud)
else
for CloudX : -300 .. 1240 by 1
Sprite.SetPosition (cloud, CloudX, CloudY, false)
Sprite.Show (cloud)
delay (8)
Sprite.Hide (cloud)
end for
end if

end loop
end CLOUDRIGHT
%77

%161















procedure moon
var groundheight : int
groundheight := 77
groundh := groundheight
var moonmx, moonmy, moonmb : int
win := Window.Open ("title:Moon;position:center;middle;nocursor;noecho;graphics:1238,660")
Pic.ScreenLoad ("moon.jpg", 0, 0, picMerge)

fork sand
fork CLOUDRIGHT
fork CLOUDLEFT
delay (1000000)
Window.Close (win)
end moon


























var ngamex, ngamey : int
ngamex := 100
ngamey := 500
var insx, insy : int
insx := 100
insy := 430
var optx, opty : int
optx := 100
opty := 360
Font.Draw ("New Game", ngamex, ngamey, font1, red)
Font.Draw ("Instructions", insx, insy, font1, red)
Font.Draw ("Options", optx, opty, font1, red)

var mousex, mousey, mouseb : int
loop
Mouse.Where (mousex, mousey, mouseb)
%if mouse is over New Game
if (mousex >= ngamex - 4 and mousex <= ngamex + 170) and (mousey >= ngamey - 5 and mousey <= ngamey + 22) then
Font.Draw ("New Game", ngamex, ngamey, font1, blue)
if (mouseb = 1) then
moon

end if
%if mouse is over Instructions
elsif (mousex >= insx - 5 and mousex <= insx + 192) and (mousey >= insy - 6 and mousey <= insy + 23) then
Font.Draw ("Instructions", insx, insy, font1, blue)
if (mouseb = 1) then

end if
%if mouse is over Options
elsif (mousex >= optx - 4 and mousex <= optx + 120) and (mousey >= opty - 10 and mousey <= opty + 20) then
Font.Draw ("Options", optx, opty, font1, blue)
if (mouseb = 1) then
moon

end if

else
Font.Draw ("New Game", ngamex, ngamey, font1, red)
Font.Draw ("Instructions", insx, insy, font1, red)
Font.Draw ("Options", optx, opty, font1, red)
end if
end loop
Sponsor
Sponsor
Sponsor
sponsor
revangrey




PostPosted: Wed Dec 24, 2008 12:22 am   Post subject: Re: why is program working weird after a while?

just before someone else mentions it...

I don't think anyone can check your program if they don't have those pictures downloaded.

and someone will probably tell you to use code tags/syntax tags

[syntax="programming language"]
insert code here
[/syntax]

or code tags
tianxiao




PostPosted: Wed Dec 24, 2008 12:40 am   Post subject: Re: why is program working weird after a while?

Here are the attachments. i used bmps because i didn't wanna ruin the picture quality. Everything's in there. I fixed it a bit so only the parts i need help with ares uncommented. And please explain to me what you're saying. I just started this year with programming in grade 10 so i don't know much about it.


final.rar
 Description:

Download
 Filename:  final.rar
 Filesize:  251.65 KB
 Downloaded:  68 Time(s)

DemonWasp




PostPosted: Wed Dec 24, 2008 1:39 am   Post subject: RE:why is program working weird after a while?

Not that it's a particular issue with your 250KB fileset, but you can safely encode pictures as PNG without losing image quality. I'm not sure whether Turing loads them offhand.
sliverofshadows475




PostPosted: Wed Dec 24, 2008 9:33 am   Post subject: Re: why is program working weird after a while?

Oh, and just a reminder, please read the: "Announcement: Please do NOT post "I need help" titles" post.

It just explains that its much easier to help you if you tell what you need help with in the title. It also helps for people searching up the certain problems. so they don't have to look through every search item to find what they need.
Insectoid




PostPosted: Wed Dec 24, 2008 10:36 am   Post subject: RE:why is program working weird after a while?

First of all, you're using processes. They are only good for music and situations where you are simulating things happening at the same time with no control over each other that the 'main' program must handle, the latter never being used in Turing. My guess is that the processes are falling out of sync and then it screws up. Look up procedures and how to use them in a main loop. It is far more reliable and efficient.
tianxiao




PostPosted: Wed Dec 24, 2008 10:37 am   Post subject: Re: why is program working weird after a while?

well i need to have 2 animations running at the same time. How can i use procedure?
Insectoid




PostPosted: Wed Dec 24, 2008 10:44 am   Post subject: RE:why is program working weird after a while?

You have them both in the same loop. One delay. The first one moves, the second one moves, View.Update, end loop. Do NOT have both animations in individual loops.

For example, to move a ball right and a box up,
Turing:

var ovalX := 5
var boxY := 10
setscreen (offscreenonly)
loop
    Draw.Box (50, boxY, 100, boxY+50, black)
    Draw.Oval (ovalX, 200, 5, 5, black)
    ovalX += 1
    boxY += 1
    View.Update
    delay(10)
    cls
end loop
Sponsor
Sponsor
Sponsor
sponsor
tianxiao




PostPosted: Wed Dec 24, 2008 10:52 am   Post subject: Re: why is program working weird after a while?

sorry i'm new to this... i kinda get that, what's the += and how exactly can i put the two processes in one loop?! and i have one more process (lightning shooting) that gets called on in each of the process.....
Insectoid




PostPosted: Wed Dec 24, 2008 11:02 am   Post subject: RE:why is program working weird after a while?

ovalX += 1 is the same as ovalX := ovalX+1. Just easier to write.

So make lightning its own procedure and call it from the other 2.

Turing:

proc lightning
    %whatever lightning does
    %NO LOOPS, CLS, OR DELAY IN HERE!
end lightning

proc cloud1
    %draw, move, etc. cloud
    lightning
    %NO LOOPS, CLS, OR DELAY IN HERE!
end cloud1

proc cloud2
    %same as cloud1
    %NO LOOPS, CLS, OR DELAY IN HERE!
end cloud2

loop
    cloud1
    cloud2
    View.Update
    delay (10)
    cls
end loop
tianxiao




PostPosted: Wed Dec 24, 2008 11:27 am   Post subject: Re: why is program working weird after a while?

i did what you told me to but it's not working. clouds aren't appearing. i sent an attachment. Can you try to correct in there? i can't get it to work for some reason.
Insectoid




PostPosted: Wed Dec 24, 2008 11:30 am   Post subject: RE:why is program working weird after a while?

I have given you a template; it's up to you to figure out the rest. That is what programming is about. Solving problems. The only other thing I can do is point you to the Turing Walkthrough.
Display posts from previous:   
   Index -> Programming, Turing -> Turing Help
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 12 Posts ]
Jump to:   


Style:  
Search: