bonjour tout le monde j'ai besoin d'aide pour mon rapport. voici mon code et je voudrais savoir comment puis-je coder pour le nombre de vies. en gros pour que à chaque fois que la balle quitte le jeux le nombre de vies baise de 1. Merci.
package cassebrique;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Jeux extends JPanel implements KeyListener, ActionListener{
private boolean jouer = false;
private int score = 0;
private int vies = 3;
private int sommeBriques = 21;
private Timer temp;
private int retard = 8;
private int joueurX = 310;
private int positionballeX = 350;
private int positionballeY = 500;
private int directionballeX = -1;
private int directionballeY = -2;
private generateur zone;
public Jeux() {
zone = new generateur(3, 7);
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
temp = new Timer(retard, this);
temp.start();
}
public void paint(Graphics g) {
//Création du fond fu jeux
g.setColor(Color.WHITE);
g.fillRect(1,1, 692, 592);
//création de la zone
zone.draw((Graphics2D)g);
//Création du bord du jeux
g.setColor(Color.BLACK);
g.fillRect(0, 0, 3, 592);
g.fillRect(0, 0, 692, 3);
g.fillRect(691, 0, 3, 592);
//Vies
g.setColor(Color.blue);
g.setFont(new Font("serif", Font.BOLD, 25 ));
g.drawString("Vies : "+vies, 90, 30 );
//scores
g.setColor(Color.blue);
g.setFont(new Font("serif", Font.BOLD, 25 ));
g.drawString("Votre score : "+score, 500, 30 );
//Création de la racquette
g.setColor(Color.BLUE);
g.fillRect(joueurX, 550, 100, 8);
//Création de la Balle
g.setColor(Color.BLUE);
g.fillOval(positionballeX, positionballeY, 20, 20);
if(sommeBriques <= 0) {
jouer = false;
directionballeX = 0;
directionballeY = 0;
g.setColor(Color.BLUE);
g.setFont(new Font("serif", Font.BOLD, 30));
g.drawString("Vous avez gagnez", 280, 300);
g.setFont(new Font("serif", Font.BOLD, 20));
g.drawString("Appuyez sur la touche Entrer pour recommencer", 150, 360);
}
if(positionballeY > 570) {
jouer = false;
directionballeX = 0;
directionballeY = 0;
g.setColor(Color.BLUE);
g.setFont(new Font("serif", Font.BOLD, 30));
g.drawString("Game Over", 280, 300);
g.setFont(new Font("serif", Font.BOLD, 20));
g.drawString("Appuyez sur la touche Entrer pour recommencer", 150, 360);
}
g.dispose();
}
@Override
public void actionPerformed(ActionEvent e) {
temp.start();
if(jouer){
if(new Rectangle(positionballeX, positionballeY, 20, 20).intersects(new Rectangle(joueurX, 550, 100, 8))){
directionballeY = -directionballeY; //pour la detection de l'intersection avec la racquette
}
A: for(int i = 0 ; i<zone.zone.length; i++) {
for(int j = 0 ; j<zone.zone[0].length; j++) {
if(zone.zone[i][j] > 0) {
int briqueX = j * zone.largeurbrique + 80;
int briqueY = i * zone.hauteurbrique + 50;
int largeurbrique = zone.largeurbrique;
int hauteurbrique = zone.hauteurbrique;
Rectangle rect = new Rectangle(briqueX, briqueY, largeurbrique, hauteurbrique);
Rectangle balleRect = new Rectangle(positionballeX, positionballeY, 20, 20);
Rectangle briqueRect = rect;
if(balleRect.intersects(briqueRect)) {
zone.setValeurBrique(0, i, j);
sommeBriques--;
score += 5;
if(positionballeX + 19 <= briqueRect.x || positionballeX + 1 >= briqueRect.x + briqueRect.width){
directionballeX = -directionballeX;
}else {
directionballeY = -directionballeY;
}
break A;
}
}
}
}
positionballeX += directionballeX;
positionballeY += directionballeY;
if(positionballeX < 0){
directionballeX = -directionballeX; //bord gauche
}
if(positionballeY < 0){
directionballeY = -directionballeY; //bord haut
}
if(positionballeX > 670){
directionballeX = -directionballeX; //bord droit
}
}
repaint();
}
@Override
public void keyTyped(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_RIGHT){
if(joueurX >= 600){
joueurX = 600;
} else {
moveRight();
}
} else {
}
if(e.getKeyCode() == KeyEvent.VK_LEFT){
if(joueurX < 10){
joueurX = 10;
} else {
moveLeft();
}
}
if(e.getKeyCode() == KeyEvent.VK_ENTER) {
if(!jouer){
jouer = true;
positionballeX = 120;
positionballeY = 350;
directionballeX = -1;
directionballeY = -2;
joueurX = 310;
score = 0;
sommeBriques = 21;
zone = new generateur(3, 7);
repaint();
}
}
}
public void moveRight() {
jouer = true;
joueurX+=20;
}
public void moveLeft() {
jouer = true;
joueurX-=20;
}
@Override
public void keyReleased(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}