c#控制台五子棋

class Board
    {
        private int[,] checkerBoard = new int[20, 20];
        public enum checker
        {
            white,
            black
        }

        public Board()
        {
            for (int i = 0; i < 20; i++)
            {
                for (int j = 0; j < 20; j++)
                {
                    checkerBoard[i, j] = 0;
                }
            }
            show();
        }

        private void show()
        {
            for (int i = 0; i < 20; i++)
            {
                for (int j = 0; j < 20; j++)
                {
                    if (checkerBoard[i, j] == 0)
                        Console.Write("■");
                    else
                    {
                        if (checkerBoard[i, j] == 1)
                            Console.Write("○");
                        else
                            Console.Write("●");
                    }
                }
                Console.WriteLine();
            }
        }

        public void update(int x, int y, checker c)
        {
            Console.Clear();
            switch (c)
            {
                case checker.white:
                    if (isLand(x, y))
                        // checkerBoard[x, y] = "○";
                        checkerBoard[x, y] = 1;
                    break;
                case checker.black:
                    if (isLand(x, y))
                        // checkerBoard[x, y] = "●";
                        checkerBoard[x, y] = 2;
                    break;
            }
            show();
            if (win(x, y))
            {
                Console.WriteLine("You're  winer");
            }
        }

        private bool win(int x, int y)
        {
            bool isWin = false;
            int count = 0;
            int tempx = x, tempy = y;
            //1  
            while (y > 0)
            {
                if (checkerBoard[tempx, tempy] == checkerBoard[x, --y])
                {
                    count++;
                }
                else
                    break;
            }
            if (count >= 4)
            {
                return true;
            }
            x = tempx; y = tempy;
            while (y < 19)
            {
                if (checkerBoard[tempx, tempy] == checkerBoard[x, ++y])
                {
                    count++;
                }
                else
                    break;
            }
            if (count >= 4)
            {
                return true;
            }
            x = tempx; y = tempy; count = 0;
            //2
            while (x > 0)
            {
                if (checkerBoard[tempx, tempy] == checkerBoard[--x, y])
                {
                    count++;
                }
                else
                    break;
            }
            if (count >= 4)
            {
                return true;
            }
            x = tempx; y = tempy;
            while (x < 19)
            {
                if (checkerBoard[tempx, tempy] == checkerBoard[++x, y])
                {
                    count++;
                }
                else
                    break;
            }
            if (count >= 4)
            {
                return true;
            }
            x = tempx; y = tempy; count = 0;
            //3
            while (y > 0 && x > 0)
            {
                if (checkerBoard[tempx, tempy] == checkerBoard[--x, --y])
                {
                    count++;
                }
                else
                    break;
            }
            if (count >= 4)
            {
                return true;
            }
            x = tempx; y = tempy;
            while (y < 19 && x < 19)
            {
                if (checkerBoard[tempx, tempy] == checkerBoard[++x, ++y])
                {
                    count++;
                }
                else
                    break;
            }
            if (count >= 4)
            {
                return true;
            }
            x = tempx; y = tempy; count = 0;
            //4
            while (y > 0 && x < 19)
            {
                if (checkerBoard[tempx, tempy] == checkerBoard[++x, --y])
                {
                    count++;
                }
                else
                    break;
            }
            if (count >= 4)
            {
                return true;
            }
            x = tempx; y = tempy;
            while (y < 19 && x > 0)
            {
                if (checkerBoard[tempx, tempy] == checkerBoard[--x, ++y])
                {
                    count++;
                }
                else
                    break;
            }
            if (count >= 4)
            {
                return true;
            }
            return isWin;
        }
        public bool isLand(int x, int y)
        {
            bool T = true;
            if (checkerBoard[x, y] == 0)
            {
                T = true;
            }
            else
            {
                T = false;
            }
            return T;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            //Console.SetWindowSize(40, 20);
            Console.Title = "GoBang";
            Board board = new Board();
            int left = 18, top = 9;
            bool isTurn = false;
            bool temp = false;
            Console.SetCursorPosition(left, top);
            while (true)
            {
                ConsoleKey key = Console.ReadKey(true).Key;
                switch (key)
                {
                    case ConsoleKey.W:
                    case ConsoleKey.UpArrow:
                        if (top < 20 && top > 0)
                            top--;
                        break;
                    case ConsoleKey.S:
                    case ConsoleKey.DownArrow:
                        if (top >= 0)
                            top++;
                        if (top >= 19)
                            top = 19;
                        break;
                    case ConsoleKey.A:
                    case ConsoleKey.LeftArrow:
                        if (left > 0)
                            left = left - 2;
                        if (left <= 0)
                            left = 0;
                        break;
                    case ConsoleKey.D:
                    case ConsoleKey.RightArrow:
                        if (left / 2 < 20)
                            left = left + 2;
                        if (left / 2 >= 19)
                            left = 38;
                        break;
                    case ConsoleKey.Enter:
                    case ConsoleKey.Spacebar:
                        if (!board.isLand(top, left / 2))
                        {
                            isTurn = !temp;
                        }
                        if (!isTurn)    //黑棋为先
                        {
                            Board.checker c = Board.checker.black;
                            board.update(top, left / 2, c);
                            isTurn = true;
                        }
                        else
                        {
                            Board.checker c = Board.checker.white;
                            board.update(top, left / 2, c);
                            isTurn = false;
                        }
                        temp = isTurn;
                        break;
                }
                Console.SetCursorPosition(left, top);
            }
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_41138935/article/details/80875167
今日推荐