| why is program working weird after a while? 
 
	 
	
		| Author | Message |   
		| tianxiao 
 
 
 
 
 | 
			
				|  Posted: 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
 
  
   |  |   
		|  |   
		| revangrey 
 
  
 
 
 | 
			
				|  Posted: 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 
 
 
 
 
 | 
			
				|  Posted: 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. 
 
 
 
	
		
	 
		| Description: |  |  Download
 |  
		| Filename: | final.rar |  
		| Filesize: | 251.65 KB |  
		| Downloaded: | 102 Time(s) |  
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| DemonWasp 
 
 
 
 
 | 
			
				|  Posted: 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 
 
  
 
 
 | 
			
				|  Posted: 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 
 
  
 
 
 | 
			
				|  Posted: 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 
 
 
 
 
 | 
			
				|  Posted: 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 
 
  
 
 
 | 
			
				|  Posted: 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,
 
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| Sponsor Sponsor
 
  
   |  |   
		|  |   
		| tianxiao 
 
 
 
 
 | 
			
				|  Posted: 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 
 
  
 
 
 | 
			
				|  Posted: 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 
 
 
 
 
 | 
			
				|  Posted: 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 
 
  
 
 
 | 
			
				|  Posted: 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. |  
				|  |  |   
		|  |  |  
	  
		|  |   
		|  |  
 |