我创建了一个游戏,给玩家5个玩游戏的机会,之后我想问问玩家是否想再次玩或退出游戏。我已经看到它在Python中完成,但是我不知道python。我的代码工作正常,但是我想添加这两个附加功能
如何在C#中实现这些功能?
作为参考,这是我的代码主类代码的外观。

namespace NumBaseBall
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("\t\t\t*************************************");
            Console.WriteLine("\t\t\t*      Let's Have Some Fun          *");
            Console.WriteLine("\t\t\t*           Welcome To The          *");
            Console.WriteLine("\t\t\t*       Number Baseball Game        *");
            Console.WriteLine("\t\t\t*************************************\n");

            GameResults gameresults = new GameResults();

            for (int trysCounter = 1; trysCounter <= 5; trysCounter++)
            {
                gameresults.Strikes = 0;

                Random r = new Random();
                var myRange = Enumerable.Range(1, 9);
                var computerNumbers = myRange.OrderBy(i => r.Next()).Take(3).ToList();
                Console.WriteLine("The Game's Three Random Integers Are: (Hidden from user)");
                 foreach (int integer in computerNumbers)
                 {
                     Console.WriteLine("{0}", integer);
                 }

                 List<int> playerNumbers = new List<int>();
                 Console.WriteLine("Please Enter Three Unique Single Digit Integers and Press ENTER after each:");
                 for (int i = 0; i < 3; i++)
                 {
                      Console.Write("");
                      int number = Convert.ToInt32(Console.ReadLine());
                                  playerNumbers.Add(number);
                 }

                 gameresults.StrikesOrBalls(computerNumbers,playerNumbers);
                 Console.WriteLine("---> Computer's Numbers = {0}{1}{2}", computerNumbers[0], computerNumbers[1], computerNumbers[2]);
                 Console.WriteLine("---> Player's Numbers = {0}{1}{2}", playerNumbers[0], playerNumbers[1], playerNumbers[2]);
                 Console.WriteLine("---> Game Results = {0} STRIKES & {1} BALLS\n", gameresults.Strikes, gameresults.Balls);
                 Console.WriteLine("You have played this games {0} times\n", trysCounter);

                  gameresults.TotalStrikes = gameresults.TotalStrikes + gameresults.Strikes;

                  Console.WriteLine("STRIKES = {0} ", gameresults.TotalStrikes);

                   if (gameresults.TotalStrikes >= 3)
                   {
                       gameresults.Wins++;
                       Console.WriteLine("YOU ARE A WINNER!!!");
                       break;
                   }
               }
                       if (gameresults.TotalStrikes <3)
                       Console.WriteLine("YOU LOSE :( PLEASE TRY AGAIN!");
           }
       }
   }

最佳答案

将您的代码插入循环中,该循环检查用户是否要继续:

while(true) // Continue the game untill the user does want to anymore...
{

    // Your original code or routine.

    while(true) // Continue asking until a correct answer is given.
    {
        Console.Write("Do you want to play again [Y/N]?");
        string answer = Console.ReadLine().ToUpper();
        if (answer == "Y")
             break; // Exit the inner while-loop and continue in the outer while loop.
        if (answer == "N")
             return; // Exit the Main-method.
    }
}


但是,也许最好将一个大例程分成多个单独的例程。

让您将主方法重命名为PlayTheGame

将我的例程划分为:

static public bool PlayAgain()
{
    while(true) // Continue asking until a correct answer is given.
    {
        Console.Write("Do you want to play again [Y/N]?");
        string answer = Console.ReadLine().ToUpper();
        if (answer == "Y")
             return true;
        if (answer == "N")
             return false;
    }
}


现在,主要方法可以是:

static void Main(string[] args)
{
    do
    {
         PlayTheGame();
    }
    while(PlayAgain());
}


您必须将一些局部变量作为静态字段移至该类。或者您可以创建Game类的实例,但是我认为这是目前的一步。

07-24 09:38