예제 #1
0
파일: Program.cs 프로젝트: jkchuong/Chess
        static void Main(string[] args)
        {
            Chessboard chessboard = new Chessboard();

            // IPiece interface? Wanna be able to get it all in a list.
            Pawn   whitePawn   = new Pawn(true, chessboard.Board[4, 3]);
            Pawn   blackPawn   = new Pawn(false, chessboard.Board[6, 0]);
            Knight blackKnight = new Knight(false, chessboard.Board[2, 2]);
            King   whiteKing   = new King(false, chessboard.Board[7, 3]);
            Rook   whiteRook   = new Rook(true, chessboard.Board[3, 6]);
            Bishop blackBishop = new Bishop(false, chessboard.Board[2, 4]);
            Queen  whiteQueen  = new Queen(true, chessboard.Board[1, 5]);

            List <Pieces> pieces = new List <Pieces>
            {
                whitePawn,
                blackPawn,
                blackKnight,
                whiteKing,
                whiteRook,
                blackBishop,
                whiteQueen
            };

            Console.WriteLine("The Pieces");
            chessboard.ClearMarkedLegalMoves();
            PrintBoardOccupiedAndLegal(chessboard);

            foreach (Pieces piece in pieces)
            {
                Console.WriteLine("=====================================================");
                Console.WriteLine(piece.Name);
                chessboard.ClearMarkedLegalMoves();
                chessboard.FindLegalMoves(piece);
                PrintBoardOccupiedAndLegal(chessboard);
            }

            Console.WriteLine("=====================================================");

            Console.WriteLine("Before Move");
            chessboard.MovePiece(whiteQueen, chessboard.Board[2, 4]);
            chessboard.ClearMarkedLegalMoves();
            PrintBoardOccupiedAndLegal(chessboard);

            Console.WriteLine("=====================================================");

            Console.WriteLine("Clear Board");
            chessboard.ClearBoard();
            PrintBoardOccupiedAndLegal(chessboard);

            Console.WriteLine("=====================================================");

            Console.WriteLine("New Game");
            chessboard.NewGame();
            PrintBoardOccupiedAndLegal(chessboard);

            Console.WriteLine("=====================================================");

            Console.WriteLine("Queen Moves");
            chessboard.ClearBoard();
            Queen queen = new Queen(true, chessboard.Board[4, 4]);
            Pawn  pawn  = new Pawn(false, chessboard.Board[2, 4]);

            PrintBoardOccupiedAndLegal(chessboard);

            Console.WriteLine("=====================================================");

            Console.WriteLine("Find Queen Obstruction");
        }
예제 #2
0
파일: Program.cs 프로젝트: jkchuong/Chess
        private static void PrintBoardOccupiedAndLegal(Chessboard chessboard)
        {
            int rowLength = chessboard.Board.GetLength(0);
            int colLength = chessboard.Board.GetLength(1);

            for (int i = 0; i < rowLength; i++)
            {
                for (int j = 0; j < colLength; j++)
                {
                    if (chessboard.Board[i, j].IsOccupied)
                    {
                        if (chessboard.Board[i, j].IsLegal)
                        {
                            Console.Write("X    ");
                        }
                        else
                        {
                            switch (chessboard.Board[i, j].piece.Name)
                            {
                            case "Pawn":
                                if (chessboard.Board[i, j].piece.IsWhite)
                                {
                                    Console.Write("P    ");
                                }
                                else
                                {
                                    Console.WriteLine("p    ");
                                }
                                break;

                            case "Knight":
                                if (chessboard.Board[i, j].piece.IsWhite)
                                {
                                    Console.Write("N   ");
                                }
                                else
                                {
                                    Console.WriteLine("n    ");
                                }
                                break;

                            case "King":
                                if (chessboard.Board[i, j].piece.IsWhite)
                                {
                                    Console.Write("K    ");
                                }
                                else
                                {
                                    Console.WriteLine("k    ");
                                }
                                break;

                            case "Queen":
                                if (chessboard.Board[i, j].piece.IsWhite)
                                {
                                    Console.Write("Q    ");
                                }
                                else
                                {
                                    Console.WriteLine("q    ");
                                }
                                break;

                            case "Rook":
                                if (chessboard.Board[i, j].piece.IsWhite)
                                {
                                    Console.Write("R    ");
                                }
                                else
                                {
                                    Console.WriteLine("r    ");
                                }
                                break;

                            case "Bishop":
                                if (chessboard.Board[i, j].piece.IsWhite)
                                {
                                    Console.Write("B    ");
                                }
                                else
                                {
                                    Console.WriteLine("b    ");
                                }
                                break;
                            }
                        }
                    }

                    else if (chessboard.Board[i, j].IsLegal)
                    {
                        Console.Write("X    ");
                    }
                    else
                    {
                        Console.Write("-    ");
                    }
                }
                Console.Write(Environment.NewLine + Environment.NewLine);
            }
        }