Boa Noite,
Fiz um jogo da cobra ele está a funcionar, mas estou com um problema quando se perde as 3 vidas aparece uma string no ecran a dizer “GAme Over”, como faço para quando carregar numa tecla ele apague o game over e volte a jogar?
Grato
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
public class Board extends JPanel implements Runnable {
private BufferedImage img = null;
private int pontos;
private int vidas;
private int nivel;
private int macaApanhadas;
private Thread thread;
private Jogador jogador;
private Maca maca;
public Board() {
addKeyListener(new Tadpter());
jogador = new Jogador();
maca = new Maca();
maca.locateApple();
localizaçaoInicial();
vidas = 3;
nivel = 1;
macaApanhadas = 0;
setFocusable(true);
setDoubleBuffered(true);
thread = new Thread(this);
thread.start();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics g2d = g.create(); //Faz a cópia
setBackground(Color.BLACK);
// Desenha a parede
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 20, 10, 455);
g2d.fillRect(0, 20, 590, 10);
g2d.fillRect(585, 20, 10, 455);
g2d.fillRect(0, 465, 590, 10);
g2d.drawString("Nivel: " + nivel, 50, 15);
g2d.drawString("Vidas: " + vidas, 250, 15);
g2d.drawString("Pontos: " + pontos, 450, 15);
// Desenha a maça
g2d.setColor(Color.RED);
g2d.fillOval(maca.getX(), maca.getY(), 10, 10);
// Desenha o pau da maça
g2d.setColor(Color.GREEN);
g2d.drawLine(maca.getX() + 5, maca.getY(), maca.getX() + 5, maca.getY() - 3);
// Desenha a cabela e o corpo da cobra
g2d.setColor(Color.GREEN);
for (int z = 0; z < jogador.getCorpo(); z++) {
if (z == 0) {
g2d.fillOval(jogador.getX()[z], jogador.getY()[z], 10, 10);
} else {
g2d.drawOval(jogador.getX()[z], jogador.getY()[z], 10, 10);
}
}
g2d.drawImage(img, 0, 0, null);
g2d.dispose();
}
public void localizaçaoInicial() {
jogador.setCorpo(3);
for (int z = 0; z < jogador.getCorpo(); z++) {
jogador.getX()[z] = 280 - z * 10;
jogador.getY()[z] = 200;
}
jogador.setFim(false);
jogador.Inicio();
}
public void acertarMaca() {
if ((jogador.getX()[0] == maca.getX()) && (jogador.getY()[0] == maca.getY())) {
int corpo = jogador.getCorpo();
jogador.setCorpo(corpo += 1);
pontos += 100;
macaApanhadas += 1;
maca.locateApple();
}
}
public void colisao() {
for (int z = jogador.getCorpo(); z > 0; z--) {
if ((z > 0) && (jogador.getX()[0] == jogador.getX()[z]) && (jogador.getY()[0] == jogador.getY()[z])) {
jogador.setFim(true);
}
}
}
public void VerificarFim() {
if (jogador.getFim() == true) {
if (vidas > 1) {
vidas -= 1;
maca.locateApple();
localizaçaoInicial();
} else {
GameOver();
}
}
}
public void GameOver() {
if (img == null) {
img = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
}
jogador.setFim(false);
vidas = 0;
Graphics2D g = img.createGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(Color.WHITE);
g.setFont(new Font("Arial", Font.BOLD, 30));
g.drawString("GAME OVER", 200, 200);
}
public void novoJogo() {
if (jogador.getNovoJogo() == true) {
jogador.setNovoJogo(false);
jogador.Inicio();
maca.locateApple();
vidas = 3;
pontos = 0;
nivel = 1;
macaApanhadas = 0;
localizaçaoInicial();
}
}
public void run() {
while (jogador.getFim() == false) {
jogador.movimento();
colisao();
acertarMaca();
VerificarFim();
novoJogo();
if (macaApanhadas <= 10) {
try {
Thread.sleep(200);
} catch (InterruptedException ex) {
}
} else if(macaApanhadas <= 20 && macaApanhadas >= 10){
try {
nivel = 2;
Thread.sleep(150);
} catch (InterruptedException ex) {
}
} else if(macaApanhadas <= 30 && macaApanhadas >= 20){
try {
nivel = 3;
Thread.sleep(100);
} catch (InterruptedException ex) {
}
} else if(macaApanhadas <= 40 && macaApanhadas >= 30){
try {
nivel = 4;
Thread.sleep(50);
} catch (InterruptedException ex) {
}
} else {
try {
nivel = 5;
Thread.sleep(30);
} catch (InterruptedException ex) {
}
}
repaint();
}
}
class Tadpter extends KeyAdapter {
public void keyPressed(KeyEvent e) {
jogador.keyPressed(e);
}
}
}