Я думаю, вам нужно связать цвета с игроками в начале программы, и помнить об этом всюду по программе. Затем, когда конкретный игрок говорит , вы устанавливаете цвет консоли, а после разговора возвращаете его обратно.
Допустим, у вас есть простой класс Player
, например:
public class Player
{
public string Name { get; set; }
public ConsoleColor Color { get; set; }
public void Speak(string speech)
{
Console.ForegroundColor = Color;
Console.WriteLine(speech);
Console.ForegroundColor = ConsoleColor.White;
}
}
Теперь у каждого игрока есть ассоциированные Name
и ConsoleColor
, и всякий раз, когда вызывается Speak()
, консоль будет настраиваться на цвет этого игрока, записывать речь, а затем возвращать ее в белый цвет (предполагая, что белый цвет по умолчанию).
В вашей основной программе теперь вы, вероятно, можете запросить Name
и Color
.
static void Main(string[] args)
{
var player = new Player();
Console.Write("Enter Name : ");
var name = Console.ReadLine();
player.Name = name;
Console.WriteLine("First of all select your color!");
Console.WriteLine("Type 1 for Blue");
Console.WriteLine("Type 2 for Green");
ConsoleKeyInfo keyInfo = Console.ReadKey();
if (keyInfo.KeyChar == '1')
{
player.Color = ConsoleColor.Blue;
}
if (keyInfo.KeyChar == '2')
{
player.Color = ConsoleColor.Green;
}
player.Speak(string.Format("You have chosen {0}", player.Color.ToString()));
Console.ReadLine();
}
Теперь вы можете расширить эту идею, и в начале игры спросите имена и цвета многих игроков. Затем сохраните их в List<Player>
и используйте их повсюду.
EDIT
Вы даже можете включить получение информации от пользователя в класс Player
, чтобы он был более чистым и менее подверженным ошибкам. Вы бы включили этот метод в класс Player
:
public void GetPlayerInfo()
{
Console.Write("Enter Name : ");
Name = Console.ReadLine();
Console.WriteLine();
Console.WriteLine("Pick a Color : ");
Console.WriteLine("1 : Red");
Console.WriteLine("2 : Blue");
Console.WriteLine("3 : Green");
var key = Console.ReadLine();
switch (key)
{
case "1":
Color = ConsoleColor.Red;
break;
case "2":
Color = ConsoleColor.Blue;
break;
case "3":
Color = ConsoleColor.Green;
break;
default:
Color = ConsoleColor.White;
break;
}
Console.WriteLine();
}
Тогда на главном конце все, что вам нужно сделать, это вызвать метод:
static void Main(string[] args)
{
var player1 = new Player();
player1.GetPlayerInfo();
player1.Speak(string.Format("You have chosen {0}", player1.Color.ToString()));
var player2 = new Player();
player2.GetPlayerInfo();
player2.Speak(string.Format("You have chosen {0}", player2.Color.ToString()));
Console.ReadLine();
}