Exemple #1
0
        static void Main(string[] args)
        {
            Board b = new Board();

            while (true)
            {
                if (b.isWhiteToMove())
                {
                    for (int i = 0; b.getWhiteArr()[i] != null; i++)
                    {
                        b.getWhiteArr()[i].setPawnMoved(false);
                    }
                }
                else
                {
                    for (int i = 0; b.getBlackArr()[i] != null; i++)
                    {
                        b.getBlackArr()[i].setPawnMoved(false);
                    }
                }
                Console.Clear();
                Console.WriteLine(b.toString());

                string s = Console.ReadLine();
                int    a1 = 0, a2 = 0, a3 = 0, a4 = 0;
                if (s[0] == 'a')
                {
                    a2 = 0;
                }
                else if (s[0] == 'b')
                {
                    a2 = 1;
                }
                else if (s[0] == 'c')
                {
                    a2 = 2;
                }
                else if (s[0] == 'd')
                {
                    a2 = 3;
                }
                else if (s[0] == 'e')
                {
                    a2 = 4;
                }
                else if (s[0] == 'f')
                {
                    a2 = 5;
                }
                else if (s[0] == 'g')
                {
                    a2 = 6;
                }
                else if (s[0] == 'h')
                {
                    a2 = 7;
                }
                if (s[2] == 'a')
                {
                    a4 = 0;
                }
                else if (s[2] == 'b')
                {
                    a4 = 1;
                }
                else if (s[2] == 'c')
                {
                    a4 = 2;
                }
                else if (s[2] == 'd')
                {
                    a4 = 3;
                }
                else if (s[2] == 'e')
                {
                    a4 = 4;
                }
                else if (s[2] == 'f')
                {
                    a4 = 5;
                }
                else if (s[2] == 'g')
                {
                    a4 = 6;
                }
                else if (s[2] == 'h')
                {
                    a4 = 7;
                }
                a1 = 8 - int.Parse(s[1].ToString());
                a3 = 8 - int.Parse(s[3].ToString());

                if (b.CanMove(a1, a2, a3, a4))
                {
                    Console.WriteLine("yes");
                    // en passant white
                    if (b.isWhiteToMove() && b.GetPiece(a1, a2).getP() == 'p' && b.GetPiece(a3 + 1, a4) != null && b.GetPiece(a3 + 1, a4).getPawnMoved())
                    {
                        b.delete(a3 + 1, a4, b.getWhiteArr(), b.getBlackArr());
                        b.Move(a1, a2, a3, a4);
                    }
                    // en passant black
                    else if (!b.isWhiteToMove() && b.GetPiece(a1, a2).getP() == 'p' && b.GetPiece(a3 - 1, a4) != null && b.GetPiece(a3 - 1, a4).getPawnMoved())
                    {
                        b.delete(a3 - 1, a4, b.getWhiteArr(), b.getBlackArr());
                        b.Move(a1, a2, a3, a4);
                    }

                    // Castling short white
                    else if (b.isWhiteToMove() && b.GetPiece(a1, a2).getP() == 'K' &&
                             a1 == 7 && a2 == 4 && a3 == 7 && a4 == 6)
                    {
                        b.Move(a1, a2, a3, a4);
                        Piece R = b.GetPiece(7, 7);
                        R.setY(5);
                    }

                    // Castling long white
                    else if (b.isWhiteToMove() && b.GetPiece(a1, a2).getP() == 'K' &&
                             a1 == 7 && a2 == 4 && a3 == 7 && a4 == 2)
                    {
                        b.Move(a1, a2, a3, a4);
                        Piece R = b.GetPiece(7, 0);
                        R.setY(3);
                    }

                    // Castling short black
                    else if (!b.isWhiteToMove() && b.GetPiece(a1, a2).getP() == 'K' &&
                             a1 == 0 && a2 == 4 && a3 == 0 && a4 == 6)
                    {
                        b.Move(a1, a2, a3, a4);
                        Piece R = b.GetPiece(0, 7);
                        R.setY(5);
                    }

                    // Castling long black
                    else if (!b.isWhiteToMove() && b.GetPiece(a1, a2).getP() == 'K' &&
                             a1 == 0 && a2 == 4 && a3 == 0 && a4 == 2)
                    {
                        b.Move(a1, a2, a3, a4);
                        Piece R = b.GetPiece(0, 0);
                        R.setY(3);
                    }

                    else
                    {
                        b.delete(a3, a4, b.getWhiteArr(), b.getBlackArr());
                        b.Move(a1, a2, a3, a4);
                    }
                }
                else
                {
                    Console.WriteLine("no");
                }
                Console.ReadLine();
                b.isBlackChecked(b.WhiteArr, b.BlackArr);
                Console.WriteLine(b.CheckedBlackToString());
                Console.ReadLine();
            }
        }