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
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);
}