-1

我如何能够显示每个玩家在每轮结束时投出的分数?(我将 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();
4

2 回答 2

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 个整数,每个整数代表每个球员的得分。这使得迭代它变得非常容易和简单。
  • 前一点是 for 循环通常从 0 而不是 1 开始的主要原因之一,因为数组中的第一个索引是 [0],因此具有 4 个元素的数组的索引为 0、1、2、3。记住这一点很重要。
  • 在结果部分,我使用了 String 类中的一个方法Format,您可以在其中使用完整的文本并添加要填充变量值的占位符。{0} 是第一个参数,{1} 是第二个参数,依此类推。
于 2012-12-10T15:15:09.220 回答
0

你有什么东西可以保持玩家获得的价值吗?一些简单的东西,比如player1Scoreplayer2Score等等。

在 for 循环中询问 (if i==1){player1Score = player1Score + DiceThrow})etc 的 if 语句也会产生奇迹。

于 2012-12-10T10:22:39.523 回答