Problème jeuNetbeans

Fermé
BlackJackH - Modifié par BlackJackH le 11/12/2014 à 08:11
Bonjour,


J'ai réalisé un petit pgm de blackJack mais j'ai qq petits problèmes que je n'arrive pas à résoudre:
Voici mon programme blackJack.

1) Quand on commence une nouvelle partie, le textfield du résultatJoueur, ne se remet pas à 0. Il semble que l'erreur vienne de plateauJoueur qui ne se remet pas à 0. Pourtant j'ai créer une boucle avec "plateauJoueur.get(i).setValeur(0);" pour le remettre à 0, mais cela ne semble pas fonctionner.

2) Un deuxième problème c'est qd on commence une nouvelle partie, le label1 qui affiche "Entrez une mise entre 0 et..." , ne se met pas à jour correctement avec la nouvelle valeur de cash. Dans la fonction compareScore(), j'ai dû créer une nouvelle variable cashFinal, sans quoi, il y avait des erreur lors du calcul du nouveau cash.

3) Lorsqu'un as tombe en 3 ème position ou après, il vaut 11. Et je ne comprends pas pq il ne passe pas à 1 si la somme du joueur est supérieure à 21.

Merci d'avance pour votre aide,

Voici mes deux classes BlackJack.java et Cartes.jave

import java.util.ArrayList;

public class BlackJack extends javax.swing.JFrame {

    ArrayList <Cartes> plateauJoueur = new ArrayList() ; 
    ArrayList <Cartes> plateauBanque = new ArrayList() ;
    int cashJoueur = 10;
    int cashFinal = 10;
    int miseJoueur;
    int nbrCartesJoueur = 0 ;
    int nbrCartesBanque = 0 ;
    int nbrCartesJoueurVerso = 0;
    int nbrCartesBanqueVerso = 0;
    int sommeJoueur = 0;
    int sommeBanque = 0;
    boolean as = false;
            

    public BlackJack() {
        initComponents();
        this.setExtendedState(this.MAXIMIZED_BOTH);
        
       //this.setSize(1400, 1200); 
       //setContentPane(new JLabel(new ImageIcon("./tapis.jpg")));
        nouvellePartie();
    }
    
    public void nouvellePartie(){
        label1.setText("Entrez une mise entre 0 et "+cashJoueur);      
        
        for (int i=0; i<plateauJoueur.size(); i++){
            plateauJoueur.get(i).setValeur(0);
            resultatsJoueurTfld.setText("" + plateauJoueur.get(i));
        }
        System.out.println("sommeJoueur"+sommeJoueur);
        for (int i=0; i<2; i++){
                
                nbrCartesJoueur = i ;
                Cartes temp = new Cartes();
                plateauJoueur.add(temp);
                plateauPanelJoueur.add(temp).setBounds(120+(nbrCartesJoueur*(152+15)), 70, 152, 210);
        }
        for (int i=2; i<5; i++){
                nbrCartesJoueurVerso = nbrCartesJoueur + i-1 ;
                Cartes temp = new Cartes(true);
                plateauJoueur.add(temp);
                plateauPanelJoueur.add(temp).setBounds(120+(nbrCartesJoueurVerso*(152+15)), 70, 152, 210);
        }
        for (int i=0; i<1; i++){
                nbrCartesBanque = i;
                Cartes temp = new Cartes();
                plateauBanque.add(temp);
                plateauPanelBanque.add(temp).setBounds(120+(nbrCartesBanque*(152+15)), 10, 152, 210); 
        }
         for (int i=1; i<5; i++){
                nbrCartesBanqueVerso = nbrCartesBanque + i ;
                Cartes temp = new Cartes(true);
                plateauBanque.add(temp);
                plateauPanelBanque.add(temp).setBounds(120+(nbrCartesBanqueVerso*(152+15)), 10, 152, 210);
        }
       plateauPanelJoueur.validate();
       plateauPanelBanque.validate();
       calculeScoreJoueur();
    }

    public void miseJoueur(){
        if (miseJoueur<=cashJoueur){
           cashJoueur = cashJoueur - miseJoueur;
           cashTfld.setText("Votre cash vaut: " + cashJoueur) ;
        }
        else if (miseJoueur>cashJoueur){
            cashTfld.setText("Insérez une mise moins grande") ;
        }
        else if (cashJoueur==0){
            cashTfld.setText("Vous n'avez plus de quoi miser") ;
        }
    }
    
    public void nouvelleCarteJoueur(){
            resultatsJoueurTfld.setText("" + sommeJoueur);
            nbrCartesJoueur = nbrCartesJoueur+1;
            Cartes temp = new Cartes();
            plateauJoueur.add(temp);
            plateauPanelJoueur.add(temp).setBounds(120+((nbrCartesJoueur)*(152+15)), 70, 152, 210);
            plateauPanelJoueur.validate();
}
    
    public void nouvelleCarteBanque(){
            nbrCartesBanque = nbrCartesBanque+1;
            Cartes temp = new Cartes();
            plateauBanque.add(temp);
            plateauPanelBanque.add(temp).setBounds(120+((nbrCartesBanque)*(152+15)), 10, 152, 210); 
    }   
    
    public void calculeScoreJoueur(){
        sommeJoueur=0;
        System.out.println ("sommeJoueur après "+ sommeJoueur);
       for (int i=0; i<plateauJoueur.size(); i++){
           sommeJoueur = sommeJoueur + plateauJoueur.get(i).getValeur();
       }
       if (sommeJoueur>21){
           as=false;
           for (int i=0; i<plateauJoueur.size(); i++){
                if (plateauJoueur.get(i).getValeur()==11 && as==false){
                    sommeJoueur = sommeJoueur - 10;
                }
                as=true;
            }
       }
       System.out.println("Calcul joueur" + sommeJoueur);
       System.out.println("Calcul joueur" + plateauJoueur);
      resultatsJoueurTfld.setText("" + sommeJoueur);
    }   
    
    public void calculeScoreBanque(){
       sommeBanque = 0;
       for (int i=0; i<plateauBanque.size(); i++){
           sommeBanque = sommeBanque + plateauBanque.get(i).getValeur();
       }
       if (sommeBanque>21){
           as=false;
           for (int i=0; i<plateauBanque.size(); i++){
                if (plateauBanque.get(i).getValeur()==11 && as==false){
                    sommeBanque = sommeBanque - 10;
                }
                as=true;
           }
       }
       resultatsBanqueTfld.setText("" + sommeBanque);
    }
    
    public void banqueJoue(){
       nouvelleCarteBanque();
       plateauPanelBanque.validate();
       calculeScoreBanque();
       compareScore();
    }

    public void compareScore(){
        int cashFinal;
        if (sommeJoueur==sommeBanque && sommeJoueur<=21){
            cashFinal = cashJoueur + miseJoueur;
            GagnantTfld.setText("Vous récupérez votre mise! Vous avez : "+ cashFinal);
        }
        if ((sommeJoueur>21) || (sommeJoueur<sommeBanque)){
            GagnantTfld.setText("Vous avez perdu, recommencez une partie! Votre cash vaut : "+cashJoueur);
        }
        if ((sommeBanque>21 && sommeJoueur<=21) || (sommeJoueur>sommeBanque && sommeJoueur<=21)){
            cashFinal = cashJoueur + 2*miseJoueur;
            GagnantTfld.setText("Vous avez gagné et récupérez 2x votre mise! Vous avez : "+cashFinal);
        } 
    }
     private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        as=false;
        miseJoueur = Integer.parseInt(MiseTfld.getText());
        miseJoueur();
        plateauPanelJoueur.validate();
        calculeScoreJoueur();

    }                                        

    private void nouvelleCarteBtnActionPerformed(java.awt.event.ActionEvent evt) {                                                 
        if (sommeJoueur<21 && miseJoueur>0){
            nouvelleCarteJoueur();
            plateauPanelJoueur.validate();
            calculeScoreJoueur();
            
        }
        if (sommeJoueur == 21){
            while (sommeBanque<17){
                banqueJoue();
            }
        }
        if (sommeJoueur>21){
            GagnantTfld.setText("Vous avez perdu, recommencez une partie! Votre cash vaut : "+cashJoueur);
        }
         resultatsJoueurTfld.setText("" + sommeJoueur);
    }                                                

    private void arretBtnActionPerformed(java.awt.event.ActionEvent evt) {                                         
       if (sommeBanque<17 && miseJoueur>0 && sommeJoueur<=21){
           do {
               banqueJoue();
           } while (sommeBanque<17);
       }
       
    }                                        

    private void GagnantTfldActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
    }                                           

    private void nouvellePartieActionPerformed(java.awt.event.ActionEvent evt) {                                               
        if (miseJoueur>0){
            miseJoueur=0;
            MiseTfld.setText("");
            cashTfld.setText("") ;
            sommeJoueur=0;
            sommeBanque=0;
            resultatsJoueurTfld.setText("");
            resultatsBanqueTfld.setText("");
            GagnantTfld.setText("");
            nouvellePartie();
            
        }
    }                                              

    private void MiseTfldKeyPressed(java.awt.event.KeyEvent evt) {                                    
        if (evt.getKeyCode()==10){
            as=false;
            miseJoueur = Integer.parseInt(MiseTfld.getText());
            miseJoueur();
            plateauPanelJoueur.validate();
            calculeScoreJoueur();
        }
    }           

