Advertisement
BlueBear

pong.java

May 27th, 2013
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.22 KB | None | 0 0
  1. package pong;
  2. import org.lwjgl.LWJGLException;
  3. import org.lwjgl.Sys;
  4. import org.lwjgl.input.Keyboard;
  5. import org.lwjgl.opengl.Display;
  6. import org.lwjgl.opengl.DisplayMode;
  7. import org.lwjgl.opengl.GL11;
  8. public class pong {
  9.     boolean DEBUG = true;
  10.     // Player 1
  11.     float x = 50;
  12.     float y = 300;
  13.     // Player2
  14.     float x1 = 750;
  15.     float y1 = 300;
  16.     // Ballz
  17.     float ballX = 400;
  18.     float ballY = 300;
  19.     float directionX = -3;
  20.     float directionY = 0;
  21.     float speed = 2.0f;
  22.  
  23.     float rotation = 0;
  24.     long lastFrame;
  25.     int fps;
  26.     long lastFPS;
  27.  
  28.     public void start() {
  29.  
  30.         try {
  31.             Display.setDisplayMode(new DisplayMode(800, 600));
  32.             Display.create();
  33.         } catch (LWJGLException e) {
  34.             e.printStackTrace();
  35.             System.exit(0);
  36.         }
  37.  
  38.         initGL(); // init OpenGL
  39.         getDelta();
  40.         lastFPS = getTime();
  41.  
  42.         // Update code
  43.         while (!Display.isCloseRequested()) {
  44.             int delta = getDelta();
  45.             ballMovement(delta);
  46.             updatePlayer(delta);
  47.  
  48.             renderWalls();
  49.             renderGL();
  50.             renderBall();
  51.             Display.update();
  52.             Display.sync(60); // cap fps to 60fps
  53.         }
  54.  
  55.         Display.destroy();
  56.     }
  57.  
  58.     public void ballMovement(int delta) {
  59.  
  60.         if (DEBUG == true)
  61.             if (ballY >= 580)
  62.                 directionY = directionY - 2 * directionY;
  63.  
  64.         if (ballY <= 20)
  65.             directionY = directionY - 2 * directionY;
  66.  
  67.         if (ballX >= 800) {
  68.             ballX = 200;
  69.             ballY = 300;
  70.             speed = 2.0f;
  71.             directionX = 2;
  72.             directionY = 0;
  73.         }
  74.         if (ballX <= 0) {
  75.             ballX = 600;
  76.             ballY = 300;
  77.             speed = 2.0f;
  78.             directionX = -2;
  79.             directionY = 0;
  80.         }
  81.  
  82.         /* ************************************************************ */
  83.         /* ************************Platform 1**************************** */
  84.         /* ************************************************************ */
  85.         if (ballX > 10 && ballX < 65 && ballY < y + 50 && ballY > y - 50
  86.                 && directionX < 0) {
  87.             if (directionY > 0) {
  88.                 if (Keyboard.isKeyDown(Keyboard.KEY_Q)) {
  89.                     ballX = ballX + directionX;
  90.                     directionY = directionY + 1;
  91.                     directionX = directionX - (2 * directionX) - 1;
  92.                     if (directionX == 0)
  93.                         directionX++;
  94.                 }
  95.                 if (Keyboard.isKeyDown(Keyboard.KEY_A)) {
  96.                     ballX = ballX + directionX;
  97.                     directionY = directionY - 1;
  98.                     directionX = directionX - (2 * directionX) + 1;
  99.                     if (directionX == 0)
  100.                         directionX++;
  101.                 }
  102.                 if (!Keyboard.isKeyDown(Keyboard.KEY_Q)
  103.                         && !Keyboard.isKeyDown(Keyboard.KEY_A)) {
  104.                     ballX = ballX + directionX;
  105.                     directionX = directionX - (2 * directionX);
  106.                 }
  107.             }
  108.             if (directionY < 0) {
  109.                 if (Keyboard.isKeyDown(Keyboard.KEY_Q)) {
  110.                     ballX = ballX + directionX;
  111.                     directionY = directionY + 1;
  112.                     directionX = directionX - (2 * directionX) + 1;
  113.                     if (directionX == 0)
  114.                         directionX++;
  115.                 }
  116.                 if (Keyboard.isKeyDown(Keyboard.KEY_A)) {
  117.                     ballX = ballX + directionX;
  118.                     directionY = directionY - 1;
  119.                     directionX = directionX - (2 * directionX) - 1;
  120.                     if (directionX == 0)
  121.                         directionX++;
  122.                 }
  123.                 if (!Keyboard.isKeyDown(Keyboard.KEY_Q)
  124.                         && !Keyboard.isKeyDown(Keyboard.KEY_A)) {
  125.                     ballX = ballX + directionX;
  126.                     directionX = directionX - (2 * directionX);
  127.                 }
  128.             }
  129.             if (directionY == 0) {
  130.                 if (Keyboard.isKeyDown(Keyboard.KEY_Q)) {
  131.                     ballX = ballX + directionX;
  132.                     directionY = directionY + 1;
  133.                     directionX = directionX - (2 * directionX) - 1;
  134.                     if (directionX == 0)
  135.                         directionX++;
  136.                 }
  137.                 if (Keyboard.isKeyDown(Keyboard.KEY_A)) {
  138.                     ballX = ballX + directionX;
  139.                     directionY = directionY - 1;
  140.                     directionX = directionX - (2 * directionX) - 1;
  141.                     if (directionX == 0)
  142.                         directionX++;
  143.                 }
  144.                 if (!Keyboard.isKeyDown(Keyboard.KEY_Q)
  145.                         && !Keyboard.isKeyDown(Keyboard.KEY_A)) {
  146.                     ballX = ballX + directionX;
  147.                     directionX = directionX - (2 * directionX);
  148.                 }
  149.             }
  150.         }
  151.  
  152.         /* ************************************************************ */
  153.         /* ************************Platform 2**************************** */
  154.         /* ************************************************************ */
  155.  
  156.         if (ballX > 735 && ballX < 790 && ballY < y1 + 50 && ballY > y1 - 50
  157.                 && directionX > 0) {
  158.             if (directionY > 0) {
  159.                 if (Keyboard.isKeyDown(Keyboard.KEY_UP)) {
  160.                     ballX = ballX - 2 * directionX;
  161.                     directionY = directionY + 1;
  162.                     directionX = directionX - 2 * directionX + 1;
  163.                     if (directionX == 0)
  164.                         directionX--;
  165.                 }
  166.                 if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
  167.                     ballX = ballX - 2 * directionX;
  168.                     directionY = directionY - 1;
  169.                     directionX = directionX - 2 * directionX - 1;
  170.                     if (directionX == 0)
  171.                         directionX--;
  172.                 }
  173.                 if (!Keyboard.isKeyDown(Keyboard.KEY_UP)
  174.                         && !Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
  175.                     ballX = ballX - 2 * directionX;
  176.                     directionX = directionX - 2 * directionX;
  177.                 }
  178.             }
  179.             if (directionY < 0) {
  180.                 if (Keyboard.isKeyDown(Keyboard.KEY_UP)) {
  181.                     ballX = ballX - 2 * directionX;
  182.                     directionY = directionY + 1;
  183.                     directionX = directionX - 2 * directionX - 1;
  184.                     if (directionX == 0)
  185.                         directionX--;
  186.                 }
  187.                 if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
  188.                     ballX = ballX - 2 * directionX;
  189.                     directionY = directionY - 1;
  190.                     directionX = directionX - 2 * directionX + 1;
  191.                     if (directionX == 0)
  192.                         directionX--;
  193.                 }
  194.                 if (!Keyboard.isKeyDown(Keyboard.KEY_UP)
  195.                         && !Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
  196.                     ballX = ballX - 2 * directionX;
  197.                     directionX = directionX - 2 * directionX;
  198.                 }
  199.             }
  200.             if (directionY == 0) {
  201.                 if (Keyboard.isKeyDown(Keyboard.KEY_UP)) {
  202.                     ballX = ballX - 2 * directionX;
  203.                     directionY = directionY + 1;
  204.                     directionX = directionX - 2 * directionX + 1;
  205.                     if (directionX == 0)
  206.                         directionX--;
  207.                 }
  208.                 if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
  209.                     ballX = ballX - 2 * directionX;
  210.                     directionY = directionY - 1;
  211.                     directionX = directionX - 2 * directionX + 1;
  212.                     if (directionX == 0)
  213.                         directionX--;
  214.                 }
  215.                 if (!Keyboard.isKeyDown(Keyboard.KEY_UP)
  216.                         && !Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
  217.                     ballX = ballX - 2 * directionX;
  218.                     directionX = directionX - 2 * directionX;
  219.                 }
  220.             }
  221.         }
  222.         if (directionX < -3)
  223.             directionX = -3;
  224.         if (directionX > 3)
  225.             directionX = 3;
  226.  
  227.         if (directionY < -3)
  228.             directionY = -3;
  229.         if (directionY > 3)
  230.             directionY = 3;
  231.  
  232.         speed += 0.001;
  233.  
  234.         ballX = ballX + directionX * speed;
  235.         ballY = ballY + directionY * speed;
  236.  
  237.         if (DEBUG == false) {
  238.  
  239.         }
  240.  
  241.     }
  242.  
  243.     public void renderWalls() {
  244.  
  245.         GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
  246.  
  247.         GL11.glColor3f(0.0f, 1.0f, 0.0f);
  248.  
  249.         GL11.glPushMatrix();
  250.         /*
  251.          * GL11.glTranslatef(x, y, 0); GL11.glRotatef(rotation, 0f, 0f, 1f);
  252.          * GL11.glTranslatef(-x, -y, 0);
  253.          */
  254.  
  255.         GL11.glBegin(GL11.GL_QUADS);
  256.         GL11.glVertex2f(800, 600);
  257.         GL11.glVertex2f(0, 600);
  258.         GL11.glVertex2f(0, 590);
  259.         GL11.glVertex2f(800, 590);
  260.         GL11.glEnd();
  261.  
  262.         GL11.glBegin(GL11.GL_QUADS);
  263.         GL11.glVertex2f(0, 0);
  264.         GL11.glVertex2f(0, 10);
  265.         GL11.glVertex2f(800, 10);
  266.         GL11.glVertex2f(800, 0);
  267.         GL11.glEnd();
  268.  
  269.         GL11.glBegin(GL11.GL_QUADS);
  270.         GL11.glVertex2f(0, 0);
  271.         GL11.glVertex2f(0, 20);
  272.         GL11.glVertex2f(800, 40);
  273.         GL11.glVertex2f(800, 20);
  274.         GL11.glPopMatrix();
  275.  
  276.     }
  277.  
  278.     public void updatePlayer(int delta) {
  279.         /* ************************************************************ */
  280.         /* ************************Player 1**************************** */
  281.         /* ************************************************************ */
  282.         if (Keyboard.isKeyDown(Keyboard.KEY_Q))
  283.             y += 0.35f * delta;
  284.         if (Keyboard.isKeyDown(Keyboard.KEY_A))
  285.             y -= 0.35f * delta;
  286.  
  287.         /* ************************************************************ */
  288.         /* ************************Player 2**************************** */
  289.         /* ************************************************************ */
  290.  
  291.         if (Keyboard.isKeyDown(Keyboard.KEY_UP))
  292.             y1 += 0.35f * delta;
  293.         if (Keyboard.isKeyDown(Keyboard.KEY_DOWN))
  294.             y1 -= 0.35f * delta;
  295.  
  296.         // keep paddle on the screen
  297.         if (y < 60)
  298.             y = 60;
  299.         if (y > 540)
  300.             y = 540;
  301.  
  302.         if (y1 < 60)
  303.             y1 = 60;
  304.         if (y1 > 540)
  305.             y1 = 540;
  306.  
  307.         updateFPS();
  308.     }
  309.  
  310.     public int getDelta() {
  311.         long time = getTime();
  312.         int delta = (int) (time - lastFrame);
  313.         lastFrame = time;
  314.  
  315.         return delta;
  316.     }
  317.  
  318.     public long getTime() {
  319.         return (Sys.getTime() * 1000) / Sys.getTimerResolution();
  320.     }
  321.  
  322.     public void updateFPS() {
  323.         if (getTime() - lastFPS > 1000) {
  324.             Display.setTitle("FPS: " + fps);
  325.             fps = 0;
  326.             lastFPS += 1000;
  327.         }
  328.         fps++;
  329.     }
  330.  
  331.     public void initGL() {
  332.         GL11.glMatrixMode(GL11.GL_PROJECTION);
  333.         GL11.glLoadIdentity();
  334.         GL11.glOrtho(0, 800, 0, 600, 1, -1);
  335.         GL11.glMatrixMode(GL11.GL_MODELVIEW);
  336.     }
  337.  
  338.     public void renderBall() {
  339.         GL11.glEnd();
  340.         GL11.glBegin(GL11.GL_POLYGON);
  341.         GL11.glColor3f(1f, 1.5f, 1f);
  342.         for (double angle = 0; angle <= Math.PI * 2; angle = angle + 0.01) { // Circumference
  343.                                              // of
  344.                                              // circle
  345.                                              // =
  346.                                              // 2PI
  347.                                              // *
  348.                                              // r
  349.             GL11.glVertex2d(ballX + Math.sin(angle) * 5,
  350.                     ballY + Math.cos(angle) * 5);
  351.         }
  352.         GL11.glEnd();
  353.  
  354.     }
  355.  
  356.     public void renderGL() {
  357.  
  358.         GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
  359.  
  360.         GL11.glPushMatrix();
  361.         GL11.glTranslatef(x, y, 0);
  362.         GL11.glRotatef(rotation, 0f, 0f, 1f);
  363.         GL11.glTranslatef(-x, -y, 0);
  364.  
  365.         GL11.glBegin(GL11.GL_QUADS);
  366.  
  367.         /* ************************************************************ */
  368.         /* ************************Player 1**************************** */
  369.         /* ************************************************************ */
  370.         GL11.glColor3f(0.0f, 0.0f, 1.0f);
  371.         GL11.glVertex2f(x - 10, y - 50);
  372.         GL11.glVertex2f(x + 10, y - 50);
  373.         GL11.glVertex2f(x + 10, y + 50);
  374.         GL11.glVertex2f(x - 10, y + 50);
  375.  
  376.         /* ************************************************************ */
  377.         /* ************************Player 2**************************** */
  378.         /* ************************************************************ */
  379.         GL11.glColor3f(1.0f, 0.0f, 0.0f);
  380.         GL11.glVertex2f(x1 - 10, y1 - 50);
  381.         GL11.glVertex2f(x1 + 10, y1 - 50);
  382.         GL11.glVertex2f(x1 + 10, y1 + 50);
  383.         GL11.glVertex2f(x1 - 10, y1 + 50);
  384.  
  385.         GL11.glEnd();
  386.         GL11.glPopMatrix();
  387.     }
  388.  
  389.     public static void main(String[] argv) {
  390.         pong app = new pong();
  391.         app.start();
  392.     }
  393. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement