繁体   English   中英

C#如何重启控制台应用程序

[英]C# how to restart the console application

我是一个初学者,我正在尝试制作井字游戏。但是当 O 玩家获胜时,它显示,只有当 X 玩家做出决定时。所以,可能会出现 2 个玩家有的情况赢了。我尝试使用 if 语句来停止应用程序,但它没有帮助。 我想我不需要重新启动应用程序,只需重新启动 Main 即可。 但是怎么办??

class Program
{
    static void Main()
    {
        string Player1;
        string Player2;
        int turnPlayer1;
        int turnPlayer2;
        while (CheckTheWinner() == false)
        {
            BoardPlay();
            Console.Clear();
                BoardPlay();
            for ( turnPlayer1 = 0; turnPlayer1 < 1; turnPlayer1++)
            {
                Console.Write("Player O: Choose your field:");
                Player1 = Console.ReadLine();
                Player1Choice(Player1);
            }
            CheckTheWinner();
            Console.Clear();
            BoardPlay();
            for (int i = 0; i < 1; i++)
            {
                Console.Write("Player X: Choose your field:");
                Player2 = Console.ReadLine();
                Player2choice(Player2);
            }
            CheckTheWinner();
            Console.Clear();
            BoardPlay();
        }
    }



    public static void Player1Choice(string P1)
    {
        string o = "O";
        for (int i = 0; i < position.GetLength(0); i++)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            for (int j = 0; j <= 2; j++)
            {
                if (position[i, j] == P1)
                {
                    position[i, j] = o;  
                }
            }
        };
    }



    public static void Player2choice(string P2)
    {
        string x = "X";
        for (int i = 0; i < position.GetLength(0); i++)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            for (int j = 0; j <= 2; j++)
            {
                if (position[i, j] == P2)
                {
                    position[i, j] = x;
                }

            }
        };
    }

    static bool CheckTheWinner()
    {
        for (int i = 0; i < 3; i++)
        {
            if (position[i, 0] == position[i, 1] && position[i, 1] == position[i, 2])
            {
                return true;
            }
            if (position[0, i] == position[1, i] && position[1, i] == position[2, i])
            {
                return true;
            }
        }
        if (position[0, 0] == position[1, 1] && position[1, 1] == position[2, 2])
        {
            return true;
        }
        if (position[0, 2] == position[1, 1] && position[1, 1] == position[2, 0])
        {
            return true;
        }
        return false;
    }

“开始新游戏”基本上是“重复有游戏的操作”。 使用循环重复操作。

首先,定义循环条件。 例如,指示继续播放的布尔标志:

var keepPlaying = true;

然后只要该标志为真就循环:

var keepPlaying = true;
while (keepPlaying)
{
    // all of the logic currently in your Main method
}

然后你需要做的就是提示玩家是否想要另一个游戏并相应地更新变量。 例如:

var keepPlaying = true;
while (keepPlaying)
{
    // all of the logic currently in your Main method

    Console.Write("Would you like to play again? (Y/N): ");
    var playerReply = Console.ReadLine();
    if (playerReply == "N")
        keepPlaying = false;
}

您也许可以稍微简化一下逻辑,这主要是为了演示。 您还可以添加一些逻辑来检查输入,如果玩家选择退出,您可以添加关闭消息,添加其他选项等。

但关键是,如果你想重复游戏,这不是重启应用程序或重新调用Main方法的问题,只是将你想要重复的内容封装在一个循环中。

暂无
暂无

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

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