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);
            }
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乌药ice

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值