Beispiel #1
0
 public bool DetermainCheck(string colorOfKing)
 {
     for (int i = 0; i < boardSize; i++)
     {
         for (int j = 0; j < boardSize; j++)
         {
             if (Board.GetBoardSpace(i, j).HasPiece() && boardSpaces[i, j].GetPiece().GetPieceType() == TypeOfPiece.King && boardSpaces[i, j].GetPiece().GetColor().Equals(colorOfKing))
             {
                 for (int k = 0; k < boardSize; k++)
                 {
                     for (int l = 0; l < boardSize; l++)
                     {
                         if (boardSpaces[k, l].HasPiece() && !boardSpaces[k, l].GetPiece().GetColor().Equals(colorOfKing))
                         {
                             Console.WriteLine(IntToChar(l).ToString() + (k + 1).ToString() + " " + IntToChar(j).ToString() + (i + 1).ToString());
                             if (GetBoardSpace(k, l).GetPiece().Move(GetBoardSpace(k, l).GetPiece().GetPieceType(), l, (k + 1), j, (i + 1)))
                             {
                                 return(true);
                             }
                         }
                     }
                 }
             }
         }
     }
     return(false);
 }
Beispiel #2
0
 public void SquaresWithPieces()
 {
     for (int i = 0; i < Board.GetBoardSize(); i++)
     {
         for (int j = 0; j < Board.GetBoardSize(); j++)
         {
             if (Board.GetBoardSpace(i, j).HasPiece())
             {
                 Console.WriteLine(i + " " + j);
             }
         }
     }
 }
Beispiel #3
0
 public static void PrintBoard()
 {
     Console.WriteLine("*|A |B |C |D |E |F |G |H |");
     for (int i = 0; i < 8; i++)
     {
         for (int j = 0; j < 8; j++)
         {
             if (j == 0)
             {
                 Console.Write(i + 1);
             }
             if (Board.GetBoardSpace(i, j).HasPiece())
             {
                 Console.Write("|" + Board.GetBoardSpace(i, j).GetPiece().GetPieceString());
             }
             else
             {
                 Console.Write("|--");
             }
         }
         Console.Write("|\n");
     }
     Console.WriteLine("\n");
 }
Beispiel #4
0
 private bool moveKing(int currentRank, int currentFile, int newRank, int newFile)
 {
     for (int i = -1; i < 2; i++)
     {
         for (int j = -1; j < 2 && Board.ValidateSpace(currentRank + i, currentFile + j); j++)
         {
             if (Board.GetBoardSpace(currentRank + i, currentFile + j).HasPiece())
             {
                 if (Board.GetBoardSpace(currentRank + i, currentFile + j).GetPiece().GetColor() != this.GetColor())
                 {
                     return(true);
                 }
             }
             else
             {
                 if (currentRank + i == newRank && currentFile + j == newFile)
                 {
                     return(true);
                 }
             }
         }
     }
     return(false);
 }
