Go4Expert

Go4Expert (http://www.go4expert.com/)
-   Java (http://www.go4expert.com/forums/java/)
-   -   Object oriented version of a game (http://www.go4expert.com/forums/object-oriented-version-game-t27259/)

blavatsky 1Dec2011 02:04

Object oriented version of a game
 
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;
          }
        }
    }
}



All times are GMT +5.5. The time now is 16:49.