Bullet gets fast when Shooter near border, why? 
	 
	
		| Author | 
		Message | 
	 
		 
		riveryu
 
  
 
    
		 | 
		
		
			
				  Posted: Fri Mar 07, 2008 7:54 pm    Post subject: Bullet gets fast when Shooter near border, why?  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				The shooter appears to be shooting faster as he gets closer to the border, why is that? How do you fix it so that the rate of bullet shooting remains constant no matter what? Also, how do you make it so that the shooter has the same movement speed while shooting? Please give specific answers, I'm just curious after I tested out the code below. 
 
 
Below is code quoted from jamonathin, on Why You Should Avoid Processes
 
 
	  | Turing: | 	 		  
View.Set ("offscreenonly") 
var chars  : array char of boolean 
var x, y, bullety, bulletx  : int := 100 
var shot  : int := 0 
forward proc movement 
 proc shoot 
     loop 
        shot  := 1 
        bullety + = 1 
        exit when bullety - 10>  maxy 
        movement 
     end loop 
    shot  := 0 
end shoot 
 body proc movement 
     Input.KeyDown (chars ) 
    if chars  (KEY_UP_ARROW) and y +  64 <  maxy then 
        y  := y +  1 
    elsif chars  (KEY_DOWN_ARROW) and y - 64>  0 then 
        y  := y -  1 
    elsif chars  (KEY_LEFT_ARROW) and x - 64 >  0 then 
        x  := x -  1 
    elsif chars  (KEY_RIGHT_ARROW) and x +  64 <  maxx then 
        x  := x +  1 
    end if 
    if chars  (KEY_CTRL ) and shot  = 0 then 
        bullety  := y 
 
        bulletx  := x 
 
        shoot 
     end if 
    cls 
    if shot  = 1 then 
        drawoval (bulletx +  35, bullety -  1,  10,  10,  0) 
        drawoval (bulletx +  35, bullety,  10,  10,  7) 
        drawoval (bulletx -  35, bullety -  1,  10,  10,  0) 
        drawoval (bulletx -  35, bullety,  10,  10,  7) 
    end if 
    drawfilloval (x, y,  20,  20,  7) 
    View.Update 
end movement 
 loop 
    movement 
 end loop  | 	 
  | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
		 
		Sponsor Sponsor 
		 
  
		 | 
		
 | 
	 
	 
		  | 
	 
				 
		riveryu
 
  
 
    
		 | 
		
		
			
				  Posted: Fri Mar 07, 2008 8:22 pm    Post subject: Re: Bullet gets fast when Shooter near border, why?  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				I answered one of my own questions, Bullet gets fast when Shooter near border, why? Because the shooter can only shoot again when the bullet hits the maxy -10, the shorter distance the faster the bullet gets to its destination, the faster the shooter can shoot again. I attempted to fix the problem by making the limit for the bullet further up the maxy.      -500> maxy
 
Is there an already determined value for how far should the limit be for your bullet to remain constant? | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Dan
 
  
 
    
		 | 
		
		
			
				  Posted: Fri Mar 07, 2008 8:37 pm    Post subject: RE:Bullet gets fast when Shooter near border, why?  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				It's probly not a good idea to be calling movement from shoot and shoot from movement. That sets up some wired recursion that is realy not nessary.
 
 
Idealy you should be able to put most of that code in a singal loop that checks for key preses as well as moves the bulite and draws everything.
 
 
You could still break it down more in to procudures but it might be easyer to start with just a loop:
 
 
	  | Turing: | 	 		  
.. .. .. .. .. ..
 loop
if shot  = 1 then
   bullety + = 1 
   if bullety >=  maxy -  10 then
     shot  := 0
   end if
end if
 Input.KeyDown (chars )
    if chars  (KEY_UP_ARROW) and y +  64 <  maxy then
        y  := y +  1
    elsif chars  (KEY_DOWN_ARROW) and y - 64>  0 then
        y  := y -  1
    elsif chars  (KEY_LEFT_ARROW) and x - 64 >  0 then
        x  := x -  1
    elsif chars  (KEY_RIGHT_ARROW) and x +  64 <  maxx then
        x  := x +  1
    end if
    if chars  (KEY_CTRL ) and shot  = 0 then
        bullety  := y
 
        bulletx  := x
 
        shot  := 1
    end if
    cls
    if shot  = 1 then
        drawoval (bulletx +  35, bullety -  1,  10,  10,  0)
        drawoval (bulletx +  35, bullety,  10,  10,  7)
        drawoval (bulletx -  35, bullety -  1,  10,  10,  0)
        drawoval (bulletx -  35, bullety,  10,  10,  7)
    end if
    drawfilloval (x, y,  20,  20,  7)
    View.Update 
end loop
  | 	 
  | 
			 
			
				| Computer Science Canada
Help with programming in C, C++, Java, PHP, Ruby, Turing, VB and more!  | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		riveryu
 
  
 
    
		 | 
		
		
			
				  Posted: Sun Mar 09, 2008 1:00 pm    Post subject: RE:Bullet gets fast when Shooter near border, why?  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				| Thanks a lot, Dan | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		 | 
	 
 
	
	
	 
	
	 |