FAQ
Cover
This is the archive Discourse for the Processing (ALPHA) software.
Please visit the new Processing forum for current information.

   Processing 1.0 _ALPHA_
   Bugs
   Software Bugs
(Moderator: fry)
   couple small bugs in "collision.pde" demo
« Previous topic | Next topic »

Pages: 1 
   Author  Topic: couple small bugs in "collision.pde" demo  (Read 996 times)
kevinP

Email
couple small bugs in "collision.pde" demo
« on: Jan 13th, 2004, 9:49pm »

While playing with one of the demo scripts (collision.pde, the "pong" one) I found a couple small bugs (in the script, not processing). Perhaps they've long been fixed as I haven't read much here yet, but in case not...
 
No guarantees on my solutions.
 
-K
 
 
 
// Collision (Pong)
// by REAS <http://www.groupc.net>
 
// Move the mouse up and down to move the paddle.  
 
// Updated 21 August 2002
// Modified 13 Jan 2004 - K Pfeiffer
//   Fixed bug that the first serve was not detected by the paddle due to ball_x incrementing by 2
//   Fixed bug that paddle was constrained to edge of frame, but detection area moved half outside
 
 
// Global variables for the ball
float ball_x;
float ball_y;
float ball_dir = 1;
float ball_size = 5;  // radius
float dy = 0;    // direction
 
// Global variables for the paddle
int paddle_width = 5;
int paddle_height = 20;
 
int dist_wall = 15;
 
void setup()
{
  size(200, 200);
  rectMode(CENTER_RADIUS);
  ellipseMode(CENTER_RADIUS);
  noStroke();
  ball_y = height/2;
  ball_x = 1;    // Was 0, but would miss 1st serve - see comment below
  framerate(30);
}
 
void loop()  
{
  background(51);
   
  ball_x += ball_dir * 2;
  ball_y += dy;
  if(ball_x > width+ball_size) {
    ball_x = -width/2-ball_size;
    ball_y = random(0, height);
    dy = 0;
  }
   
  // Constrain paddle to screen
  float paddle_y = constrain(mouseY, paddle_height, height-paddle_height);  
   
  // Test to see if the ball is touching the paddle
  float py = width - dist_wall - paddle_width - ball_size;
     
  if(ball_x == py    // Careful, as ball_x increments by 2!
 //    && ball_y > mouseY - paddle_height - ball_size  
 //    && ball_y < mouseY + paddle_height + ball_size) {
     && ball_y > paddle_y - paddle_height - ball_size  
     && ball_y < paddle_y + paddle_height + ball_size) {
    ball_dir *= -1;
    if(mouseY != pmouseY) {
 dy = (mouseY-pmouseY)/2.0;
 if(dy >  5) { dy =  5; }
 if(dy < -5) { dy = -5; }
    }
  }  
   
  // If ball hits paddle or back wall, reverse direction
  if(ball_x < ball_size && ball_dir == -1) {
    ball_dir *= -1;
  }
   
  // If the ball is touching top or bottom edge, reverse direction
  if(ball_y > height - ball_size) {
    dy = dy * -1;
  }
  if(ball_y < ball_size) {
    dy = dy * -1;
  }
 
  // Draw ball
  fill(255);
  ellipse(ball_x, ball_y, ball_size, ball_size);
   
  // Draw the paddles and constrain to the screen
  // float paddle_y = constrain(mouseY, paddle_height, height-paddle_height);
  // This was moved up so that paddle detection also uses same constraint on paddle position!
  fill(153);
  rect(width-dist_wall, paddle_y, paddle_width, paddle_height);  
   
}
« Last Edit: Jan 13th, 2004, 9:50pm by kevinP »  

Kevin Pfeiffer
REAS

WWW
Re: couple small bugs in "collision.pde" demo
« Reply #1 on: Jan 14th, 2004, 3:16am »

thank you for taking the time to do this. i've noticed problems with this example and haven't made fixing them a priority. you've made fixing it very easy. i've corrected it now and it will be posted with the next release of the software.  
 
+ casey
 
 
Pages: 1 

« Previous topic | Next topic »