pong help plz :( 
	 
	
		| Author | 
		Message | 
	 
		 
		FakeSound
 
  
 
    
		 | 
		
		
			
				  Posted: Sat May 06, 2006 6:49 pm    Post subject: pong help plz :(  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				My friend and i are making a game of pong; just a simple game for extra marks in our programming class.
 
However, we're facing a few problems right now... 
 
a] i can't get the paddles to stay in the screen (I need to set boundaries, but don't know how)
 
b] the ball doesn't bounce off the paddles (We're not very experienced using whatdotcolor or collision)
 
so ... i'll post my code right here, any help is greatly appreciated.
 
 
	  | code: | 	 		  setscreen ("graphics:630;420, Title: Pong?")
 
var x, y, x1, y1, a, b, a1, b1,oy,ox,os: int
 
var chars : array char of boolean
 
var nx,ny:int:=1 % changes direction of ball and checks boundries
 
colorback (255)
 
x := 10
 
y := 10
 
x1 := 20
 
y1 := 100
 
a := 10
 
b := 10
 
a1 := 20
 
b1 := 100
 
oy:=200
 
ox:=170
 
os:=10
 
ox := Rand.Int (10, 100) %set the x quadrant for the 1st oval 
 
oy := Rand.Int (10, 100) %set the y quadrant for the 1st oval
 
 
 
loop
 
   
 
   
 
    /* omit if ox <= 0 then %check to see if it goes off to the left 
 
        nx := +1 %chages the direction */
 
    if oy <= 0 then %check to see if it goes off the top 
 
        ny := +1 %chages the direction 
 
    end if 
 
 
    /* omitif ox >= maxx then %check to see if it goes off to the right 
 
        nx := - 1 %chages the direction */
 
    if oy >= maxy then %check to see if it goes off the bottom 
 
        ny := - 1 %chages the direction 
 
    end if 
 
    
 
        if ox <= a then
 
        nx := +1
 
    elsif oy <= b then
 
        nx:= +1
 
        end if
 
 
    Input.KeyDown (chars)
 
    
 
 
    if chars ('w') then
 
        y := y + 5
 
        y1 := y1 + 5
 
    end if
 
    if chars ('s') then
 
        y := y - 5
 
        y1 := y1 - 5
 
    end if
 
 
    drawfillbox (x, y, x1, y1, brightgreen)
 
    drawfillbox (a + 600, b, a1 + 600, b1, brightred)
 
    drawfilloval (ox,oy,os,os,brightblue)
 
    delay (10)
 
    cls
 
 
 
    Input.KeyDown (chars)
 
 
    if chars (KEY_UP_ARROW) then
 
        b := b + 5
 
        b1 := b1 + 5
 
    end if
 
    if chars (KEY_DOWN_ARROW) then
 
        b := b - 5
 
        b1 := b1 - 5
 
    end if
 
    ox += nx 
 
    oy += ny 
 
 
 
end loop  | 	 
  | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
		 
		Sponsor Sponsor 
		 
  
		 | 
		
 | 
	 
	 
		  | 
	 
				 
		Clayton
 
  
 
    
		 | 
		
		
			
				  Posted: Sat May 06, 2006 7:03 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				hello welcome to compsci, plz dont post "I need help" or "help plz" as we know you need help, thats why you posted here (in a perfect world), now on to your problem, for the use of whatdotcolor (aka View.WhatDotColor) all you are doing is checking to see if a pixel is a color right? and if your ball has a radius, the best place to check for a collision is on the edge of the ball right? so do something like this
 
 
its as simple as that, if you are having any problems with anything check out the Turing Walkthrough good luck on the project!! | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		FakeSound
 
  
 
    
		 | 
		
		
			
				  Posted: Sat May 06, 2006 7:11 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				I just tried inputting that, it didn't work
 
Sorry for posting the 'help plz' . .      
 
ummm ... yeah, that didn't work ... if it means anything, i'm using version 4.0.3
 
but when i tried using that, it said that bounce needs to be declared ... i just can't seem to make the ball bounce off of the paddles. I can get the ball to bouncce off of the walls, that's no problem; however, gettting the paddles to stay within bounds is another thing i can't figure out ... i know this is pretty much a repost of my first post, but .. uhhh... i've clarified as much as i can, sorry  
 
 
ps its making me kinda mad   | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Cervantes
 
  
 
    
		 | 
		
		
			
				  Posted: Sat May 06, 2006 7:24 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				
 
- 
 
  	  | code: | 	 		  
 
if paddle.y < 0 then
 
    paddle.y := 0
 
elsif paddle.y > maxy - paddle.height then
 
    paddle.y := maxy - paddle.height
 
end if
 
  | 	  
 
Or more simply,
 
	  | code: | 	 		  
 
paddle.y := min (max (paddle.y, 0), maxy - paddle.height)
 
  | 	  
 
 
In pseudocode (note that this code will not run, and the same is true for the pseudocode SuperFreak82 gave you that had "bounce backwards" in it)
 
	  | code: | 	 		  
 
If there is a collision between the ball and either paddle then
 
    reverse ball's horizontal velocity
 
end
 
  | 	  
 
In Turing,
 
	  | code: | 	 		  
 
if ball.x - ball.radius < paddle.x + paddle.width and ball.x + ball.radius > paddle.x and ball.y - ball.radius < paddle.y + paddle.height and ball.y + ball.radius > paddle.y then
 
    ball.vx *= -1  % Multiply the ball's horizontal velocity by -1 and reassign that value to itself
 
end if
 
  | 	  
 
 | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		wtd
 
 
 
    
		 | 
		
		
			
				  Posted: Sat May 06, 2006 7:48 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				Cervantes wrote: 	  | code: | 	 		  
 
if ball.x - ball.radius < paddle.x + paddle.width and ball.x + ball.radius > paddle.x and ball.y - ball.radius < paddle.y + paddle.height and ball.y + ball.radius > paddle.y then
 
    ball.vx *= -1  % Multiply the ball's horizontal velocity by -1 and reassign that value to itself
 
end if
 
  | 	 
  
 
 
That condition so very much needs to be factored out into a function. | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		 | 
	 
 
	
	
	 
	
	 |