mirror of
https://github.com/MSWS/Chess.git
synced 2025-12-06 05:32:37 -08:00
refactor: Refactor pseudo-move legality and validation logic
Refactor and enhance move validation logic: - Refactor validation logic for legality of pseudo-moves, ensuring proper handling of enemy moves. - Modify checks to prevent illegal scenarios involving captures of the enemy king. - Adjust pseudo castle move conditions to validate target positions and account for enemy rook captures. - Streamline conditional flow by removing redundant checks.
This commit is contained in:
@@ -109,29 +109,33 @@ func (game Game) GetMoves() []Move {
|
||||
|
||||
legal := true
|
||||
for _, enemyMove := range enemyMoves {
|
||||
if enemyMove.IsCastle() {
|
||||
continue
|
||||
}
|
||||
if psuedoMove.IsCastle() && enemyMove.capture.GetType() == Rook {
|
||||
targetRow, targetCol := psuedoMove.to.GetCoords()
|
||||
enemyRow, enemyCol := enemyMove.to.GetCoords()
|
||||
if targetRow != enemyRow {
|
||||
continue
|
||||
}
|
||||
if targetCol == 0 && enemyCol == 3 {
|
||||
legal = false
|
||||
break
|
||||
}
|
||||
if targetCol == 7 && enemyCol == 5 {
|
||||
legal = false
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if enemyMove.capture.GetType() == King {
|
||||
legal = false
|
||||
break
|
||||
}
|
||||
if psuedoMove.IsCastle() {
|
||||
enemyRow, enemyCol := enemyMove.to.GetCoords()
|
||||
targetRow, targetCol := psuedoMove.to.GetCoords()
|
||||
|
||||
if enemyRow == targetRow && enemyCol == 4 {
|
||||
legal = false
|
||||
break
|
||||
}
|
||||
|
||||
if enemyMove.capture.GetType() == Rook {
|
||||
if targetRow != enemyRow {
|
||||
continue
|
||||
}
|
||||
if targetCol == 0 && enemyCol == 3 {
|
||||
legal = false
|
||||
break
|
||||
}
|
||||
if targetCol == 7 && enemyCol == 5 {
|
||||
legal = false
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if legal {
|
||||
|
||||
Reference in New Issue
Block a user