проблема с while Loops C # - PullRequest
       4

проблема с while Loops C #

0 голосов
/ 25 сентября 2019

У меня есть программа «Ножницы из каменной бумаги», которая запрашивает ваш ввод, делает случайный ввод ЦП, сравнивает их и затем объявляет победителя этого раунда.Я попытался сделать цикл, в котором по окончании раунда он проигрывается снова, пока кто-то не достигнет 3 очков.После того, как один раунд закончен, программа, кажется, ломается.Я процитировал цикл while.Спасибо!

string playerInput;
string cpuInput;
int randomInt;
bool playAgain = true;
int scorePlayer = 0;
int scoreCPU = 0;


while (scorePlayer > 3 && scoreCPU > 3);
{
    Console.WriteLine("Rock Paper or Scissors?");
    playerInput = Console.ReadLine();
    playerInput.ToLower();
    Random rnd = new Random();
    randomInt = rnd.Next(1, 4);
    switch (randomInt)
    {
        case 1:
            cpuInput = "rock";
            Console.WriteLine("CPU chose rock");
            if (playerInput == "rock")
            {
                Console.WriteLine("DRAW!");
            }
            else if (playerInput == "paper")
            {
                Console.WriteLine("PLAYER WINS!");
                    scorePlayer++;
            }
            else if (playerInput == "scissors")
            {
                Console.WriteLine("CPU WINS!");
                scoreCPU++;
            }
            break;
        case 2:
            cpuInput = "paper";
            Console.WriteLine("CPU chose paper");
            if (playerInput == "rock")
            {
                Console.WriteLine("PLAYER WINS");
                scorePlayer++;
            }
            else if (playerInput == "paper")
            {
                Console.WriteLine("DRAW!");

            }
            else if (playerInput == "scissors")
            {
                Console.WriteLine("CPU WINS!");
                scoreCPU++;
            }
            break;
        case 3:
            cpuInput = "scissors";
            Console.WriteLine("CPU chose scissors");
                if (playerInput == "rock")
            {
                Console.WriteLine("CPU WINS!");
                scoreCPU++;
            }
            else if (playerInput == "paper")
            {
                Console.WriteLine("PLAYER WINS!");
                    scorePlayer++;
            }
            else if (playerInput == "scissors")
            {
                Console.WriteLine("DRAW!");
            }
            break;
        default:
            Console.WriteLine("INVALID INPUT!");
            break;
                if (scorePlayer == 3)
                    {
                    Console.WriteLine("PLAYER WON!");
                    }
                else if (scoreCPU ==3);
                {
                    Console.WriteLine("CPU WON!");
                }      
        }
}

Console.ReadLine();

Ответы [ 2 ]

2 голосов
/ 25 сентября 2019

Проблема заключается в следующем:

int scorePlayer = 0;
int scoreCPU = 0;


while (scorePlayer > 3 && scoreCPU > 3);

Ни scorePlayer, ни scoreCPU не больше 3, поэтому условие цикла не выполняется.Точка с запятой в конце - это пустой оператор .Все, что следует, находится в блоке кода, но это не содержимое цикла while.

Удалите точку с запятой и измените ваше условие, чтобы изначально разрешить условию цикла.
Например:

while (scorePlayer < 3 && scoreCPU < 3)

Использование отладчика для проверки содержимого ваших переменных поможет вам понять, почему ваш цикл не работает, и вы увидите, что он наступит на точку с запятой, как только условие станет правильным.

0 голосов
/ 25 сентября 2019

В соответствии с описанием программы, которое вы упомянули, он должен работать до тех пор, пока один из проигрывателей или процессоров не наберет 3 очка, разрешить циклу «Пока» работать, пока не будет выполнено условие прерывания.

Измените условие цикла «Время» на:

while(scorePlayer < 3 && scoreCPU < 3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...