问题
我们在课堂上介绍的基本游戏规则可归纳如下。骰子的第一卷以赢或输或者继续掷骰子的要求结束。如果第一次掷骰是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为什么。帮助我!
答案 0 :(得分:0)
无法正常运作的一个原因是您需要设置&#39; point = d&#39;当你进入默认部分。目前,您将点设置为零,然后将其与目标点进行比较。
无法解决时间的原因是您已在示例中注释掉它。
就问题1而言:请注意&#39;总计&#39;永远不会更新。它始终保留为0。