2016-05-18 11 views
0

私はクラスのこの課題に取り組んでいます。これはJavaクラスで、2つのサイコロを振って追加して、あなたのターンスコアに追加するゲームを作るはずです。それから、あなたが遊び続けるかどうか聞いてきます。あなたのターンスコアが20に達するか、またはあなたが合格すると、それはコンピュータに行きます。それは各ターンの得点を印刷することになっています。そして誰かが100ポイントを当てたら勝者を発表します。しかし、何回でも、各ターンの最後のスコアは0で、何回何回実行しても問題ありません。プレイヤーが1をロールすると、そのターンの得点はキャンセルされ、それは他のプレイヤーに移り、ダブル1を倒すと、それまでのゲームのポイントはすべて失われます。ここで私のコードは、スコア変数が更新されない理由を理解できますか?ありがとうございました。なぜそれが正しく解決されていないのかわかりません

import java.util.Scanner; 
import java.util.Random; 
public class PlayPig { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Scanner scan = new Scanner(System.in); 
     int player1 = 0; 
     int player2 = 0; 
     int a, b, c, player1turn, player2turn, input; 
     int pig = 1; 
     Random r = new Random(); 
     do{ 
      do { 
       player1turn=0; 
       a = r.nextInt(6)+1; 
       b = r.nextInt(6)+1; 
        if(a==1 || b==1){ 
         if (a == 1 && b == 1){ 
          player1=0; 
          break;} 
         else if (a==1 || b==1){ 
          player1turn=0; 
          break;} 
        else { 
         player1turn= a+b ; 
         }} 
        player1= player1+player1turn; 
       System.out.println("Player1 score is " + player1 + " and player2 score is " + player2); 
       System.out.print("Do you want to keep playing? Enter 1 to continue. Enter any other number to pass."); 
       input = scan.nextInt(); 
        if (input != 1) 
         break; 
      } 
      while  
       (player1turn <= 20); 
      do{ 
       player2turn=0; 
       a = r.nextInt(6)+1; 
       b = r.nextInt(6)+1; 
       if(a==1 || b==1){ 
        if (a == 1 && b == 1){ 
         player2=0; 
         break;} 
        else if (a==1 || b==1){ 
         player2turn=0; 
         break;} 
       else { 
        player1turn= a+b ; 
        player2= player2+player2turn;}} 
      } 
      while 
       (player2turn<=20); 
     } 
     while 
      (player1 < 100 || player2 < 100); 
     if (player1>player2) 
      System.out.print("Player 1 wins"); 
     else 
      System.out.print("Player 2 wins"); 

}} 
+0

:あなたはこれを試すことができます –

答えて

1

主な問題は、現在のスコアが割り当てられているあなたのelse条件が間違ってブロックしていたということでした。 (これらのもの):

else { 
    player1turn = a+b ; 
} 

は、このコードを試してみてください。

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Scanner scan = new Scanner(System.in); 
    int player1 = 0; 
    int player2 = 0; 
    int a, b, c, player1turn, player2turn, input;   
    int pig = 1; 
    Random r = new Random(); 
    do{ 

     do { 

      player1turn=0; 
      a = r.nextInt(6)+1; 
      b = r.nextInt(6)+1; 
       if(a==1 || b==1){ 
        if (a == 1 && b == 1){ 
         player1 = 0; 
         break; 
        } 
        else if (a==1 || b==1){ 
         player1turn=0; 
         break; 
        } 
       }else { 
        player1turn = a+b ; 
       } 
      player1 += player1turn; 
      System.out.println("Player1 score is " + player1 + " and player2 score is " + player2); 
      System.out.print("Do you want to keep playing? Enter 1 to continue. Enter any other number to pass."); 
      input = scan.nextInt(); 
       if (input != 1){ 
        break; 
       } 
     } while (player1turn <= 20); 

     do{ 
      player2turn=0; 
      a = r.nextInt(6)+1; 
      b = r.nextInt(6)+1; 

      if(a==1 || b==1){ 
       if (a == 1 && b == 1){ 
        player2=0; 
        break; 
       } else if (a==1 || b==1){ 
        player2turn=0; 
        break; 
       }    
      }else { 
       player2turn = a+b ; 
       player2 += player2turn; 
      } 

     }while (player2turn<=20); 

    } while (player1 < 100 || player2 < 100); 
    if (player1>player2) 
     System.out.print("Player 1 wins"); 
    else 
     System.out.print("Player 2 wins"); 

} 
0

私は、もしループを変更しました。あなたは `player2turn = A + B`を使用することを意図したときに、` player1turn = A + B`を使用するプログラムのごplayer2部に

import java.util.Scanner; 
import java.util.Random; 
public class PlayPig { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Scanner scan = new Scanner(System.in); 
    int player1 = 0; 
    int player2 = 0; 
    int a, b, c, player1turn, player2turn, input; 
    int pig = 1; 
    Random r = new Random(); 
    do{ 
     do { 
      player1turn=0; 
      a = r.nextInt(6)+1; 
      b = r.nextInt(6)+1; 
       if (a == 1 && b == 1){ 
         player1=0; 
         break; 
       } 
       else if((a== 1 && b!= 1) || (a!=1 && b== 1){ 
        player1turn=0; 
        break; 
       } 
       else{ 
        player1turn= a+b ; 
       } 
       player1= player1+player1turn; 
      System.out.println("Player1 score is " + player1 + " and player2   score is " + player2); 
      System.out.print("Do you want to keep playing? Enter 1 to  continue. Enter any other number to pass."); 
      input = scan.nextInt(); 
       if (input != 1) 
        break; 
     } 
     while  
      (player1turn <= 20); 
     do{ 
      player2turn=0; 
      a = r.nextInt(6)+1; 
      b = r.nextInt(6)+1; 
      if (a == 1 && b == 1){ 
         player2=0; 
         break; 
       } 
       else if((a== 1 && b!= 1) || (a!=1 && b== 1){ 
        player2turn=0; 
        break; 
       } 
       else{ 
        player2turn= a+b ; 
       } 
       player2= player2+player2turn; 
     } 
     while 
      (player2turn<=20); 
    } 
    while 
     (player1 < 100 || player2 < 100); 
    if (player1>player2) 
     System.out.print("Player 1 wins"); 
    else 
     System.out.print("Player 2 wins"); 

}} 
関連する問題