骰子循环,再次滚动,如果6

时间:2012-12-10 02:12:25

标签: c# loops dice

C#的新手很抱歉,如果这很愚蠢。

到目前为止,关于我的骰子,我有以下代码:

Random DiceRandom = new Random();
int DiceThrow = DiceRandom.Next(1, 7);
Console.WriteLine(DiceThrow);
Console.ReadLine();

Console.WriteLine("Player 1 rolled a " + DiceThrow);
Console.ReadLine();

Console.WriteLine("Player 2 rolled a " + DiceThrow);
Console.ReadLine();

Console.WriteLine("Player 3 rolled a " + DiceThrow);
Console.ReadLine();

Console.WriteLine("Player 4 rolled a " + DiceThrow);
Console.ReadLine();

现在,这会创建一个很好的数字并显示它,但每个玩家的数字都是相同的。

我需要一个循环,为每个玩家重复滚动,如果玩家掷出6,我将再次滚动。

3 个答案:

答案 0 :(得分:2)

怎么样:

for( int player = 1; player <= 4; player++ )
{
    while(1) {
        int DiceThrow = DiceRandom.Next(1, 7);
        Console.WriteLine( "Player " + player + " rolled a " + DiceThrow );
        if( DiceThrow < 6 ) break;
    }
    Console.ReadLine();
}

答案 1 :(得分:0)

不是100%确定读取线等等。但实质上,每次打印时都会引用相同的骰子。你需要做的是每次都产生一个新的掷骰(通过DiceRandom.Next(1,7))。

Random DiceRandom = new Random();

for (int i = 1; i <= 4; i++) {
    var roll = DiceRandom.Next(1,7);
    Console.WriteLine("Player 1 rolled a " + roll);
} 

答案 2 :(得分:0)

正如其他人所指出的那样,问题在于每次使用时都不会刷新随机数DiceThrow。您可以在不使用循环的情况下修复此问题,但不要这样做。你确实需要一个循环,可能看起来像这样:

for(int i = 1; i <= 4; i++) {
    DiceThrow = DiceRandom.Next(1,7);
    Console.WriteLine("Player " + i + " rolled a " + DiceThrow);
    Console.ReadLine();
    if(DiceThrow == 6) i--;
}

最后一行有点模糊,但是提供&#34;重新开始6&#34;需求。由于循环每次递增i,递减它将有效地使循环再次为同一个玩家。

编辑:实际上,使用while循环的更明确的版本如下:

int i = 1;
while(i <= 4) {
    DiceThrow = DiceRandom.Next(1,7);
    Console.WriteLine("Player " + i + " rolled a " + DiceThrow);
    Console.ReadLine();
    if(DiceThrow != 6) i++;
}