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,我将再次滚动。
答案 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++;
}