Почему сумма очков моего блэкджека не работает должным образом? - PullRequest
0 голосов
/ 17 декабря 2018

Я довольно новичок в программировании, и я пытался создать игру Simple BlackJack на Java, однако у меня возникают проблемы с подсчетом очков.

Иногда он распознает фактическое значение карты и работает нормальнодругие просто определяют случайное значение и портят всю игру.Я использовал числа от 1 до 52, чтобы случайным образом определять карты в «массиве», и поэтому по мере прохождения игры устанавливал их как «jlabel».счет подсчета устанавливается внутри «переключателя», который определяет значение каждой карты.

Вот мой код, пожалуйста, помогите мне:

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
card= new int[53];
Amount = Double.parseDouble(Apuesta);
Apuesta = jTextField1.getText();      
BilleteraT = Double.toString(Billetera-Amount); 
jTextField2.setText(BilleteraT);


if (Apuesta.equalsIgnoreCase("0")) {
JOptionPane.showMessageDialog(null, "Por Favor, ingrese una apuesta");}

else {
step2 = false;
if(step1=true){
Apuesta = jTextField1.getText();
Amount = Double.parseDouble(Apuesta);
Billetera=Billetera-Amount;
BilleteraT = Double.toString(Billetera); 
jTextField2.setText(BilleteraT);}


while(Amount <= Billetera && Amount!=0 || Billetera>=0&& Amount!=0){

jButton5.setVisible(false);
jButton5.invalidate();    

for (k=1;k<=6;k++){    
card[k]=rnd.nextInt(53)+1;

switch (k){
    case 1: p1= card[1];
    case 2: p2= card[2];
    case 3: c1= card[3];
    case 4: c2= card[4];
    case 5: p3= card[5];
    case 6: c3= card[6];}}

jLabel1.setIcon(new ImageIcon(getClass().getResource("/img/"+p1+".png")));
jLabel2.setIcon(new ImageIcon(getClass().getResource("/img/"+p2+".png")));
jLabel3.setIcon(new ImageIcon(getClass().getResource("/img/"+c1+".png")));
jLabel4.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));

for (k=1;k<=53;k++){      
switch(k){
    case 1:case 14:case 27:case 40:
    if(k==p1){scorep1=2;} if(k==p2){scorep2=2;}
    if(k==c1){scorec1=2;} if(k==c2){scorec2=2;}

    if (k==p3){scorep3=2;}
    if (k==c3){scorec3=2;}
    break;
    case 2:case 15:case 28:case 41:
    if(k==p1){scorep1=3;} if(k==p2){scorep2=3;}
    if(k==c1){scorec1=3;} if(k==c2){scorec2=3;}

    if (k==p3){scorep3=3;}
    if (k==c3){scorec3=3;}
    break;
    case 3:case 16:case 29:case 42:
    if(k==p1){scorep1=4;} if(k==p2){scorep2=4;}
    if(k==c1){scorec1=4;} if(k==c2){scorec2=4;}

    if (k==p3){scorep3=4;}
    if (k==c3){scorec3=4;}
    break;
    case 4:case 17:case 30:case 43:
    if(k==p1){scorep1=5;} if(k==p2){scorep2=5;}
    if(k==c1){scorec1=5;} if(k==c2){scorec2=5;}

    if (k==p3){scorep3=5;}
    if (k==c3){scorec3=5;}
    break;
    case 5:case 18:case 31:case 44:
    if(k==p1){scorep1=6;} if(k==p2){scorep2=6;}
    if(k==c1){scorec1=6;} if(k==c2){scorec2=6;}

    if (k==p3){scorep3=6;}
    if (k==c3){scorec3=6;} 
    break;
    case 6:case 19:case 32:case 45:
    if(k==p1){scorep1=7;} if(k==p2){scorep2=7;}
    if(k==c1){scorec1=7;} if(k==c2){scorec2=7;}    

    if (k==p3){scorep3=7;}
    if (k==c3){scorec3=7;} 
    break;
    case 7:case 20:case 33:case 46:
    if(k==p1){scorep1=8;} if(k==p2){scorep2=8;}
    if(k==c1){scorec1=8;} if(k==c2){scorec2=8;}

    if (k==p3){scorep3=8;}
    if (k==c3){scorec3=8;} 
    break;
    case 8:case 21:case 34:case 47:
    if(k==p1){scorep1=9;} if(k==p2){scorep2=9;}
    if(k==c1){scorec1=9;} if(k==c2){scorec2=9;}    

    if (k==p3){scorep3=9;}
    if (k==c3){scorec3=9;} 
    break;
    case 9:case 11:case 12:case 13:case 22:case 24:case 25:case 26:case 35:case 37:case 38:case 39:case 48:case 50:case 51:case 52:
    if(k==p1){scorep1=10;} if(k==p2){scorep2=10;}
    if(k==c1){scorec1=10;}  if(k==c2){scorec2=10;}

    if (k==p3){scorep3=10;}
    if (k==c3){scorec3=10;} 
    break;
    case 10:case 23:case 36:case 49:
    if(k==p1){scorep1=1;} if(k==p2){scorep2=1;}
    if(k==c1){scorec1=1;} if(k==c2){scorec2=1;}

    if (k==p3){scorep3=1;}
    if (k==c3){scorec3=1;} 
    break;}}

    scoreP=scorep1+scorep2;
    scoreC=scorec1;
    score1 = Double.toString(scoreP);
    score2 = Double.toString(scoreC);
    jTextField3.setText(score1);
    jTextField4.setText(score2); 
    step1=true;}

    if(Amount!=0&&Billetera>0 || Billetera<=0 ){JOptionPane.showMessageDialog(null,"No podeis apostar lo que no tenes!!!");} 


}

}                                        
/** PEDIR BUTTON  */
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         

