Как перебрать всех игроков, а затем начать снова? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть функция NewTurn (), которая устанавливает следующего игрока.В настоящее время я использую if-else для смены игроков:

if (p == players[0]) 
{ 
    p = players[1]; 
}
else 
{ 
    p = players[0]; 
}

Что если я хочу 3 игрока?Нет ли более простого способа написать это с помощью%.

1 Ответ

5 голосов
/ 07 марта 2019

Одно простое решение - иметь playerCounter, который просто увеличивается с каждым разом, когда вы просите следующего игрока. Затем вы выбираете игрока, используя playerCounter % players.Length. Это будет работать для любого количества игроков в массиве players.

Например:

private static int playerCounter = 0;
private static string[] players = { "John", "Mary", "Randy", "Martha" };

private static string GetNextPlayer()
{
    return players[playerCounter++ % players.Length];
}

private static void Main(string[] args)
{
    while (true)
    {
        var player = GetNextPlayer();
        Console.WriteLine($"Current player is: {player}");
        Console.Write("Press any key to move to the next player...");
        Console.ReadKey();
        Console.WriteLine('\n');
    }
}

выход

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...