Ball.java
Below is the syntax highlighted version of Ball.java
from §3.2 Creating Data Types.
/*************************************************************************
* Compilation: javac Ball.java
* Execution: java Ball
* Dependencies: StdDraw.java
*
* Implementation of a 2-d Ball moving in the unit square.
* Bounces off the walls upon collision.
*
*
*************************************************************************/
public class Ball {
// instance variables
private double rx, ry; // position
private double vx, vy; // velocity
private double radius; // radius
// constructor
public Ball() {
rx = 0.5;
ry = 0.5;
vx = 0.015 - Math.random() * 0.03;
vy = 0.015 - Math.random() * 0.03;
radius = 0.01 + Math.random() * 0.02;
}
// move the ball one step
public void move() {
if ((rx + vx < radius) || (rx + vx > 1.0 - radius)) vx = -vx;
if ((ry + vy < radius) || (ry + vy > 1.0 - radius)) vy = -vy;
rx = rx + vx;
ry = ry + vy;
}
// draw the ball
public void draw() {
StdDraw.go(rx, ry);
StdDraw.spot(2*radius);
}
// test client
public static void main(String[] args) {
// create and initialize two balls
Ball b1 = new Ball();
Ball b2 = new Ball();
System.out.println("Memory address of b1 = " + b1);
System.out.println("Memory address of b2 = " + b2);
// animate them
StdDraw.create(500, 500);
StdDraw.setScale(0, 0, 1, 1);
while (true) {
StdDraw.clear();
b1.move();
b2.move();
b1.draw();
b2.draw();
StdDraw.pause(50);
StdDraw.show();
}
}
}
Last updated: Thu Oct 21 07:44:42 EDT 2004
.
Copyright © 2004, Robert Sedgewick and Kevin Wayne.