zopiac

Pong w/ AI

Nov 16th, 2010
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.60 KB | None | 0 0
  1. package games;
  2. import acm.program.*;
  3. import acm.graphics.*;
  4. import java.awt.*;
  5. import java.awt.event.*;
  6. public class Pong extends GraphicsProgram {
  7.     private GRect paddle;
  8.     private GRect paddle2;
  9.     public void run() {
  10.         this.setSize(500,500);
  11.         int point = 0;
  12.         int diff = 0;
  13.         int reset = 0;
  14.         int a=0;
  15.         int b=0;
  16.         int c=0;
  17.         int d=0;
  18.         int e=100;
  19.         int e2 = 100;
  20.         int f=25;
  21.         int g=5;
  22.         int hit=0;
  23.         double dx = 3;
  24.         double dy = -4;
  25.         paddle2 = new GRect((500 - 20), 10, 10, e2);
  26.         paddle2.setFilled(true);
  27.         add(paddle2);
  28.         paddle = new GRect(10, 10, 10, e);
  29.         paddle.setFilled(true);
  30.         add(paddle);
  31.         addMouseListeners();
  32.         GOval ball = new GOval(250, 250, f, f);
  33.         ball.setFilled(true);
  34.         ball.setFillColor(new Color(0, 0, 225));
  35.         add(ball);
  36.         System.out.println("Easy");
  37.         System.out.println("AI Difficulty?");
  38.         diff = readInt();
  39.         System.out.println("AI Speed is " + diff);
  40.         while (g>0&&hit<20) {
  41.             reset=0;
  42.             d=0;
  43.             while ((hit < 100)&&(reset == 0))  {
  44.                 pause(25);             
  45.                 double ballLeft = ball.getX();
  46.                 double ballRight = ball.getX() + ball.getWidth();
  47.                 double ballYMid = ball.getY() + ball.getHeight() / 2;
  48.                 double paddleRight = paddle.getX() + paddle.getWidth();
  49.                 double paddleTop = paddle.getY();
  50.                 double paddleBot = paddle.getY() + paddle.getHeight();
  51.                 double paddle2Left = paddle2.getX();// - paddle.getWidth();
  52.                 double paddle2Top = paddle2.getY();
  53.                 double paddle2Mid = paddle2.getY() + (paddle2.getHeight() / 2);
  54.                 double paddle2Bot = paddle2.getY() + paddle2.getHeight();
  55.                 if (ballYMid > (paddle2Mid + (diff/2))) {
  56.                     paddle2.setLocation(paddle2Left, (paddle2Top + diff));
  57.                 }
  58.                 if (ballYMid < (paddle2Mid - (diff/2))) {
  59.                     paddle2.setLocation(paddle2Left, (paddle2Top - diff));
  60.                 }
  61.                 if ((ballLeft <= paddleRight && ballLeft > paddleRight + dx
  62.                         && ballYMid >= paddleTop && ballYMid < paddleBot)) {
  63.                     dx = -dx;
  64.                     hit++;
  65.                     dx++;
  66.                     System.out.println(hit + " hits");
  67.                     if (dy > 0) {
  68.                         dy++;
  69.                     }
  70.                 }
  71.                 if ((ballRight >= paddle2Left) && (ballYMid >=paddle2Top)
  72.                         && (ballYMid <= paddle2Bot)) {
  73.                     dx = -dx;
  74.                 }
  75.                 if (ball.getY() + ball.getHeight() >= getHeight()
  76.                         || ball.getY() <= 0.0) {
  77.                     dy = -dy;
  78.                 }
  79.                 if (ballRight >= getWidth()) {
  80.                     ++point;
  81.                     System.out.println("You get a point!");
  82.                     System.out.println("P=" + point);
  83.                     ball.setLocation(250, 250);
  84.                     dx = -dx;
  85.                     pause(1000);
  86.                 }
  87.                 if (hit == 5 && a == 0) {
  88.                     ball.setFillColor(new Color(0, 255, 0));
  89.                     System.out.println("Medium");
  90.                     a++;
  91.                 }
  92.                 if (hit == 10 && b == 0) {
  93.                     ball.setFillColor(new Color(255, 0, 0));
  94.                     System.out.println("Hard");
  95.                     b++;
  96.                 }
  97.                 if (hit == 15 && c == 0) {
  98.                     ball.setFillColor(new Color(255, 255, 255));
  99.                     System.out.println("INSANE!!!");
  100.                     c++;
  101.                 }
  102.                 if (ball.getX() + ball.getWidth() <= 0 && d == 0) {
  103.                     System.out.println("FAILURE");
  104.                     reset=1;
  105.                     d++;
  106.                     g--;
  107.                     dx=-dx;
  108.                     ball.setLocation(250, 250);
  109.                 }
  110.                 ball.move(dx, dy);
  111.             }
  112.             if (hit==20) {
  113.                 System.out.println("BUTKA HATE YOU!!!");
  114.             }
  115.             if(g==0){
  116.                 System.out.println("BUTKA SAYS YOU LOSE!!!");
  117.             }
  118.             ball.setFillColor(new Color(0, 0, 0));
  119.             pause(1000);
  120.             reset=0;
  121.             ball.setFillColor(new Color(0, 0, 225));
  122.         }
  123.     }
  124.    
  125.     public void mouseMoved(MouseEvent event) {
  126.         double paddleY = event.getY() - paddle.getHeight() / 2;
  127.         double paddleMax = getHeight() - paddle.getHeight();
  128.         if(paddleY < 0) paddleY = 0;
  129.         if(paddleY > paddleMax) paddleY = paddleMax;
  130.         paddle.setLocation(10, paddleY);
  131.     }
  132. }
Add Comment
Please, Sign In to add comment