C# 如何修复输出,方法似乎有缺陷

C# 如何修复输出,方法似乎有缺陷,c#,C#,我制作了TictaToe,我制作了一个名为“GameLoop”的类,因为我希望我的主代码是“清晰的” 我尝试将该方法设置为static,以便只能在类中使用它,尝试添加线程,但不改变任何内容 #region variables static char[] arr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; //by default I am providing 0-9 where no use of

我制作了TictaToe,我制作了一个名为“GameLoop”的类,因为我希望我的主代码是“清晰的”

我尝试将该方法设置为static,以便只能在类中使用它,尝试添加线程,但不改变任何内容

#region variables
        static char[] arr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
        //by default I am providing 0-9 where no use of zero  


        static int player = 1; //By default player 1 is set  

        static int choice; //This holds the choice at which position user want to mark   

        // The flag veriable checks who has won if it's value is 1 then some one has won the match if -1 then Match has Draw if 0 then match is still running  

        static int flag = 0;

        #endregion
        #region Methods



        // Board method which creats board  

        public static void Board()
        {
            Console.WriteLine("     |     |      ");
            Console.WriteLine("  {0}  |  {1}  |  {2}", arr[1], arr[2], arr[3]);
            Console.WriteLine("_____|_____|_____ ");
            Console.WriteLine("     |     |      ");
            Console.WriteLine("  {0}  |  {1}  |  {2}", arr[4], arr[5], arr[6]);
            Console.WriteLine("_____|_____|_____ ");
            Console.WriteLine("     |     |      ");
            Console.WriteLine("  {0}  |  {1}  |  {2}", arr[7], arr[8], arr[9]);
            Console.WriteLine("     |     |      ");
        }

        //Checking that any player has won or not  

        private static int CheckWin()
        {
            #region Horzontal Winning Condtion

            //Winning Condition For First Row   

            if (arr[1] == arr[2] && arr[2] == arr[3])
            {
                return 1;
            }

            //Winning Condition For Second Row   

            else if (arr[4] == arr[5] && arr[5] == arr[6])
            {
                return 1;
            }

            //Winning Condition For Third Row   

            else if (arr[6] == arr[7] && arr[7] == arr[8])
            {
                return 1;
            }

            #endregion

            #region vertical Winning Condtion

            //Winning Condition For First Column       
            else if (arr[1] == arr[4] && arr[4] == arr[7])
            {
                return 1;
            }

            //Winning Condition For Second Column  

            else if (arr[2] == arr[5] && arr[5] == arr[8])
            {
                return 1;
            }

            //Winning Condition For Third Column  

            else if (arr[3] == arr[6] && arr[6] == arr[9])
            {
                return 1;
            }
            #endregion

            #region Diagonal Winning Condition

            else if (arr[1] == arr[5] && arr[5] == arr[9])
            {
                return 1;
            }
            else if (arr[3] == arr[5] && arr[5] == arr[7])
            {
                return 1;
            }

            #endregion

            #region Checking For Draw

            // If all the cells or values filled with X or O then any player has won the match  

            else if (arr[1] != '1' && arr[2] != '2' && arr[3] != '3' && arr[4] != '4' && arr[5] != '5' && arr[6] != '6' && arr[7] != '7' && arr[8] != '8' && arr[9] != '9')
            {
                return -1;
            }
            else
            {
                return 0;
            }

            #endregion
        }
        #endregion
        public static void Loop()
        {
            do
            {

                Console.Clear();// whenever loop will be again start then screen will be clear  

                Console.WriteLine("Player 1 => X & Player 2 => O");

                Console.WriteLine("\n");

                if (player % 2 == 0)//checking which turn is it.
                {
                    Console.WriteLine("Player 2 Turn: ");
                }
                else
                {
                    Console.WriteLine("Player 1 Turn: ");
                }

                Console.WriteLine("\n");

                // calling the board Function  


                if (player == 1)
                {
                    Console.Write("Player 1 choose your position: ");
                    choice = int.Parse(Console.ReadLine());//Taking users choice   
                }
                else
                {
                    Console.Write("Player 2 choose your position: ");
                    choice = int.Parse(Console.ReadLine());//Taking users choice  
                }


                // checking that position where user want to run is marked (with X or O) or not  

                if (arr[choice] != 'X' && arr[choice] != 'O')
                {
                    if (player % 2 == 0) //if chance is of player 2 then mark O else mark X  
                    {
                        arr[choice] = 'O';
                        player++;
                    }
                    else
                    {
                        arr[choice] = 'X';
                        player++;
                    }
                }
                else //If there is any possition where user want to run and that is already marked then show message and load board again  
                {
                    Console.WriteLine("Sorry the row {0} is already marked with {1}", choice, arr[choice]);
                    Console.WriteLine("\n");
                    Thread.Sleep(2000);
                }
                flag = CheckWin();// calling of check win  
            } while (flag != 1 && flag != -1);// This loof will be run until all cell of the grid is not marked with X and O or some player is not win  

            Console.Clear();// clearing the console  
            GameLoop.Board();// getting filled board again  

            if (flag == 1)// if flag value is 1 then some one has win or means who played marked last time which has win  
            {
                Console.WriteLine("Player {0} has won", (player % 2) + 1);
            }
            else// if flag value is -1 the match will be draw and no one is winner  
            {

                Console.WriteLine("Draw");

            }

            Console.ReadLine();

        }

方法“Board”应该输出Board,现在我根本看不到Board,当我在main中调用它时,也只有Board方法可以工作

欢迎使用StackOverflow,请提供输出结果和整个类,包括
Main
方法,以便对其进行测试。它看起来不像是在循环中调用
Board
,只是在循环的末尾。具体来说,您希望在if语句的末尾调用它,以确保所选的空间尚未被占用