Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- import java.io.*;
- import javax.sound.sampled.*;
- public class Pong {
- public static void main(String[] args) {
- JFrame frame = new JFrame("Pong");
- frame.setSize(1000, 800);
- frame.setResizable(false);
- frame.setLocationRelativeTo(null);
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- PongPanel panel = new PongPanel();
- frame.add(panel);
- frame.pack();
- frame.setLocationRelativeTo(null);
- frame.setVisible(true);
- frame.setAlwaysOnTop(true);
- frame.setAlwaysOnTop(false);
- }
- public static class PongPanel extends JPanel implements ActionListener, KeyListener {
- boolean wPressed = false;
- boolean sPressed = false;
- boolean upPressed = false;
- boolean downPressed = false;
- boolean onePressed = false;
- boolean twoPressed = false;
- boolean start = true;
- boolean vsCPU = false;
- boolean spacePressed = false;
- int LpaddleY = 400;
- int RpaddleY = 400;
- int ballX = 500;
- int ballY = 400;
- int ballXspeed = 5;
- int ballYspeed = 5;
- int leftScore = 0;
- int rightScore = 0;
- int LpaddleX = 100;
- int LpaddleW = 30;
- int LpaddleH = 100;
- int RpaddleX = 900;
- int RpaddleW = 30;
- int RpaddleH = 100;
- int ballW = 15;
- int ballH = 15;
- Timer timer = new Timer(1000/60 , this);
- public PongPanel() {
- setBackground(new Color(0, 0, 0));
- setPreferredSize(new Dimension(1000,800));
- timer.start();
- setFocusable(true);
- addKeyListener(this);
- }
- public boolean intersects(int px1, int py1, int pw, int ph) {
- int bx1 = ballX;
- int by1 = ballY;
- int bx2 = ballX + ballW;
- int by2 = ballY + ballH;
- int px2 = px1 + pw;
- int py2 = py1 + ph;
- if(bx2 > px1 && bx1 < px2 && by2 > py1 && by1 < py2) {
- playSound("collision.wav");
- return true;
- }
- else {
- return false;
- }
- }
- public void paintComponent(Graphics g) {
- super.paintComponent(g);
- if(start == true) {
- g.setColor(new Color(255,255,255));
- g.setFont(new Font("IrisUPC", Font.BOLD, 100));
- g.drawString("Pong!", 375, 200);
- g.setFont(new Font("IrisUPC", Font.BOLD, 75));
- g.drawString("By: name", 280, 250);
- g.setFont(new Font("IrisUPC", Font.BOLD, 85));
- g.drawString("Press 1 To Play vs CPU", 150, 3751);
- g.setFont(new Font("IrisUPC", Font.BOLD, 85));
- g.drawString("Press 2 To Play vs HUMAN", 150, 450);
- }
- else if(leftScore < 2 && rightScore < 2) {
- g.setColor(new Color(255,255,255));
- g.fillRect(LpaddleX,LpaddleY,LpaddleW,LpaddleH);
- g.fillRect(RpaddleX, RpaddleY, RpaddleW, RpaddleH);
- g.fillRect(ballX, ballY, ballW, ballH);
- g.setFont(new Font("IrisUPC", Font.BOLD, 100));
- g.drawString("" + leftScore, 200, 100);
- g.drawString("" + rightScore, 800, 100);
- }
- else if(leftScore >= 2) {
- timer.stop();
- g.setFont(new Font("IrusUPC", Font.BOLD, 50));
- g.setColor(new Color(255,255,255));
- g.drawString("Left Player Wins!", 300, 400);
- //if(spacePressed == true) {
- // start = true;
- }
- else if(rightScore >= 2) {
- timer.stop();
- g.setFont(new Font("IrusUPC", Font.BOLD, 50));
- g.setColor(new Color(255,255,255));
- }
- }
- public void actionPerformed(ActionEvent e) {
- if(start == true) {
- if(onePressed == true) {
- start = false;
- vsCPU = true;
- }
- if(twoPressed == true) {
- start = false;
- }
- }
- if( wPressed == true ) { LpaddleY = LpaddleY - 10; }
- if( sPressed == true ) { LpaddleY = LpaddleY + 10; }
- if( upPressed == true ) { RpaddleY = RpaddleY - 10; }
- if( downPressed == true ) { RpaddleY = RpaddleY + 10; }
- if(LpaddleY <= 0) { LpaddleY = 0 ; }
- if(LpaddleY + LpaddleH >= 800) { LpaddleY = 800 - LpaddleH; }
- if(RpaddleY <= 0) { RpaddleY = 0; }
- if(RpaddleY + LpaddleH >= 800) { RpaddleY = 800 - LpaddleH; }
- if(ballX <= 0) {
- ballX = 500;
- ballY = 400;
- rightScore++;
- playSound("score.wav");
- try{Thread.sleep(500);} catch (Exception ex) {
- }
- ballXspeed = 2;
- ballYspeed = -7;
- }
- if(ballX + 25 >= 1000) {
- ballX = 500;
- ballY = 400;
- leftScore++;
- playSound("score.wav");
- try{Thread.sleep(500);} catch (Exception ex) {
- }
- ballXspeed = 2;
- ballYspeed = -7;
- }
- if(ballY <= 0) {
- ballYspeed = ballYspeed * -1;
- }
- if(ballY + 25 >= 800) {
- ballYspeed = ballYspeed * -1;
- }
- ballX = ballX + ballXspeed;
- ballY = ballY + ballYspeed;
- boolean touchingLeftPaddle = intersects(LpaddleX, LpaddleY, LpaddleW, LpaddleH);
- if(touchingLeftPaddle == true) {
- ballXspeed = ballXspeed * -1;
- ballXspeed++;
- if(ballX < LpaddleX + LpaddleW) {
- ballX = LpaddleX + LpaddleW;
- }
- }
- boolean touchingRightPaddle = intersects(RpaddleX, RpaddleY, RpaddleW, RpaddleH);
- if(touchingRightPaddle == true) {
- ballXspeed = ballXspeed * -1;
- ballXspeed--;
- if(ballX + ballW > RpaddleX) {
- ballX = RpaddleX - ballW;
- }
- }
- //RpaddleY = ballY - RpaddleH/2 + ballH/2;
- // Impossible Bot ^
- //if(RpaddleY > ballY - RpaddleH/2 + ballH/2 && ballX > 250) {RpaddleY -= 12;}
- //else if (RpaddleY < ballY - RpaddleH/2 + ballH/2 && ballX > 250) {RpaddleY += 12;}
- //Possible Bot ^
- repaint();
- }
- public void keyPressed(KeyEvent e) {
- if(e.getKeyCode() == KeyEvent.VK_W) { wPressed = true; }
- if(e.getKeyCode() == KeyEvent.VK_S) { sPressed = true; }
- if(e.getKeyCode() == KeyEvent.VK_UP) { upPressed = true; }
- if(e.getKeyCode() == KeyEvent.VK_DOWN) { downPressed = true; }
- if(e.getKeyCode() == KeyEvent.VK_1) { onePressed = true; }
- if(e.getKeyCode() == KeyEvent.VK_2) { twoPressed = true; }
- if(e.getKeyCode() == KeyEvent.VK_SPACE) { spacePressed = true; }
- }
- public void keyReleased(KeyEvent e) {
- if(e.getKeyCode() == KeyEvent.VK_W) { wPressed = false; }
- if(e.getKeyCode() == KeyEvent.VK_S) { sPressed = false; }
- if(e.getKeyCode() == KeyEvent.VK_UP) { upPressed = false; }
- if(e.getKeyCode() == KeyEvent.VK_DOWN) { downPressed = false; }
- if(e.getKeyCode() == KeyEvent.VK_1) { onePressed = false; }
- if(e.getKeyCode() == KeyEvent.VK_2) { twoPressed = false; }
- if(e.getKeyCode() == KeyEvent.VK_SPACE) { spacePressed = true; }
- }
- public void keyTyped(KeyEvent e) {
- }
- public static void playSound(String s) {
- try {
- File file = new File(s);
- AudioInputStream audio = AudioSystem.getAudioInputStream(file);
- Clip clip = AudioSystem.getClip();
- clip.open(audio);
- clip.start();
- }
- catch (Exception e) {
- System.out.println("Can't find file named: " + s);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement