public bool MakeAIMove(ref bool extra_movement) { bool rtn = false; if (!(GetPlayerPlaying() is VirtualPlayer)) { return(rtn); } Move currentMove = (GetPlayerPlaying() as VirtualPlayer).GetMove(Board, GetTurnColor().Substring(0, 1)); if (currentMove != null) { if (IsPlayPossible(currentMove.origin.Position, currentMove.destination.Position, GetTurnColor().Substring(0, 1))) { AIMove?.Invoke(currentMove.origin.Position, currentMove.destination.Position); UpdatePieces(currentMove.origin.Position, currentMove.destination.Position); rtn = true; } } if (HasEaten) { if (ExtraMov(currentMove.destination.Position, GetTurnColor().Substring(0, 1))) { extra_movement = true; } } CheckWinner(); if (Winner != null) { IsGameOver = true; } CheckQueen(GetTurnColor().Substring(0, 1), currentMove.destination.Position); return(rtn); }