java程序要求用户滚动骰子,我在这里遇到麻烦

时间:2017-03-07 01:21:38

标签: java

问题

我们在课堂上介绍的基本游戏规则可归纳如下。骰子的第一卷以赢或输或者继续掷骰子的要求结束。如果第一次掷骰是7或11则是胜利。如果第一卷是2,3或12,则是亏损。对于任何其他总数(被调用的点),你必须重新抛出骰子,直到你重复该点或抛出一个7.如果重新抛出产生7,那就是一个损失。如果重新抛出产生这一点就是胜利。如果两者都没有发生,你必须继续重新抛出。

public class CrapsGame{


public static void main(String[] args) {

公共类CrapsGame {    public static void main(String [] args){

int time; //number of times the game user want to play
int rolls=0; //number of rolls
int mypoint=0; 
int d1; //number user rolled for first dice
int d2; //number user rolled for second dice
int total=0; //total number of rolls 
int Numwins=0; //number of wins
int Numlosses = 0; //number of losses
double averolls=0;  //average number of rolls per game
double probwin=0; //probability of win
boolean win, rollagain=false;                  

win = false;
System.out.println("Enter the number of times the game you want to play: ");
time=TextIO.getlnInt();   



 for (int i=0; i<time; i++){
      d1=(int)(6*Math.random())+1; //user roll dice(generate a random number)
      d2=(int)(6*Math.random())+1;      
      rolls =0; 
   switch (d1+d2) {
      case 7: 
      case 11:
        win=true; //when first roll is 7 or 11, player win
        break;
      case 2: 
      case 3: 
      case 12:
        win=false; //when first roll is 2,3 or 12, player lose
        break;
      default:
        mypoint = d1+d2;
        rollagain=true; //when first roll is 1,4,5,6,8,9,10 or 11, player rethrow dice      
   }
        do{
          d1=(int)(6*Math.random())+1;
          d2=(int)(6*Math.random())+1;
           System.out.printf("%d and %d\n",d1,d2);
          rolls++;
          total = total + rolls;
          if (d1+d2 == mypoint ){
            win=true;
            rollagain=false;           
          }
          else if ( d1+d2 == 7){
            win=false;
            rollagain=false;           
          }
        } while(rollagain);


}

if (win){
  System.out.printf("***WINNER***\n");
  Numwins++;}
else {
  System.out.printf("YOU LOSE\n");
 Numlosses++;}


probwin = Numwins / time;
averolls = total / time ;

System.out.printf("Avg # rolls: %.2f\n",averolls);
System.out.printf("Max # rolls: %d\n",rolls);
System.out.printf("# of wins: %d\n",Numwins);
System.out.printf("# of losses: %d\n",Numlosses);
System.out.printf("The probability of a win: %.2f.\n",probwin);




 }

}Thats all i have so far. My questions are 

1.为什么该计划不计算每场比赛的平均数,胜利数和失利数?

2.程序需要在开始时询问用户他们想要玩多少游戏。然后我决定使用for循环,但它说时间不能解析为变量。发生了什么事。

3.在第一次滚动之后,如果用户第一次掷出相同的enter code here号码,他们就赢了比赛。但我的代码没有这样做。 idk为什么。帮助我!

1 个答案:

答案 0 :(得分:0)

无法正常运作的一个原因是您需要设置&#39; point = d&#39;当你进入默认部分。目前,您将点设置为零,然后将其与目标点进行比较。

无法解决时间的原因是您已在示例中注释掉它。

就问题1而言:请注意&#39;总计&#39;永远不会更新。它始终保留为0。