topical media & game development

talk show tell print

graphic-processing-learning-10-example-10-3-Ball.pde / pde



  // Learning Processing
  // Daniel Shiffman
  // http://www.learningprocessing.com
  
  // Example 10-3: Bouncing ball with intersection
  
  class Ball {
    
    float r; // radius
    float x,y;
    float xspeed,yspeed;
    color c = color(100,50);
    
    // Constructor
    Ball(float tempR) {
      r = tempR;
      x = random(width);
      y = random(height);
      xspeed = random( -5,5);
      yspeed = random( -5,5);
    }
    
    void move() {
      x += xspeed; // Increment x
      y += yspeed; // Increment y
      
      // Check horizontal edges
      if (x > width || x < 0) {
        xspeed *= - 1;
      }
      
      // Check vertical edges
      if (y > height || y < 0) {
        yspeed *= - 1;
      }
    }
    
    // Whenever the balls are touching, this highlight() function is called 
    // and the color is darkened.
    void highlight() { 
      c = color(0,150);
    }
    
    // Draw the ball
    void display() {
      stroke(0);
      fill(c);
      ellipse(x,y,r*2,r*2);
       // After the ball is displayed, the color is reset back to a darker gray.
      c = color(100,50);
    }
    
    // A function that returns true or false based on whether two circles intersect
    // If distance is less than the sum of radii the circles touch
    boolean intersect(Ball b) {
      
      // Objects can be passed into functions as arguments too! 
      float distance = dist(x,y,b.x,b.y); // Calculate distance
      
      // Compare distance to sum of radii
      if (distance < r + b.r) {
        return true;
      } else {
        return false;
      }
    }
  }
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.