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:
MSWS
2025-03-22 18:16:43 -07:00
parent 1b197dc642
commit 67ee26a484

View File

@@ -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 {