骰子循环,将不同的卷加在一起

时间:2012-12-10 02:46:50

标签: c# dice

我怎样才能显示每位玩家在每轮结束时投出的分数? (我将每轮1轮投1轮)

顺便提一下,如果玩家掷出6,他们会再次滚动。

Console.WriteLine("Player 1, enter your name");
PlayerOne = Console.ReadLine();
Console.WriteLine("Player 2, enter your name");
PlayerTwo = Console.ReadLine();
Console.WriteLine("Player 3, enter your name");
PlayerThree = Console.ReadLine();
Console.WriteLine("Player 4, enter your name");
PlayerFour = Console.ReadLine();

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


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

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

2 个答案:

答案 0 :(得分:0)

你有什么可以保持球员得到的价值吗?简单的事情,例如player1Scoreplayer2Score等。

还要求for循环中的if语句 (if i==1){player1Score = player1Score + DiceThrow})等会创造奇迹。

答案 1 :(得分:0)

这里有一个如何做的小例子,好一点。很多东西都在那里,你可能还不知道。我给你答案的原因是为你提供足够的新东西来自己检查。

Random diceRandom = new Random();
var scores = new int[4];
for (int i = 0; i < 4; i++)
{
    do
    {
        var roll = diceRandom.Next(1, 7);
        Console.WriteLine("Player " + (i + 1) + " rolled a " + roll);
        Console.ReadLine();
        if(roll != 6)
            score[i] += roll;
    }while(roll == 6);
}

// results
for(int i = 0; i < 4; i++)
{
    Console.WriteLine(String.Format("Player {0} scored {1}", i, scores[i]));
    Console.ReadLine();
}

快速回顾一下:

  • 修改循环计数器通常是不好的做法,应该避免,所以我使用嵌套的do / while循环。
  • 我使用数组来存储每个玩家得分,在数组中本身保持4个整数,每个玩家得分为1。这使得迭代它非常容易和简单。
  • 前一点是for循环通常从0开始而不是1开始的主要原因之一,因为数组中的第一个索引是[0],因此具有4个元素的数组具有索引0,1,2 ,3。这一点很重要。
  • 在结果部分中,我使用了一个名为Format的String类中的方法,您可以在其中使用完整的文本并添加占位符,以便填充变量的值。 {0}是第一个参数,{1}是第二个参数。依此类推。