package pong;
import org.lwjgl.LWJGLException;
import org.lwjgl.Sys;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
public class pong {
boolean DEBUG = true;
// Player 1
float x = 50;
float y = 300;
// Player2
float x1 = 750;
float y1 = 300;
// Ballz
float ballX = 400;
float ballY = 300;
float directionX = -3;
float directionY = 0;
float speed = 2.0f;
float rotation = 0;
long lastFrame;
int fps;
long lastFPS;
public void start() {
try {
Display.setDisplayMode(new DisplayMode(800, 600));
Display.create();
} catch (LWJGLException e) {
e.printStackTrace();
System.exit(0);
}
initGL(); // init OpenGL
getDelta();
lastFPS = getTime();
// Update code
while (!Display.isCloseRequested()) {
int delta = getDelta();
ballMovement(delta);
updatePlayer(delta);
renderWalls();
renderGL();
renderBall();
Display.update();
Display.sync(60); // cap fps to 60fps
}
Display.destroy();
}
public void ballMovement(int delta) {
if (DEBUG == true)
if (ballY >= 580)
directionY = directionY - 2 * directionY;
if (ballY <= 20)
directionY = directionY - 2 * directionY;
if (ballX >= 800) {
ballX = 200;
ballY = 300;
speed = 2.0f;
directionX = 2;
directionY = 0;
}
if (ballX <= 0) {
ballX = 600;
ballY = 300;
speed = 2.0f;
directionX = -2;
directionY = 0;
}
/* ************************************************************ */
/* ************************Platform 1**************************** */
/* ************************************************************ */
if (ballX > 10 && ballX < 65 && ballY < y + 50 && ballY > y - 50
&& directionX < 0) {
if (directionY > 0) {
if (Keyboard.isKeyDown(Keyboard.KEY_Q)) {
ballX = ballX + directionX;
directionY = directionY + 1;
directionX = directionX - (2 * directionX) - 1;
if (directionX == 0)
directionX++;
}
if (Keyboard.isKeyDown(Keyboard.KEY_A)) {
ballX = ballX + directionX;
directionY = directionY - 1;
directionX = directionX - (2 * directionX) + 1;
if (directionX == 0)
directionX++;
}
if (!Keyboard.isKeyDown(Keyboard.KEY_Q)
&& !Keyboard.isKeyDown(Keyboard.KEY_A)) {
ballX = ballX + directionX;
directionX = directionX - (2 * directionX);
}
}
if (directionY < 0) {
if (Keyboard.isKeyDown(Keyboard.KEY_Q)) {
ballX = ballX + directionX;
directionY = directionY + 1;
directionX = directionX - (2 * directionX) + 1;
if (directionX == 0)
directionX++;
}
if (Keyboard.isKeyDown(Keyboard.KEY_A)) {
ballX = ballX + directionX;
directionY = directionY - 1;
directionX = directionX - (2 * directionX) - 1;
if (directionX == 0)
directionX++;
}
if (!Keyboard.isKeyDown(Keyboard.KEY_Q)
&& !Keyboard.isKeyDown(Keyboard.KEY_A)) {
ballX = ballX + directionX;
directionX = directionX - (2 * directionX);
}
}
if (directionY == 0) {
if (Keyboard.isKeyDown(Keyboard.KEY_Q)) {
ballX = ballX + directionX;
directionY = directionY + 1;
directionX = directionX - (2 * directionX) - 1;
if (directionX == 0)
directionX++;
}
if (Keyboard.isKeyDown(Keyboard.KEY_A)) {
ballX = ballX + directionX;
directionY = directionY - 1;
directionX = directionX - (2 * directionX) - 1;
if (directionX == 0)
directionX++;
}
if (!Keyboard.isKeyDown(Keyboard.KEY_Q)
&& !Keyboard.isKeyDown(Keyboard.KEY_A)) {
ballX = ballX + directionX;
directionX = directionX - (2 * directionX);
}
}
}
/* ************************************************************ */
/* ************************Platform 2**************************** */
/* ************************************************************ */
if (ballX > 735 && ballX < 790 && ballY < y1 + 50 && ballY > y1 - 50
&& directionX > 0) {
if (directionY > 0) {
if (Keyboard.isKeyDown(Keyboard.KEY_UP)) {
ballX = ballX - 2 * directionX;
directionY = directionY + 1;
directionX = directionX - 2 * directionX + 1;
if (directionX == 0)
directionX--;
}
if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
ballX = ballX - 2 * directionX;
directionY = directionY - 1;
directionX = directionX - 2 * directionX - 1;
if (directionX == 0)
directionX--;
}
if (!Keyboard.isKeyDown(Keyboard.KEY_UP)
&& !Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
ballX = ballX - 2 * directionX;
directionX = directionX - 2 * directionX;
}
}
if (directionY < 0) {
if (Keyboard.isKeyDown(Keyboard.KEY_UP)) {
ballX = ballX - 2 * directionX;
directionY = directionY + 1;
directionX = directionX - 2 * directionX - 1;
if (directionX == 0)
directionX--;
}
if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
ballX = ballX - 2 * directionX;
directionY = directionY - 1;
directionX = directionX - 2 * directionX + 1;
if (directionX == 0)
directionX--;
}
if (!Keyboard.isKeyDown(Keyboard.KEY_UP)
&& !Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
ballX = ballX - 2 * directionX;
directionX = directionX - 2 * directionX;
}
}
if (directionY == 0) {
if (Keyboard.isKeyDown(Keyboard.KEY_UP)) {
ballX = ballX - 2 * directionX;
directionY = directionY + 1;
directionX = directionX - 2 * directionX + 1;
if (directionX == 0)
directionX--;
}
if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
ballX = ballX - 2 * directionX;
directionY = directionY - 1;
directionX = directionX - 2 * directionX + 1;
if (directionX == 0)
directionX--;
}
if (!Keyboard.isKeyDown(Keyboard.KEY_UP)
&& !Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
ballX = ballX - 2 * directionX;
directionX = directionX - 2 * directionX;
}
}
}
if (directionX < -3)
directionX = -3;
if (directionX > 3)
directionX = 3;
if (directionY < -3)
directionY = -3;
if (directionY > 3)
directionY = 3;
speed += 0.001;
ballX = ballX + directionX * speed;
ballY = ballY + directionY * speed;
if (DEBUG == false) {
}
}
public void renderWalls() {
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
GL11.glColor3f(0.0f, 1.0f, 0.0f);
GL11.glPushMatrix();
/*
* GL11.glTranslatef(x, y, 0); GL11.glRotatef(rotation, 0f, 0f, 1f);
* GL11.glTranslatef(-x, -y, 0);
*/
GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex2f(800, 600);
GL11.glVertex2f(0, 600);
GL11.glVertex2f(0, 590);
GL11.glVertex2f(800, 590);
GL11.glEnd();
GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex2f(0, 0);
GL11.glVertex2f(0, 10);
GL11.glVertex2f(800, 10);
GL11.glVertex2f(800, 0);
GL11.glEnd();
GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex2f(0, 0);
GL11.glVertex2f(0, 20);
GL11.glVertex2f(800, 40);
GL11.glVertex2f(800, 20);
GL11.glPopMatrix();
}
public void updatePlayer(int delta) {
/* ************************************************************ */
/* ************************Player 1**************************** */
/* ************************************************************ */
if (Keyboard.isKeyDown(Keyboard.KEY_Q))
y += 0.35f * delta;
if (Keyboard.isKeyDown(Keyboard.KEY_A))
y -= 0.35f * delta;
/* ************************************************************ */
/* ************************Player 2**************************** */
/* ************************************************************ */
if (Keyboard.isKeyDown(Keyboard.KEY_UP))
y1 += 0.35f * delta;
if (Keyboard.isKeyDown(Keyboard.KEY_DOWN))
y1 -= 0.35f * delta;
// keep paddle on the screen
if (y < 60)
y = 60;
if (y > 540)
y = 540;
if (y1 < 60)
y1 = 60;
if (y1 > 540)
y1 = 540;
updateFPS();
}
public int getDelta() {
long time = getTime();
int delta = (int) (time - lastFrame);
lastFrame = time;
return delta;
}
public long getTime() {
return (Sys.getTime() * 1000) / Sys.getTimerResolution();
}
public void updateFPS() {
if (getTime() - lastFPS > 1000) {
Display.setTitle("FPS: " + fps);
fps = 0;
lastFPS += 1000;
}
fps++;
}
public void initGL() {
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, 800, 0, 600, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
}
public void renderBall() {
GL11.glEnd();
GL11.glBegin(GL11.GL_POLYGON);
GL11.glColor3f(1f, 1.5f, 1f);
for (double angle = 0; angle <= Math.PI * 2; angle = angle + 0.01) { // Circumference
// of
// circle
// =
// 2PI
// *
// r
GL11.glVertex2d(ballX + Math.sin(angle) * 5,
ballY + Math.cos(angle) * 5);
}
GL11.glEnd();
}
public void renderGL() {
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
GL11.glPushMatrix();
GL11.glTranslatef(x, y, 0);
GL11.glRotatef(rotation, 0f, 0f, 1f);
GL11.glTranslatef(-x, -y, 0);
GL11.glBegin(GL11.GL_QUADS);
/* ************************************************************ */
/* ************************Player 1**************************** */
/* ************************************************************ */
GL11.glColor3f(0.0f, 0.0f, 1.0f);
GL11.glVertex2f(x - 10, y - 50);
GL11.glVertex2f(x + 10, y - 50);
GL11.glVertex2f(x + 10, y + 50);
GL11.glVertex2f(x - 10, y + 50);
/* ************************************************************ */
/* ************************Player 2**************************** */
/* ************************************************************ */
GL11.glColor3f(1.0f, 0.0f, 0.0f);
GL11.glVertex2f(x1 - 10, y1 - 50);
GL11.glVertex2f(x1 + 10, y1 - 50);
GL11.glVertex2f(x1 + 10, y1 + 50);
GL11.glVertex2f(x1 - 10, y1 + 50);
GL11.glEnd();
GL11.glPopMatrix();
}
public static void main(String[] argv) {
pong app = new pong();
app.start();
}
}
Comments
0 B
|👍
/👎
0 B
|0 👍
/0 👎
0 B
|👍
/👎