两个玩家之间的骰子游戏。赢得21首胜利的玩家

时间:2019-02-04 02:23:37

标签: java

两个玩家之间有一场比赛,第一个获得21分的玩家获胜。 当两个玩家相同的掷骰数达到21时,就会平局。

随着骰子的滚动,这些点相加。

其格式应如下。

*游戏1 *

 Roll              Player 1         Player 2

1               5                 4

2               7                 10

3               12                14

4               13                16

5               19                21
  player 2 wins!

以下代码是到目前为止我尝试过的代码。

我被困住了,因为我不知道如何创建上面的图表。

如果我尝试在while循环内制作图表,它将反复制作图表。

如果我尝试在while循环之后的while循环之外制作图表,它将

仅当其中一位玩家达到21分时执行。

有人可以帮助我制作此代码吗?

 import java.util.*;


public class Dice {
public static void main(String[] args) {

  Scanner input = new Scanner(System.in);
  Random rand = new Random();

  System.out.println("How many games do you want to play?");
  int games= input.nextInt();

  System.out.println(" *** Game 1 *** ");
  int sum1=0;
  int sum2=0;
  while (sum1!=21&&sum2!=21){
     int roll1 = rand.nextInt(6) + 1;
     int roll2 = rand.nextInt(6) + 1;

     sum1=+roll1;
     sum2=+roll2;
  }

  if(sum1>sum2){

     System.out.println("player 1 wins");
  }

  else if(sum1<sum2){
     System.out.println("player 2 wins");
     }

   }

}

2 个答案:

答案 0 :(得分:0)

如果要每转打印一次,则需要在while循环内打印。这是具有这种功能的示例片段。当然,这不是一个完整的程序,可能会使用一些格式设置。

int sum1 = 0;
int sum2 = 0;
int round = 1;
while(sum1 < 21 && sum2 < 21) { // not sure if you noticed this bug in your code..
    sum1 += rand.nextInt(6) + 1;
    sum2 += rand.nextInt(6) + 1;

    System.out.println("Round " + round + " " + sum1 + " " + sum2);
    round++;
}

答案 1 :(得分:0)

一些问题

  1. 您要测试sum1sum2小于21 不是 !=
  2. 您应该使用+=而不是=+
  3. 推出了面包卷柜台

注意 我认为您的逻辑是不正确的,但是如果两者都在同一投掷次数上到达21,该怎么办?

    System.out.println(" *** Game 1 *** ");
    int sum1=0;
    int sum2=0;
    int rollNumber = 1;
    System.out.println("Roll\tPlayer 1\tPlayer 2");
    while (sum1 < 21 && sum2 < 21){
         int roll1 = rand.nextInt(6) + 1;
         int roll2 = rand.nextInt(6) + 1;

         sum1 += roll1;
         sum2 += roll2;

         if (sum1 > 21) sum1 = 21;
         if (sum2 > 21) sum2 = 21;

         System.out.format("%d\t%d\t%d%n", rollNumber++, sum1, sum2);
    }

    if(sum1>sum2){

         System.out.println("player 1 wins");
    }
    else if(sum1<sum2){
         System.out.println("player 2 wins");
    }

    }

输出

 *** Game 1 *** 
Roll    Player 1    Player 2
1   5   4
2   4   5
3   2   3
4   3   1
5   3   3
6   2   3
7   5   6
player 2 wins