private static void ValidatePosition(PositionOnTheBoard positionOnTheBoard) { if (positionOnTheBoard.Horizontal < 'a' || positionOnTheBoard.Horizontal > 'h' || positionOnTheBoard.Vertical < 1 || positionOnTheBoard.Vertical > 8 ) { throw new InvalidMoveException("Positions are out of the board!"); } }
public void PutFigureOnPositionWithoutMovingItActualy(PositionOnTheBoard positionOnTheBoard, Figure figure) { ValidatePosition(positionOnTheBoard); board[8 - positionOnTheBoard.Vertical, positionOnTheBoard.Horizontal - 'a'] = figure; //if (figure is ICastlingFigure) //{ // ((ICastlingFigure)figure).HasBeenMovedFromTheStartOfTheGame = true; //} }
public void PutFigureOnPosition(PositionOnTheBoard positionOnTheBoard, Figure figure) { ValidatePosition(positionOnTheBoard); board[8 - positionOnTheBoard.Vertical, positionOnTheBoard.Horizontal - 'a'] = figure; if (figure is ICastlingFigure) { ((ICastlingFigure)figure).HasBeenMovedFromTheStartOfTheGame = true; } }
public bool isPositionProducable(PositionOnTheBoard positionOnTheBoard) { if (this.color == Colors.White) { return(positionOnTheBoard.Vertical == 8); } else { return(positionOnTheBoard.Vertical == 1); } }
public void RemoveFigureOnPosition(PositionOnTheBoard positionOnTheBoard) { ValidatePosition(positionOnTheBoard); board[8 - positionOnTheBoard.Vertical, positionOnTheBoard.Horizontal - 'a'] = null; }
public Figure GetFigureOnPosition(PositionOnTheBoard positionOnTheBoard) { ValidatePosition(positionOnTheBoard); return(board[8 - positionOnTheBoard.Vertical, positionOnTheBoard.Horizontal - 'a']); }
private void MoveHandler(object sender, EventArgs eventArgs) { if (this.chessFieldSelected == null) { this.chessFieldSelected = (ChessField)sender; List <PositionOnTheBoard> attackingPos = this.chessGame.GetAllPossiblePositionsOfPlacingTheFigure(this.chessFieldSelected.positionOnTheBoard , this.chessFieldSelected.chessFigure, (Colors)this.chessFieldSelected.chessFigureColor); if (this.chessFieldSelected.chessFigure.FullName == typeof(King).FullName) { attackingPos.AddRange(this.chessGame.GetAllPossiblePositionsOfRookWhenCastlingTheKing(this.chessFieldSelected.positionOnTheBoard , (Colors)this.chessFieldSelected.chessFigureColor)); } if (this.chessFieldSelected.chessFigure.FullName == typeof(Rook).FullName) { PositionOnTheBoard kingPos = this.chessGame.GetPossiblePositionOfKingWhenCastlingTheRook(this.chessFieldSelected.positionOnTheBoard , (Colors)this.chessFieldSelected.chessFigureColor); if (kingPos != null) { attackingPos.Add(kingPos); } attackingPos.AddRange(this.chessGame.GetAllPossiblePositionsOfRookWhenCastlingTheKing(this.chessFieldSelected.positionOnTheBoard , (Colors)this.chessFieldSelected.chessFigureColor)); } foreach (var field in this.board) { if (((ChessField)field).positionOnTheBoard.Equals(this.chessFieldSelected.positionOnTheBoard) == false && attackingPos.Any(ap => ((ChessField)field).positionOnTheBoard.Equals(ap)) == false) { field.Enabled = false; } else { field.Enabled = true; } } } else { if (this.chessFieldSelected.chessFigure.FullName == typeof(King).FullName && this.chessGame.MakeCastling(this.chessFieldSelected.positionOnTheBoard, ((ChessField)sender).positionOnTheBoard, (Colors)this.chessFieldSelected.chessFigureColor)) { ; } else if (this.chessFieldSelected.chessFigure.FullName == typeof(Rook).FullName && this.chessGame.MakeCastling( ((ChessField)sender).positionOnTheBoard, this.chessFieldSelected.positionOnTheBoard , (Colors)this.chessFieldSelected.chessFigureColor)) { ; } else { var resultFormMove = this.chessGame.NormalMove(new NormalMovePositions (this.chessFieldSelected.positionOnTheBoard.Horizontal, this.chessFieldSelected.positionOnTheBoard.Vertical, ((ChessField)sender).positionOnTheBoard.Horizontal, ((ChessField)sender).positionOnTheBoard.Vertical) , chessFieldSelected.chessFigure, (Colors)chessFieldSelected.chessFigureColor); if (resultFormMove.HasTheFigurePawnProducedItself == true) { Figure figureChosen = null; DialogResult dialogResult = MessageBox.Show("Do you want to get a QUEEN?", "", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { figureChosen = new Queen((Colors)chessFieldSelected.chessFigureColor); } else { DialogResult dialogResult2 = MessageBox.Show("Do you want to get a ROOK?", "", MessageBoxButtons.YesNo); if (dialogResult2 == DialogResult.Yes) { figureChosen = new Rook((Colors)chessFieldSelected.chessFigureColor); } else { DialogResult dialogResult3 = MessageBox.Show("Do you want to get a BISHOP?", "", MessageBoxButtons.YesNo); if (dialogResult3 == DialogResult.Yes) { figureChosen = new Bishop((Colors)chessFieldSelected.chessFigureColor); } else { figureChosen = new Knight((Colors)chessFieldSelected.chessFigureColor); } } } this.chessGame.ProducePawn(new PositionOnTheBoard(((ChessField)sender).positionOnTheBoard.Horizontal, ((ChessField)sender).positionOnTheBoard.Vertical) , figureChosen, figureChosen.color); } } Colors chessFigureColor = (Colors)chessFieldSelected.chessFigureColor; this.InitialzeBoard(this.chessGame.chessBoard); if (this.chessGame.CheckForMate(chessFigureColor) && !this.chessGame.CheckForCheck(this.chessGame.chessBoard, SwitchColor(chessFigureColor))) { MessageBox.Show("remi"); this.ChessGameHasEnded(EndGameInfo.Draw); } if (this.chessGame.CheckForMate(chessFigureColor) && this.chessGame.CheckForCheck(this.chessGame.chessBoard, SwitchColor(chessFigureColor))) { MessageBox.Show("mate"); if (chessFigureColor == Colors.Black) { this.ChessGameHasEnded(EndGameInfo.BlackWin); } else { this.ChessGameHasEnded(EndGameInfo.WhiteWin); } } this.chessFieldSelected = null; } }