Ping Pong em Java

Outra coisa bem conhecida é o ping pong.

Para jogar basta clicar no arquivo .jar, Jogador 1 a Esquerda da tela e Jogador 2 a Direita da tela use as teclas W e S para movimentar o jogador 1 e as teclas direcional para cima e direcional para baixo para movimentar o jogador 2.

A classe principal.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class PingPongGame extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
// This is the panel of the game class
private PainelBola panel = null;

private PainelBola getPanel() {
if (panel == null) {
// The panel is created
panel = new PainelBola();
}
return panel;
}

public PingPongGame() {
super();
initialize();

// Listeners for the keyboard
this.addKeyListener(new KeyAdapter() {
// Method for the key pressed

public void keyPressed(KeyEvent e) {
formKeyPressed(e);
}

// Method for the key released
public void keyReleased(KeyEvent e) {
formKeyReleased(e);
}
});
}

// Here i'm stating the method that will send the key pressed to the game
// class
private void formKeyPressed(KeyEvent e) {
panel.keyPressed(e);
}

// Here i'm stating the method that will send the key released to the game
// class
private void formKeyReleased(KeyEvent e) {
panel.keyReleased(e);
}

private void initialize() {
this.setSize(250, 250);
this.setTitle("Ping Pong Game");
this.setContentPane(getJContentPane());
// Tamanho fixo do programa, sem alteção
this.setResizable(false);
// Centralizado o programa no meio da tela
this.setLocationRelativeTo(null);
}

private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getPanel(), BorderLayout.CENTER);
}
return jContentPane;
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
PingPongGame thisClass = new PingPongGame();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
}

A classe logica.

 import java.awt.*;
 import java.awt.event.KeyEvent;
 import javax.swing.*;

public class PainelBola extends JPanel implements Runnable {

private static final long serialVersionUID = 1L;

// Positions on X and Y for the ball, player 1 and player 2
 private int bolaX = 10, bolaY = 100, jogadorX = 10, jogadorY = 100,
 jogador2X = 230, jogador2Y = 100;

Thread hilo;

int direita = 5; // to the right
 int esquerda = -5; // to the left
 int praCima = 5; // upward
 int praBaixo = -5; // down
 int largura, altura; // Width and height of the ball

// Scores
 int contPlay1 = 0, contPlay2 = 0;
 boolean player1FlagArr, player1FlagAba, player2FlagArr, player2FlagAba;
 boolean jogo, gameOver;

public PainelBola() {

jogo = true;
 hilo = new Thread(this);
 hilo.start();
 }

// Draw ball and ships
 public void paintComponent(Graphics gc) {

setOpaque(false);

super.paintComponent(gc);

// Draw ball
 gc.setColor(Color.blue);
 gc.fillOval(bolaX, bolaY, 8, 8);

// Draw ships
 gc.fillRect(jogadorX, jogadorY, 10, 25);
 gc.fillRect(jogador2X, jogador2Y, 10, 25);

// Draw scores
 gc.drawString("Jogador 1: " + contPlay1, 25, 10);
 gc.drawString("Jogador 2: " + contPlay2, 150, 10);

if (gameOver)
 gc.drawString("Game Over", 100, 125);
 }

// Positions on X and Y for the ball
 public void sortearBola(int nx, int ny) {
 bolaX = nx;
 bolaY = ny;
 largura = this.getWidth();
 altura = this.getHeight();
 repaint();
 }

// Here we receive from the game container class the key pressed
 public void keyPressed(KeyEvent evt) {
 switch (evt.getKeyCode()) {

// Move Jogador 1 Esquerda da tela
 case KeyEvent.VK_W:
 player1FlagArr = true;
 break;
 case KeyEvent.VK_S:
 player1FlagAba = true;
 break;

// Move Jogador 2 Direita da tela
 case KeyEvent.VK_UP:
 player2FlagArr = true;
 break;
 case KeyEvent.VK_DOWN:
 player2FlagAba = true;
 break;
 }
 }

// Here we receive from the game container class the key released
 public void keyReleased(KeyEvent evt) {
 switch (evt.getKeyCode()) {

// Move Jogador 1 Esquerda da tela
 case KeyEvent.VK_W:
 player1FlagArr = false;
 break;
 case KeyEvent.VK_S:
 player1FlagAba = false;
 break;

// Move Jogador 2 Direita da tela
 case KeyEvent.VK_UP:
 player2FlagArr = false;
 break;
 case KeyEvent.VK_DOWN:
 player2FlagAba = false;
 break;
 }
 }

// Move player 1
 public void moverPlayer1() {
 if (player1FlagArr == true && jogadorY >= 0)
 jogadorY += praBaixo;
 if (player1FlagAba == true && jogadorY <= (this.getHeight() - 25))
 jogadorY += praCima;
 sortearJogado1(jogadorX, jogadorY);
 }

// Move player 2
 public void moverPlayer2() {
 if (player2FlagArr == true && jogador2Y >= 0)
 jogador2Y += praBaixo;
 if (player2FlagAba == true && jogador2Y <= (this.getHeight() - 25))
 jogador2Y += praCima;
 sortearJogado2(jogador2X, jogador2Y);
 }

// Position on Y for the player 1
 public void sortearJogado1(int x, int y) {
 this.jogadorX = x;
 this.jogadorY = y;
 repaint();
 }

// Position on Y for the player 2
 public void sortearJogado2(int x, int y) {
 this.jogador2X = x;
 this.jogador2Y = y;
 repaint();
 }

public void run() {

boolean izqDer = false;
 boolean arrAba = false;

while (true) {

if (jogo) {

// The ball move from left to right
 if (izqDer) {

// direita
 bolaX += direita;
 if (bolaX >= (largura - 8))
 izqDer = false;

} else {

// esquerda
 bolaX += esquerda;
 if (bolaX <= 0)
 izqDer = true;
 }

// The ball moves from up to down
 if (arrAba) {

// para Cima
 bolaY += praCima;

if (bolaY >= (altura - 8))
 arrAba = false;

} else {
 // para Baixo
 bolaY += praBaixo;
 if (bolaY <= 0)
 arrAba = true;
 }

sortearBola(bolaX, bolaY);

// Delay
 try {
 Thread.sleep(50);
 } catch (InterruptedException ex) {
 }

// Move player 1
 moverPlayer1();

// Move player 2
 moverPlayer2();

// The score of the player 1 increase
 if (bolaX >= (largura - 8))
 contPlay1++;

// The score of the player 2 increase
 if (bolaX == 0)
 contPlay2++;

// Game over. Here you can change 6 to any value
 // When the score reach to the value, the game will end
 if (contPlay1 == 6 || contPlay2 == 6) {
 jogo = false;
 gameOver = true;
 }

// The ball stroke with the player 1
 if (bolaX == jogadorX + 10 && bolaY >= jogadorY
 && bolaY <= (jogadorY + 25))
 izqDer = true;

// The ball stroke with the player 2
 if (bolaX == (jogador2X - 5) && bolaY >= jogador2Y
 && bolaY <= (jogador2Y + 25))
 izqDer = false;
 }
 }
 }
 }
 

Para baixar e jogar aqui vai o link.

Ping Pong Game.jar (4.81KB)

Description: Ping Pong Game em Java
Download Link
http://www.sendspace.com/file/d4yhlz

About these ads

Deixe um comentário:

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s