Nombre de vies

Fermé
dream - Modifié le 22 mai 2018 à 22:44
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.
    }
    
}