Beispiel #5
0
        public void PlayGame()
        {
            bool lightsTurn = true;

            while (true)
            {
                if (lightsTurn)
                {
                    Console.WriteLine("It is Light's Turn.");
                    string move = Console.ReadLine();
                    string message;
                    if (Parser.ParseLine(move, out message))
                    {
                        if (Board.GetBoardSpace(move[1] - '0' - 1, move[0] - 'a').GetPiece().GetColor().Equals("Light"))
                        {
                            if (chessBoard.Move(move))
                            {
                                if (!chessBoard.DetermainCheck("Light"))
                                {
                                    lightsTurn = false;
                                    Parser.PrintInfo(move, message);
                                    if (chessBoard.DetermainCheck("Dark"))
                                    {
                                        Console.WriteLine("The Dark king is in Check.");
                                    }
                                }
                                else
                                {
                                    string undoMove = move[3].ToString() + move[4].ToString() + move[2].ToString() + move[0].ToString() + move[1].ToString();
                                    chessBoard.Move(undoMove);
                                    message = "That places you in check.";
                                }
                            }
                            Parser.PrintBoard();
                        }
                        else
                        {
                            Console.WriteLine("That was not your piece.");
                        }
                    }
                }
                else
                {
                    Console.WriteLine("It is Dark's Turn.");
                    string move = Console.ReadLine();
                    string message;
                    if (Parser.ParseLine(move, out message))
                    {
                        if (Board.GetBoardSpace(move[1] - '0' - 1, move[0] - 'a').GetPiece().GetColor().Equals("Dark"))
                        {
                            if (chessBoard.Move(move))
                            {
                                if (!chessBoard.DetermainCheck("Light"))
                                {
                                    lightsTurn = true;
                                    Parser.PrintInfo(move, message);
                                    if (chessBoard.DetermainCheck("Light"))
                                    {
                                        Console.WriteLine("The Light king is in Check.");
                                    }
                                }
                                else
                                {
                                    string undoMove = move[3].ToString() + move[4].ToString() + move[2].ToString() + move[0].ToString() + move[1].ToString();
                                    chessBoard.Move(undoMove);
                                    message = "That places you in check.";
                                }
                                Parser.PrintBoard();
                            }
                            else
                            {
                                Console.WriteLine("That was not your piece.");
                            }
                        }
                    }
                }
            }
        }
