繁体   English   中英

C#DO While循环-Hangman

[英]C# DO While loop - Hangman

我正在学习使用C#进行编码的过程。 我无法弄清楚为什么在执行Hangman程序10次后我的循环为什么不会结束,尽管如果将程序设置为较小的数字(例如6),该程序也可以工作。我正在使用do while循环以及设置时到10,我不断得到一个似乎是无限循环的东西,因为它只是不断重复而不是按预期结束。 我没有编译器错误。 这是一项任务。 任何帮助表示赞赏。 这是我写的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace hangman_projectW4
{
    class Program
    {
        static void Main(string[] args)
        {
            //variable list
            char letter0 = 'k';
            char letter1 = 'i';
            char letter2 = 'd';
            char letter3 = 'd';
            char letter4 = 'e';
            char letter5 = 'r';
            char letter;
            int score = 0;
            string user = "";

            //inputs inputs
            Console.ForegroundColor = ConsoleColor.Green;
            user = Console.ReadLine();
            Console.WriteLine("Hi! Welcome to Hangman.");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("Player, please enter a letter at prompt.");
            Console.Write("_________________________________________________________________");
            user = Console.ReadLine();
            Console.ForegroundColor = ConsoleColor.Green;

            do
            {
            Console.WriteLine("Please enter a letter: ");
            letter = char.Parse(Console.ReadLine());

            user = Console.ReadLine();
            if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
            {
                Console.WriteLine("You guessed correctly!");

            }
            else
            {
                Console.WriteLine("Incorrect. Try Again.");
                score++;
            }

            user = Console.ReadLine();
            Console.WriteLine("Please enter a letter: ");
            letter = char.Parse(Console.ReadLine());

            user = Console.ReadLine();
            if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
            {
                Console.WriteLine("You guessed correctly!");

            }
            else
            {
                Console.WriteLine("Incorrect. Try Again.");
                score++;
            }

            user = Console.ReadLine();
            Console.WriteLine("Please enter a letter: ");
            letter = char.Parse(Console.ReadLine());

            user = Console.ReadLine();
            if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
            {
                Console.WriteLine("You guessed correctly!");

            }
            else
            {
                Console.WriteLine("Incorrect. Try Again.");
                score++;
            }

            user = Console.ReadLine();
            Console.WriteLine("Please enter a letter: ");
            letter = char.Parse(Console.ReadLine());

            user = Console.ReadLine();
            if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
            {
                Console.WriteLine("You guessed correctly!");

            }
            else
            {
                Console.WriteLine("Incorrect. Try Again.");
                score++;
            }

            user = Console.ReadLine();
            Console.WriteLine("Please enter a letter: ");
            letter = char.Parse(Console.ReadLine());

            user = Console.ReadLine();
            if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
            {
                Console.WriteLine("You guessed correctly!");                

            }
            else
            {
                Console.WriteLine("Incorrect. Try Again.");
                score++;
            }

            user = Console.ReadLine();
            Console.WriteLine("Please enter a letter: ");
            letter = char.Parse(Console.ReadLine());

            user = Console.ReadLine();
            if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
            {
                Console.WriteLine("You guessed correctly!");               

            }
            else
            {
                Console.WriteLine("Incorrect. Try Again.");
                score++;
            }

            user = Console.ReadLine();
            Console.WriteLine("Please enter a letter: ");
            letter = char.Parse(Console.ReadLine());

            user = Console.ReadLine();
            if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
            {
                Console.WriteLine("You guessed correctly!");

            }
            else
            {
                Console.WriteLine("Incorrect. Try Again.");
                score++;
            }

            user = Console.ReadLine();
            Console.WriteLine("Please enter a letter: ");
            letter = char.Parse(Console.ReadLine());

            user = Console.ReadLine();
            if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
            {
                Console.WriteLine("You guessed correctly!");

            }
            else
            {
                Console.WriteLine("Incorrect. Try Again.");
                score++;
            }

            user = Console.ReadLine();
            Console.WriteLine("Please enter a letter: ");
            letter = char.Parse(Console.ReadLine());

            user = Console.ReadLine();
            if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
            {
                Console.WriteLine("You guessed correctly!");

            }
            else
            {
                Console.WriteLine("Incorrect. Try Again.");
                score++;
            }

            user = Console.ReadLine();
            Console.WriteLine("Please enter a letter: ");
            letter = char.Parse(Console.ReadLine());

            user = Console.ReadLine();
            if (letter == letter0 || letter == letter1 || letter == letter2 || letter == letter3 || letter == letter4 || letter == letter5)
            {
                Console.WriteLine("You guessed correctly!");

            }
            else
            {
                Console.WriteLine("Incorrect. Try Again.");
                score++;
            }
            }while (score <= 10);

            //outputs
            user = Console.ReadLine();
            user = Console.ReadLine();
            Console.Write("_________________________________________________________________");
            user = Console.ReadLine();
            Console.Write("Guessed Incorrectly: " + score);
            Console.ReadLine();
            Console.ReadLine();
            Console.Write("Thank you for playing Hangman.");
            Console.ReadLine();
        }
    }
}

另外,如果有更好的方式编写代码,这样我就不会重复if十次了……指针会很棒! 谢谢。

如果您尽力而为,它将结束。 一旦您的分数达到11分或更高,您的代码就可以继续并继续要求其他尝试。 停止复制代码。 变得更聪明并最小化您的代码! 您的循环会一遍又一遍地重复同一件事,甚至不检查您是否已经达到10分以上( score )。

缩短您的循环到这样的事情:

do
{
    Console.WriteLine("Please enter a letter: ");
    letter = char.Parse(Console.ReadLine());

    if (letter == letter0 ||
        letter == letter1 ||
        letter == letter2 ||
        letter == letter3 ||
        letter == letter4 ||
        letter == letter5)
    {
        Console.WriteLine("You guessed correctly!");
    }
    else
    {
        Console.WriteLine("Incorrect. Try Again.");
        score++;
    }
} while (score <= 10);

下一步是将所有字母添加到集合或列表中,并缩短if语句。 ;-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM