Hi,
I should modify a version of a ball dodge game to create an object oriented version of the game (make balls into objects). Don't really have an idea how I should start and what to modify. Thanks for your help in advance
Code:
public class Dodge {
public static void main(String[] args) {
int MAXTHREATS = 50;
int nthreats = 1;
boolean gameOver = false;
// set the scale of the coordinate system
StdDraw.setXscale(-1.0, 1.0);
StdDraw.setYscale(-1.0, 1.0);
// initial values for the target
double target_r = 0.04;
double target_x = 0.04 + (0.92 * Math.random());
double target_y = 0.04 + (0.92 * Math.random());
// initial values for the player
double player_r = 0.04;
double player_x = 0.04 + (0.92 * Math.random());
double player_y = 0.04 + (0.92 * Math.random());
// initial values for the red balls;
double threat_r = 0.02;
double[][] threat = new double[MAXTHREATS][4];
threat[0][0] = 0.02 + (0.96 * Math.random()); // x coordinate
threat[0][1] = 0.02 + (0.96 * Math.random()); // y coordinate
threat[0][2] = 0.01; // horizontal velocity
threat[0][3] = 0.02; // vertical velocity
while (!gameOver) {
// draw the objects
// clear the background
StdDraw.setPenColor(StdDraw.GRAY);
StdDraw.filledSquare(0, 0, 1.0);
// draw target on the screen
StdDraw.setPenColor(StdDraw.GREEN);
StdDraw.filledCircle(target_x, target_y, target_r);
// draw player on the screen
StdDraw.setPenColor(StdDraw.BLUE);
StdDraw.filledCircle(player_x, player_y, player_r);
// move and draw threats on the screen
StdDraw.setPenColor(StdDraw.RED);
for (int i=0; i<nthreats; i++) {
if (Math.abs(threat[i][0] + threat[i][2]) > 1.0 - threat_r) threat[i][2] = -threat[i][2];
if (Math.abs(threat[i][1] + threat[i][3]) > 1.0 - threat_r) threat[i][3] = -threat[i][3];
// update positions
threat[i][0] += threat[i][2];
threat[i][1] += threat[i][3];
// draw threats
StdDraw.filledCircle(threat[i][0], threat[i][1], threat_r);
}
if (Math.sqrt((target_x - player_x)*(target_x - player_x) + (target_y - player_y)*(target_y - player_y)) <= target_r + player_r) {
target_x = 0.04 + (0.92 * Math.random());
target_y = 0.04 + (0.92 * Math.random());
threat[nthreats][0] = 0.02 + (0.96 * Math.random());
threat[nthreats][1] = 0.04 + (0.92 * Math.random());
threat[nthreats][2] = 0.01;
threat[nthreats][3] = 0.02;
nthreats++;
}
double mouse_x = StdDraw.mouseX();
double mouse_y = StdDraw.mouseY();
if (mouse_x >= -1 + target_r && mouse_x <= 1 - target_r && mouse_y >= -1 + target_r && mouse_y <= 1 - target_r) {
player_x = mouse_x;
player_y = mouse_y;
}
// display and pause for 20 ms
StdDraw.show(20);
for (int i=0; i<nthreats; i++) {
double distance_x = player_x - threat[i][0];
double distance_y = player_y - threat[i][1];
if (Math.sqrt((distance_x * distance_x) + (distance_y * distance_y)) <= player_r + threat_r)
gameOver = true;
}
}
}
}