if (step1=true && Billetera>0){

    if (step2=true && Billetera>0){
    p4=rnd.nextInt(53)+1;
     for (k=1;k<=53;k++){      
switch(k){
    case 1:case 14:case 27:case 40:    
    if (k==p4){scorep4=2;}
    if (k==c4){scorec4=2;}
    break;
    case 2:case 15:case 28:case 41:
    if (k==p4){scorep4=3;}
    if (k==c4){scorec4=3;}
    break;
    case 3:case 16:case 29:case 42:
    if (k==p4){scorep4=4;}
    if (k==c4){scorec4=4;}
    break;
    case 4:case 17:case 30:case 43:
    if (k==p4){scorep4=5;}
    if (k==c4){scorec4=5;}
    break;
    case 5:case 18:case 31:case 44:
    if (k==p4){scorep4=6;}
    if (k==c4){scorec4=6;} 
    break;
    case 6:case 19:case 32:case 45:
    if (k==p4){scorep4=7;}
    if (k==c4){scorec4=7;} 
    break;
    case 7:case 20:case 33:case 46:
    if (k==p4){scorep4=8;}
    if (k==c4){scorec4=8;} 
    break;
    case 8:case 21:case 34:case 47:
    if (k==p4){scorep4=9;}
    if (k==c4){scorec4=9;} 
    break;
    case 9:case 11:case 12:case 13:case 22:case 24:case 25:case 26:case 35:case 37:case 38:case 39:case 48:case 50:case 51:case 52:
    if (k==p4){scorep4=10;}
    if (k==c4){scorec4=10;} 
    break;
    case 10:case 23:case 36:case 49:
    if (k==p4){scorep4=1;}
    if (k==c4){scorec4=1;} 
    break;}}
    scoreP=scorep4+scoreP;
    score1 = Double.toString(scoreP);
    jTextField3.setText(score1);
    jLabel11.setIcon(new ImageIcon(getClass().getResource("/img/"+p4+".png")));
    }

    jLabel11.setIcon(new ImageIcon(getClass().getResource("/img/"+p3+".png")));

    scoreP=scorep3+scoreP;
    score1 = Double.toString(scoreP);
    jTextField3.setText(score1);
    step2 = true;


    if (scoreP==21){JOptionPane.showMessageDialog(null,"Felicitaciones, Ganaste!");
    Billetera=Billetera+Amount*2;
    BilleteraT = Double.toString(Billetera); 
    jTextField2.setText(BilleteraT);

    res=JOptionPane.showInputDialog("Queres intentar otra vez?");

    if (res.equalsIgnoreCase("si")){
    JOptionPane.showMessageDialog(null,"Sin problemas, ingrese nueva Aposta");
    jButton5.setVisible(true);
    jButton5.validate();
    jLabel1.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel2.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel3.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel11.setIcon(new ImageIcon(getClass().getResource("")));
    scoreC=0;
    scoreP=0;
    score1 = Double.toString(scoreP);
    score2 = Double.toString(scoreC);
    jTextField3.setText(score1);
    jTextField4.setText(score2);} 

    else if(res.equalsIgnoreCase("no")){
    JOptionPane.showMessageDialog(null,"Bueno, Hasta la proxima! Adios");
    System.exit(0);

    }else{JOptionPane.showMessageDialog(null,"Respuesta Invalida");}}       

    if (scoreP>21){JOptionPane.showMessageDialog(null,"Uhh,Pasaste, mas suerte en la proxima!");

    res=JOptionPane.showInputDialog("Queres intentar otra vez?");
    if (res.equalsIgnoreCase("si")){
    JOptionPane.showMessageDialog(null,"Sin problemas, ingrese nueva Aposta");
    jButton5.setVisible(true);
    jButton5.validate();
    jLabel1.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel2.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel3.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel11.setIcon(new ImageIcon(getClass().getResource("")));
    scoreC=0;
    scoreP=0;
    score1 = Double.toString(scoreP);
    score2 = Double.toString(scoreC);
    jTextField3.setText(score1);
    jTextField4.setText(score2);}

    else if(res.equalsIgnoreCase("no")){
    JOptionPane.showMessageDialog(null,"Bueno, Hasta la proxima! Adios");
    System.exit(0);

    }else{JOptionPane.showMessageDialog(null,"Respuesta Invalida");}}

}
}                                        
/** PLANTARSE BUTTON  */
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
JOptionPane.showMessageDialog(null,"Okay, Mi turno!");