import java.awt.Image;
import javax.swing.ImageIcon;


public class Cartes extends javax.swing.JPanel {

    private boolean carte = false;
    private int valeur = 0;
    private int nombre;
    private String verso = "./src/Images/verso.jpg";
    private String [] chemins = {
"./src/Images/1ca.jpg",
"./src/Images/1co.jpg",
"./src/Images/1p.jpg",
"./src/Images/1t.jpg",
"./src/Images/2ca.jpg",
"./src/Images/2co.jpg",
"./src/Images/2p.jpg",
"./src/Images/2t.jpg",
"./src/Images/3ca.jpg",
"./src/Images/3co.jpg",
"./src/Images/3p.jpg",
"./src/Images/3t.jpg",
"./src/Images/4ca.jpg",
"./src/Images/4co.jpg",
"./src/Images/4p.jpg",
"./src/Images/4t.jpg",
"./src/Images/5ca.jpg",
"./src/Images/5co.jpg",
"./src/Images/5p.jpg",
"./src/Images/5t.jpg",
"./src/Images/6ca.jpg",
"./src/Images/6co.jpg",
"./src/Images/6p.jpg",
"./src/Images/6t.jpg",
"./src/Images/7ca.jpg",
"./src/Images/7co.jpg",
"./src/Images/7p.jpg",
"./src/Images/7t.jpg",
"./src/Images/8ca.jpg",
"./src/Images/8co.jpg",
"./src/Images/8p.jpg",
"./src/Images/8t.jpg",
"./src/Images/9ca.jpg",
"./src/Images/9co.jpg",
"./src/Images/9p.jpg",
"./src/Images/9t.jpg",
"./src/Images/10ca.jpg",
"./src/Images/10co.jpg",
"./src/Images/10p.jpg",
"./src/Images/10t.jpg",
"./src/Images/11ca.jpg",
"./src/Images/11co.jpg",
"./src/Images/11p.jpg",
"./src/Images/11t.jpg",
"./src/Images/12ca.jpg",
"./src/Images/12co.jpg",
"./src/Images/12p.jpg",
"./src/Images/12t.jpg",
"./src/Images/13ca.jpg",
"./src/Images/13co.jpg",
"./src/Images/13p.jpg",
"./src/Images/13t.jpg",
};          
    
    public Cartes() {
        initComponents();
        affichage();
    }
   public Cartes(boolean vide) {
       if (vide){
           initComponents();
           afficheVerso();
           nombre =0;
           //affichage verso
           //valeur =0
                           
       }
       
    }
    
    public void setCarte (boolean newCarte ){
        carte = newCarte;
    }
    
    public boolean getCarte (){
        return carte;
    }
    
    public void setValeur(int valeur){
        this.valeur=valeur;
    }
    
    public int getValeur(){  
        if(nombre !=0){
        valeur = (int)((nombre/4)+1);
        if (valeur>10){
            valeur=10;
        }
        if (valeur == 1 ){
            valeur=11;
        }
        return valeur;}
        else return 0;
    }
    
    public void affichage(){
        nombre = (int) (Math.random()*52); 
        miseAJour(nombre);
    }    
    
    public void afficheVerso(){
        ImageIcon ico = new ImageIcon (verso); 
        Image uneImage = ico.getImage();        
        ico.setImage(uneImage);        
        jLabel1.setIcon(ico);
    }
    
    public void miseAJour(int chemin) {
        ImageIcon ico = new ImageIcon (chemins [nombre]); //Permet de changer d'image ()
        Image uneImage = ico.getImage();        //Récupère l'image qui est dans l'icône dans le but de redimensionner l'image
        ico.setImage(uneImage);        
        jLabel1.setIcon(ico);
    }