2016-05-18 127 views
0

所以,我正在为这个课程进行这项任务。这是一个Java类,我应该制作一个游戏,它会掷出两个骰子,将它们加起来,并将它们添加到轮到分数中。然后问你是否想继续玩。当你的回合得分达到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

在您使用的程序的一部分player2'player1turn = A + B'当你想用'player2turn = A + B' –

回答

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

我已经修改了,如果循环。 你可以试试这个:

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

}} 
相关问题