private void LoadPiece(short line, short file, PieceType type, bool isWhite) { var piece = new Piece(line, file, type, isWhite); Board[line, file] = piece; PieceLookup.Add(piece); }
private void MakeMove(Move move, bool wasWhite) { var movedPiece = Board[move.StartingLine, move.StartingFile]; var capturedPiece = Board[move.DestinationLine, move.DestinationFile]; if (capturedPiece != null) { PieceLookup.Remove(capturedPiece); capturedPiece = null; } if (movedPiece.Type == PieceType.King) { if (wasWhite && (White00 || White000)) { White00 = false; White000 = false; } else if (!wasWhite && (Black00 || Black000)) { Black00 = false; Black000 = false; } if (move.DestinationFile - move.StartingFile == 2) { Board[move.StartingLine, 7].File = 5; Board[move.StartingLine, 5] = Board[move.StartingLine, 7]; Board[move.StartingLine, 7] = null; } else if (move.DestinationFile - move.StartingFile == -2) { Board[move.StartingLine, 0].File = 3; Board[move.StartingLine, 3] = Board[move.StartingLine, 0]; Board[move.StartingLine, 0] = null; } } if (move.StartingFile == 7 && move.StartingLine == 7) { White00 = false; } else if (move.StartingFile == 7 && move.StartingLine == 0) { Black00 = false; } else if (move.StartingFile == 0 && move.StartingLine == 0) { Black000 = false; } else if (move.StartingFile == 0 && move.StartingLine == 7) { White000 = false; } Board[move.StartingLine, move.StartingFile] = null; movedPiece.File = move.DestinationFile; movedPiece.Line = move.DestinationLine; Board[move.DestinationLine, move.DestinationFile] = movedPiece; if (move.WasPromotion) { movedPiece.Type = (PieceType)move.PromotedTo; } }