if (step1=true&&Billetera>0){
 scoreC=scorec2+scoreC;
 score2 = Double.toString(scoreC);
 jTextField4.setText(score2);
 jLabel4.setIcon(new ImageIcon(getClass().getResource("/img/"+c2+".png")));

 if(scoreC<=16){resc="hit";

 while(resc.equals("hit")){

 jLabel2.setIcon(new ImageIcon(getClass().getResource("/img/"+c3+".png")));
 scoreC=scorec3+scoreC;
 score2 = Double.toString(scoreC);
 jTextField4.setText(score2);

 if(scoreC<=16){resc="hit";}
 if(scoreC>16){resc="stand";}}

 }else if(scoreC>16){resc="stand";}

 while(resc.equals("stand")){

if (scoreC>scoreP&&scoreC<=21){JOptionPane.showMessageDialog(null,"Gano yo, mas suerte en la proxima!");

    res=JOptionPane.showInputDialog("Queres intentar otra vez?");
    if (res.equalsIgnoreCase("si")){
    JOptionPane.showMessageDialog(null,"Sin problemas, ingrese nueva Aposta");
    jButton5.setVisible(true);
    jButton5.validate();
    jLabel1.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel2.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel3.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel11.setIcon(new ImageIcon(getClass().getResource("")));
    jLabel12.setIcon(new ImageIcon(getClass().getResource("")));
    scoreC=0;
    scoreP=0;
    score1 = Double.toString(scoreP);
    score2 = Double.toString(scoreC);
    jTextField3.setText(score1);
    jTextField4.setText(score2); }

    else if(res.equalsIgnoreCase("no")){
    JOptionPane.showMessageDialog(null,"Bueno, Hasta la proxima! Adios");
    System.exit(0);
    }else{JOptionPane.showMessageDialog(null,"Respuesta Invalida");}}

if(scoreP>scoreC&&scoreP<=21){JOptionPane.showMessageDialog(null,"Felicitaciones, Ganaste!");
    Billetera=Billetera+Amount*2;
    BilleteraT = Double.toString(Billetera); 
    jTextField2.setText(BilleteraT);

    res=JOptionPane.showInputDialog("Queres intentar otra vez?");
    if (res.equalsIgnoreCase("si")){
    JOptionPane.showMessageDialog(null,"Sin problemas, ingrese nueva Aposta");
    jButton5.setVisible(true);
    jButton5.validate();
    jLabel1.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel2.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel3.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel11.setIcon(new ImageIcon(getClass().getResource("")));
    jLabel12.setIcon(new ImageIcon(getClass().getResource("")));
    scoreC=0;
    scoreP=0;
    score1 = Double.toString(scoreP);
    score2 = Double.toString(scoreC);
    jTextField3.setText(score1);
    jTextField4.setText(score2);}

    else if(res.equalsIgnoreCase("no")){
    JOptionPane.showMessageDialog(null,"Bueno, Hasta la proxima! Adios");
    System.exit(0);
    }else{JOptionPane.showMessageDialog(null,"Respuesta Invalida");}}


if(scoreP==scoreC&&scoreP<=21){JOptionPane.showMessageDialog(null,"Es un Empate!");

    res=JOptionPane.showInputDialog("Queres jugar de nuevo?");
    if (res.equalsIgnoreCase("si")){
    JOptionPane.showMessageDialog(null,"Sin problemas, ingrese nueva Aposta");
    jButton5.setVisible(true);
    jButton5.validate();
    jLabel1.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel2.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel3.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel11.setIcon(new ImageIcon(getClass().getResource("")));
    jLabel12.setIcon(new ImageIcon(getClass().getResource("")));
    scoreC=0;
    scoreP=0;
    score1 = Double.toString(scoreP);
    score2 = Double.toString(scoreC);
    jTextField3.setText(score1);
    jTextField4.setText(score2); } 

    else if(res.equalsIgnoreCase("no")){
    JOptionPane.showMessageDialog(null,"Bueno, Hasta la proxima! Adios");
    System.exit(0);
    }else{JOptionPane.showMessageDialog(null,"Respuesta Invalida");}
    }

}
} 
}                                        
 /** DESISTIR BUTTON  */
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    if (step1=true && Billetera>0){
    JOptionPane.showMessageDialog(null,"Bueno, mas suerte en la proxima!");

    res=JOptionPane.showInputDialog("Queres intentar otra vez?");
    if (res.equalsIgnoreCase("si")){
    JOptionPane.showMessageDialog(null,"Sin problemas, ingrese nueva Aposta");
    jButton5.setVisible(true);
    jButton5.validate();
    jLabel1.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel2.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel3.setIcon(new ImageIcon(getClass().getResource("/img/back.png")));
    jLabel11.setIcon(new ImageIcon(getClass().getResource("")));
    jLabel12.setIcon(new ImageIcon(getClass().getResource("")));
    scoreC=0;
    scoreP=0;
    score1 = Double.toString(scoreP);
    score2 = Double.toString(scoreC);
    jTextField3.setText(score1);
    jTextField4.setText(score2); }

    else if(res.equalsIgnoreCase("no")){
    JOptionPane.showMessageDialog(null,"Bueno, Hasta la proxima! Adios");
    System.exit(0);
    }else{JOptionPane.showMessageDialog(null,"Respuesta Invalida");}}    
} 

1 Ответ

0 голосов
/ 17 декабря 2018

У меня нет компилятора поблизости, но вот ошибка, которую я увидел, читая ваш код.

Где вы декларируете: card = new int [53];Он создает массив из 0-52, который на самом деле составляет 53 значения, поэтому предполагается, что у вас есть 53 карты.Правильное объявление будет: card = new int [52];Потому что таким образом он создает массив из 0-51, который составляет 52 значения.

...