【发布时间】:2021-12-05 13:21:51
【问题描述】:
我正在学习编程课程 (C#)。现在我正在做一个任务,我将创建一个 Dart 301 游戏的一个版本。
我基本上完成了游戏,但想根据正在玩的玩家更改文本颜色。这并不是真正必要的,它没有被列为你应该做的事情,但在我脑子里有了这个想法之后,我也不能放手,哈哈。我真的只是想知道怎么做,现在一直在尝试不同的解决方案。
游戏开始时,您必须选择玩多少玩家。如果它是 1 个玩家,它会与计算机对战,然后我解决了在我的 foreach 循环中添加前景色的变化 - 例如:
Console.ForegroundColor = ConsoleColor.DarkCyan;
但是当游戏中有多个玩家时,我就卡住了。
理想情况下,我想为每个加入游戏的玩家分配一种颜色。玩家通过我创建的 AddPlayer 方法添加,然后存储在 Game 类的玩家列表中。还有一个 Player 类,其中包含每个玩家的回合列表。
到目前为止我尝试过的是
- 为随机颜色创建方法(这并不理想,因为我希望为每个玩家分配特定颜色):
private static ConsoleColor GetRandomColor()
{
Random randomColor = new Random();
var consoleColors = Enum.GetValues(typeof(ConsoleColor));
return (ConsoleColor)consoleColors.GetValue(randomColor.Next(consoleColors.Length));
}
- 在 foreach 循环中,然后更改列表中每个玩家的颜色
foreach (var player in ListOfPlayers)
{
for (int i =0; i <= ListOfPlayers.Count -1; i++)
{
Console.ForegroundColor = GetRandomColor();
}
Console.WriteLine("\n\t{0} it's your turn! What numbers did your arrows hit? " +
"\n\tREMEMBER: Each turn includes three throws with a possible score of 1-20 for each arrow. \n", player);
arrowOne = GetPlayerThrow();
arrowTwo = GetPlayerThrow();
arrowThree = GetPlayerThrow();
player.AddTurn(arrowOne, arrowTwo, arrowThree);
totalScore = player.CalculatePoints();
}
- 我也尝试过不同类型的 if 和 foreach
希望我的解释没有变得太混乱。我更愿意为列表中的特定玩家分配颜色。
例如:
private List <Player> ListOfPlayers = new List <Player> ();
List item 0 如果此播放器存在,则文字将显示为 DarkYellow。
List item 1 如果此播放器存在,文本将以 DarkCyan 显示。
列表项 2 如果此播放器存在,文本将出现在 DarkMagneta 中。
列表项 3 如果此播放器存在,文本将显示为深绿色。
【问题讨论】:
-
创建一个
ConsoleColor数组并用所需的颜色填充它。然后在添加玩家时,为他们分配数组中的下一个颜色。您可以使用ListOfPlayers列表中的玩家索引来选择颜色。