Beispiel #6
0
 private bool movePawn(int currentRank, int currentFile, int newRank, int newFile)
 {
     if (pieceColor.Equals("Light"))
     {
         if (!HasMoved)
         {
             if (currentFile == newFile && currentRank + 1 == newRank && Board.ValidateSpace(currentRank + 1, currentFile) && !Board.GetBoardSpace(newRank, newFile).HasPiece())
             {
                 return(true);
             }
             else if (currentFile == newFile && currentRank + 2 == newRank && Board.ValidateSpace(currentRank + 2, currentFile) && !Board.GetBoardSpace(newRank, newFile).HasPiece() && !Board.GetBoardSpace(newRank, newFile - 1).HasPiece())
             {
                 return(true);
             }
             else if (currentFile + 1 == newFile && currentRank + 1 == newRank && Board.ValidateSpace(currentRank + 1, currentFile + 1) && Board.GetBoardSpace(currentRank + 1, currentFile + 1).HasPiece() && Board.GetBoardSpace(newRank, newFile).GetPiece().GetColor() != this.GetColor())
             {
                 return(true);
             }
             else if (currentFile - 1 == newFile && currentRank - 1 == newRank && Board.ValidateSpace(currentRank - 1, currentFile - 1) && Board.GetBoardSpace(currentRank - 1, currentFile - 1).HasPiece() && Board.GetBoardSpace(newRank, newFile).GetPiece().GetColor() != this.GetColor())
             {
                 return(true);
             }
         }
         else
         {
             if (currentFile == newFile && currentRank + 1 == newRank && Board.ValidateSpace(currentRank + 1, currentFile) && !Board.GetBoardSpace(newRank, newFile).HasPiece())
             {
                 return(true);
             }
             else if (currentFile + 1 == newFile && currentRank + 1 == newRank && Board.ValidateSpace(currentRank + 1, currentFile + 1) && Board.GetBoardSpace(currentRank + 1, currentFile + 1).HasPiece() && Board.GetBoardSpace(newRank, newFile).GetPiece().GetColor() != this.GetColor())
             {
                 return(true);
             }
             else if (currentFile - 1 == newFile && currentRank - 1 == newRank && Board.ValidateSpace(currentRank - 1, currentFile - 1) && Board.GetBoardSpace(currentRank - 1, currentFile - 1).HasPiece() && Board.GetBoardSpace(newRank, newFile).GetPiece().GetColor() != this.GetColor())
             {
                 return(true);
             }
         }
     }
     else
     {
         if (!HasMoved)
         {
             if (currentFile == newFile && currentRank - 1 == newRank && Board.ValidateSpace(currentRank - 1, currentFile) && !Board.GetBoardSpace(newRank, newFile).HasPiece())
             {
                 return(true);
             }
             else if (currentFile == newFile && currentRank - 2 == newRank && Board.ValidateSpace(currentRank - 2, currentFile) && !Board.GetBoardSpace(newRank, newFile).HasPiece() && !Board.GetBoardSpace(newRank, newFile + 1).HasPiece())
             {
                 return(true);
             }
             else if (currentFile + 1 == newFile && currentRank + 1 == newRank && Board.ValidateSpace(currentRank + 1, currentFile + 1) && Board.GetBoardSpace(currentRank + 1, currentFile + 1).HasPiece() && Board.GetBoardSpace(newRank, newFile).GetPiece().GetColor() != this.GetColor())
             {
                 return(true);
             }
             else if (currentFile - 1 == newFile && currentRank - 1 == newRank && Board.ValidateSpace(currentRank - 1, currentFile - 1) && Board.GetBoardSpace(currentRank - 1, currentFile - 1).HasPiece() && Board.GetBoardSpace(newRank, newFile).GetPiece().GetColor() != this.GetColor())
             {
                 return(true);
             }
         }
         else
         {
             if (currentFile == newFile && currentRank - 1 == newRank && Board.ValidateSpace(currentRank - 1, currentFile) && !Board.GetBoardSpace(newRank, newFile).HasPiece())
             {
                 return(true);
             }
             else if (currentFile + 1 == newFile && currentRank + 1 == newRank && Board.ValidateSpace(currentRank + 1, currentFile + 1) && Board.GetBoardSpace(currentRank + 1, currentFile + 1).HasPiece() && Board.GetBoardSpace(newRank, newFile).GetPiece().GetColor() != this.GetColor())
             {
                 return(true);
             }
             else if (currentFile - 1 == newFile && currentRank - 1 == newRank && Board.ValidateSpace(currentRank - 1, currentFile - 1) && Board.GetBoardSpace(currentRank - 1, currentFile - 1).HasPiece() && Board.GetBoardSpace(newRank, newFile).GetPiece().GetColor() != this.GetColor())
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Beispiel #7
0
        private bool moveRook(int currentRank, int currentFile, int newRank, int newFile)
        {
            //negative X
            bool pieceDetected = false;

            for (int i = -1; currentRank + i >= 0 && currentFile == newFile && Board.ValidateSpace(currentRank + i, currentFile) && !Board.GetBoardSpace(currentRank + i, currentFile).HasPiece() && !pieceDetected; --i)
            {
                if (Board.GetBoardSpace(currentRank + i, currentFile).HasPiece())
                {
                    pieceDetected = true;
                    if (Board.GetBoardSpace(currentRank + i, currentFile).GetPiece().GetColor() != this.GetColor())
                    {
                        return(true);
                    }
                    break;
                }
                else
                {
                    if (currentRank + i == newRank && currentFile == newFile)
                    {
                        return(true);
                    }
                }
            }
            pieceDetected = false;
            //positive X
            for (int i = 1; currentRank + i < Board.GetBoardSize() && currentFile == newFile && Board.ValidateSpace(currentRank + i, currentFile) && !Board.GetBoardSpace(currentRank + i, currentFile).HasPiece() && !pieceDetected; ++i)
            {
                if (Board.GetBoardSpace(currentRank + i, currentFile).HasPiece())
                {
                    pieceDetected = true;
                    if (Board.GetBoardSpace(currentRank + i, currentFile).GetPiece().GetColor() != this.GetColor())
                    {
                        return(true);
                    }
                    break;
                }
                else
                {
                    if (currentRank + i == newRank && currentFile == newFile)
                    {
                        return(true);
                    }
                }
            }
            pieceDetected = false;

            //negative Y
            for (int i = -1; currentFile + i >= 0 && currentRank == newRank && Board.ValidateSpace(currentRank, currentFile + i) && !Board.GetBoardSpace(currentRank, currentFile + i).HasPiece() && !pieceDetected; --i)
            {
                if (Board.GetBoardSpace(currentRank, currentFile + i).HasPiece())
                {
                    pieceDetected = true;
                    if (Board.GetBoardSpace(currentRank, currentFile + i).GetPiece().GetColor() != this.GetColor())
                    {
                        return(true);
                    }
                    break;
                }
                else
                {
                    if (currentRank == newRank && currentFile + i == newFile)
                    {
                        return(true);
                    }
                }
            }
            pieceDetected = false;

            //positive Y
            for (int i = 1; currentFile + i < Board.GetBoardSize() && currentRank == newRank && Board.ValidateSpace(currentRank, currentFile + i) && !Board.GetBoardSpace(currentRank, currentFile + i).HasPiece() && !pieceDetected; ++i)
            {
                if (Board.GetBoardSpace(currentRank, currentFile + i).HasPiece())
                {
                    pieceDetected = true;
                    if (Board.GetBoardSpace(currentRank, currentFile + i).GetPiece().GetColor() != this.GetColor())
                    {
                        return(true);
                    }
                    break;
                }
                else
                {
                    if (currentRank == newRank && currentFile + i == newFile)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
Beispiel #8
0
 private bool moveKnight(int currentRank, int currentFile, int newRank, int newFile)
 {
     if (currentRank + 1 == newRank && currentFile + 2 == newFile && Board.ValidateSpace(newRank, newFile))
     {
         if (Board.GetBoardSpace(newRank, newFile).HasPiece())
         {
             if (Board.GetBoardSpace(newRank, newFile).GetPiece().GetColor() != this.GetColor())
             {
                 return(true);
             }
         }
         else
         {
             return(true);
         }
     }
     else if (currentRank + 1 == newRank && currentFile - 2 == newFile && Board.ValidateSpace(newRank, newFile))
     {
         if (Board.GetBoardSpace(newRank, newFile).HasPiece())
         {
             if (Board.GetBoardSpace(newRank, newFile).GetPiece().GetColor() != this.GetColor())
             {
                 return(true);
             }
         }
         else
         {
             return(true);
         }
     }
     else if (currentRank - 1 == newRank && currentFile + 2 == newFile && Board.ValidateSpace(newRank, newFile))
     {
         if (Board.GetBoardSpace(newRank, newFile).HasPiece())
         {
             if (Board.GetBoardSpace(newRank, newFile).GetPiece().GetColor() != this.GetColor())
             {
                 return(true);
             }
         }
         else
         {
             return(true);
         }
     }
     else if (currentRank - 1 == newRank && currentFile - 2 == newFile && Board.ValidateSpace(newRank, newFile))
     {
         if (Board.GetBoardSpace(newRank, newFile).HasPiece())
         {
             if (Board.GetBoardSpace(newRank, newFile).GetPiece().GetColor() != this.GetColor())
             {
                 return(true);
             }
         }
         else
         {
             return(true);
         }
     }
     else if (currentRank + 2 == newRank && currentFile + 1 == newFile && Board.ValidateSpace(newRank, newFile))
     {
         if (Board.GetBoardSpace(newRank, newFile).HasPiece())
         {
             if (Board.GetBoardSpace(newRank, newFile).GetPiece().GetColor() != this.GetColor())
             {
                 return(true);
             }
         }
         else
         {
             return(true);
         }
     }
     else if (currentRank + 2 == newRank && currentFile - 1 == newFile && Board.ValidateSpace(newRank, newFile))
     {
         if (Board.GetBoardSpace(newRank, newFile).HasPiece())
         {
             if (Board.GetBoardSpace(newRank, newFile).GetPiece().GetColor() != this.GetColor())
             {
                 return(true);
             }
         }
         else
         {
             return(true);
         }
     }
     else if (currentRank - 2 == newRank && currentFile + 1 == newFile && Board.ValidateSpace(newRank, newFile))
     {
         if (Board.GetBoardSpace(newRank, newFile).HasPiece())
         {
             if (Board.GetBoardSpace(newRank, newFile).GetPiece().GetColor() != this.GetColor())
             {
                 return(true);
             }
         }
         else
         {
             return(true);
         }
     }
     else if (currentRank - 2 == newRank && currentFile - 1 == newFile && Board.ValidateSpace(newRank, newFile))
     {
         if (Board.GetBoardSpace(newRank, newFile).HasPiece())
         {
             if (Board.GetBoardSpace(newRank, newFile).GetPiece().GetColor() != this.GetColor())
             {
                 return(true);
             }
         }
         else
         {
             return(true);
         }
     }
     return(false);
 }
Beispiel #9
0
        private bool moveBishop(int currentRank, int currentFile, int newRank, int newFile)
        {
            //Negative X Negative Y
            bool pieceDetected = false;

            for (int i = -1; currentRank + i > 0 && currentFile + i > 0 && Board.ValidateSpace(currentRank + i, currentFile + i) && !pieceDetected; --i)
            {
                if (Board.GetBoardSpace(currentRank + i, currentFile + i).HasPiece())
                {
                    pieceDetected = true;
                    if (Board.GetBoardSpace(currentRank + i, currentFile + i).GetPiece().GetColor() != this.GetColor())
                    {
                        return(true);
                    }
                    break;
                }
                else
                {
                    if (currentRank + i == newRank && currentFile + i == newFile)
                    {
                        return(true);
                    }
                }
            }
            //Positive X Positive Y
            pieceDetected = false;
            for (int i = 1; currentRank + i < Board.GetBoardSize() && currentFile + i < Board.GetBoardSize() && Board.ValidateSpace(currentRank + i, currentFile + i) && !pieceDetected; ++i)
            {
                if (Board.GetBoardSpace(currentRank + i, currentFile + i).HasPiece())
                {
                    pieceDetected = true;
                    if (Board.GetBoardSpace(currentRank + i, currentFile + i).GetPiece().GetColor() != this.GetColor())
                    {
                        return(true);
                    }
                    break;
                }
                else
                {
                    if (currentRank + i == newRank && currentFile + i == newFile)
                    {
                        return(true);
                    }
                }
            }
            //Negative Y Positive X
            pieceDetected = false;
            for (int i = -1; currentRank + i < Board.GetBoardSize() && currentFile - i > 0 && Board.ValidateSpace(currentRank - i, currentFile + i) && !pieceDetected; --i)
            {
                if (Board.GetBoardSpace(currentRank - i, currentFile + i).HasPiece())
                {
                    pieceDetected = true;
                    if (Board.GetBoardSpace(currentRank - i, currentFile + i).GetPiece().GetColor() != this.GetColor())
                    {
                        return(true);
                    }
                    break;
                }
                else
                {
                    if (currentRank - i == newRank && currentFile + i == newFile)
                    {
                        return(true);
                    }
                }
            }
            //Positive Y Negative X
            pieceDetected = false;
            for (int i = 1; currentRank - i > 0 && currentFile + i < Board.GetBoardSize() && Board.ValidateSpace(currentRank - i, currentFile + i) && !pieceDetected; ++i)
            {
                if (Board.GetBoardSpace(currentRank - i, currentFile + i).HasPiece())
                {
                    pieceDetected = true;
                    if (Board.GetBoardSpace(currentRank - i, currentFile + i).GetPiece().GetColor() != this.GetColor())
                    {
                        return(true);
                    }
                    break;
                }
                else
                {
                    if (currentRank - i == newRank && currentFile + i == newFile)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }