C# 骰子循环,如果6,再次掷骰

C# 骰子循环,如果6,再次掷骰,c#,loops,dice,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

刚到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,将再次掷骰。

不是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);
} 
Random dice Random=new Random();
对于(inti=1;i

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();
}

for(int player=1;player正如其他人所指出的,问题在于,随机数
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--;
}

首先,你当然可以算出你需要调用DiceThrow=DiceRandom。接下来(1,7);每次……如果你设置一个变量(在任何语言中),你希望它有什么值?@MitchWheat这对新手来说不一定很明显。这行
int DiceThrow=DiceRandom。接下来(1,7)
可以被视为函数的内联定义,如果你对C#和编程不是很熟悉的话。@Jeff:简单变量赋值更可能是由初学者而不是函数委托人来承担的。对吗?@MitchWheat可能更可能,但比编码更熟悉数学的人可以合理地承担这个任务声明为声明等价性而不是赋值。我只能为自己说:我有纯数学学位。我记得学习编程。首先想到的肯定是变量赋值。OP要求玩家掷骰6时掷骰多次。这种内循环是实现它的一种方法。是的,更好的版本是这样的将有
int骰子掷骰;while((DiceThrow=DiceRandom.Next(1,7))!=6{
但即使这样做也相当笨拙…@Jeff以这种方式使用while循环也不会进入循环来显示掷骰。这将非常笨拙。我知道人们在
while(1)方面总是处于两个阵营循环,但我在专业意义上经常遇到它们。在C++中,我将使用<代码> do{{}()<代码>构造,但我不确定C是否有这个。通常修改循环变量的做法并不好。@paddy是的,我倾向于同意你的观点,但另一种选择是嵌套for循环(也不受欢迎,但我承认可能不那么受欢迎)或带有非常复杂表达式的while循环,如
while(玩家我选择使用此代码Jeff,非常感谢,效果非常好。现在,因为这是我正在制作的一个游戏,玩家在每轮结束时将分数相加(我会说一轮是一个骰子,不包括6个)在每一轮结束时,我如何显示累积分数,然后再显示另一轮?@user1890490我很高兴你发现它很有用(尽管我强烈建议阅读我的答案和paddy的答案的编辑,以及那里的评论)。我建议另外一个关于分数的问题-关于堆栈溢出的问题通常应保持单一主题。此外-请接受您认为最有用的答案:)
int i = 1;
while(i <= 4) {
    DiceThrow = DiceRandom.Next(1,7);
    Console.WriteLine("Player " + i + " rolled a " + DiceThrow);
    Console.ReadLine();
    if(DiceThrow != 6) i++;
}