当前位置: 首页 > 知识库问答 >
问题:

一个模拟骰子游戏的java

鲁羽
2023-03-14

该程序应模拟滚动两个骰子,并计算和。添加一个循环,使程序可以玩10,000个游戏。添加计数器,计算玩家赢了多少次,输了多少次。在10,000场比赛结束时,计算获胜的概率[即赢/(赢+输)]并输出该值。从长远来看,谁会赢得最多的比赛,你还是房子?注意:要生成一个随机数x,其中0x≤<1,使用x=math.random();例如,乘以6并转换为一个整数,结果是一个介于0和5之间的整数。

public class Dice 
{
    public static void main(String[]args)
    {
        //declaring variables
        int comeOutRoll1, comeOutRoll2;
        int roll1, roll2;
        int numW, numL;
        int sum, sum2 = 0;
        int thePoint = 0;
        double probability; 


        //initializing variables
        comeOutRoll1 = (int)(Math.random()*5);
        comeOutRoll2 = (int)(Math.random()*5);
        sum = comeOutRoll1 + comeOutRoll2;
        numW = 0;
        numL = 0;


        for(int timesPlayed = 0; timesPlayed <= 10000; timesPlayed++)
        {

            switch(sum)
            {
            //adds how many wins and losses
            case 2:
                numL = numL +1;
                break;
            case 3:
                numL = numL + 1;
                break;
            case 12:
                numL = numL + 1;
            break;
            case 7:
                numW = numW +1;
                break;
            case 11:
                numW = numW +1;
                break;
            case 4:
                thePoint = sum;
                break;
            case 5:
                thePoint = sum;
                break;
            case 6:
                thePoint = sum;
                break;
            case 8:
                thePoint = sum;
                break;
            case 9:
                thePoint = sum;
                break;
            case 10:
                thePoint = sum;
            break;
            //if not any of these cases roll again
            default:

                roll1 = (int)(Math.random()*5);
                roll2 = (int)(Math.random()*5);
                sum2 = roll1 + roll2;
                break;
            }

            if(sum2 == thePoint)
            {
                numW = numW +1;
            }
            else if(sum2 == 7)
            {
                numL = numL +1;
            }
        }


        probability = (numW/(numW+numL));

        System.out.println("Number of Wins: " + numW);
        System.out.println("Number of Losses: " + numL);
        System.out.println("The probability of winning is: " + probability + " percent");   


    }

}

共有1个答案

孙梓
2023-03-14

2个问题...

  1. 你只分析1(随机)出来滚。您需要在整个游戏中循环10000次,而不仅仅是次轮,次轮只能循环到得到结果为止。
  2. 您正在进行整数除法(截断后留下一个整数)。使用浮点数学,将其中一个数字转换为floatdouble。IEprobability=(float)numw/(numw+numl);

在伪代码中,使用helper方法:

// returns the random integer between 1 and 6 inclusive
method rollDie()

// returns the sum of a random roll of 2 dice
method rollDice()
    return rollDie() + rollDie() 

// return true if the player won given the point
method won(point)
    roll = rollDice()
    if roll == 7 return false
    if roll == point return true
    return won(point)

// main
define wins variable (you don't need a losses variable. losses = 10000 - wins 
loop 10000 times {
    comeOut = rollDice()
    if comeOut in (7, 11) or (comeOut not in (2, 3 or 12) and won(comeOut))
        wins++
}
probability = (float)wins/10000
 类似资料:
  • 我是一个C++初学者,我需要创建一个骰子游戏模拟掷两个骰子。我对头文件的使用感到很困惑。但首先,为什么我需要返回骰子的票面号码?其次,int roll函数做什么?来重置价值观和面孔?如果是,默认值是多少?而最后一个函数骰子(int n),我是否使用这个函数来控制骰子值的最大总和?函数必须有一个具有以下函数的类头文件:

  • 对不起...这可能是愚蠢的问题,但我是Java的初学者 我应该创建一个骰子滚动游戏。规则很简单,如果计算机的数字比玩家多,那么计算机赢,如果玩家的数字多,那么玩家赢。我必须使用If语句创建这个…但是我得到了一个错误,说“非静态变量不能从静态上下文引用”,也得到了一个错误,说“不能找到符号赢家”,我不知道如何做到这一点…非常感谢你的帮助。

  • 有人能在这里给我指个正确的方向吗?我的游戏工作完美,但我想添加一些实际的互动/目标。谢谢

  • 我正在创建一个骰子游戏,其中2个玩家有他们自己的骰子,每个人都有自己的轮到扔他的骰子,玩家可以完全失去分数或获得分数取决于他们站在窗口的位置,游戏结束时,任何一个玩家首先站在终点车道上,获胜者是得分最高的玩家,我已经在游戏的设计到目前为止,但还没有在逻辑上工作。 这个链接是游戏应该是什么样子的图片: 我想知道我如何才能添加球员1和球员2在每个瓷砖上面的照片,所以基本上每次当一个球员玩他的回合,我希

  • 提示:“写一个程序对着电脑玩猪游戏。在每个回合,当前玩家将掷出一对骰子并累积点数。目标是在你的对手之前达到100分或更多。(为了测试的目的,使用30点而不是100点)如果在任何回合中,玩家掷出一个1,则该回合积累的所有点数都将被没收,骰子的控制权将转移到另一个玩家身上。如果玩家在一个回合中滚动两个1,则该玩家失去迄今为止积累的所有点数,控制权转移到另一个玩家身上。玩家可以在每次掷骰后自愿交出骰子的

  • 我对C#和一般编码都是新手。为了提高我的技能,我试图创建一个基本的游戏,两个玩家掷骰子,并记录他们的得分。玩家达到20分即获胜。每个玩家轮流掷一个骰子,把他们的第一个骰子加到他们的第二个骰子上,以此类推,直到其中一个达到20。如果玩家掷出一个六,他们可以再次掷骰子。 任何帮助都将不胜感激。