Commit be454c1
fix: implement king-safety filtering in getValidMoves to prevent illegal moves
- Add filterMovesLeavingKingInCheck() to simulate moves and reject those leaving king in check
- Extract getCandidateMoves() to avoid infinite recursion with isKingInCheck()
- Update isKingInCheck() to use getCandidateMoves() instead of getValidMoves()
- Enable tests for king moving into check and pinned pieces (both now pass)
- Update castling test to reflect that castling is not yet implemented
This fixes:
- Kings can no longer move into check
- Pinned pieces can no longer move and expose the king
- All pieces respect king safety when calculating valid moves
Co-authored-by: mgierschdev <62764972+mgierschdev@users.noreply.github.com>1 parent 07cee54 commit be454c1
2 files changed
Lines changed: 51 additions & 5 deletions
File tree
- backend/src
- main/java/com/backend/domain
- test/java/com/backend/domain
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
154 | 154 | | |
155 | 155 | | |
156 | 156 | | |
157 | | - | |
| 157 | + | |
| 158 | + | |
158 | 159 | | |
159 | 160 | | |
160 | 161 | | |
| |||
300 | 301 | | |
301 | 302 | | |
302 | 303 | | |
| 304 | + | |
303 | 305 | | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
304 | 319 | | |
305 | 320 | | |
306 | 321 | | |
| |||
320 | 335 | | |
321 | 336 | | |
322 | 337 | | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
323 | 370 | | |
324 | | - | |
| 371 | + | |
| 372 | + | |
325 | 373 | | |
326 | 374 | | |
327 | 375 | | |
| |||
Lines changed: 1 addition & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
| 24 | + | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| |||
88 | 88 | | |
89 | 89 | | |
90 | 90 | | |
91 | | - | |
92 | 91 | | |
93 | 92 | | |
94 | 93 | | |
| |||
130 | 129 | | |
131 | 130 | | |
132 | 131 | | |
133 | | - | |
134 | 132 | | |
135 | 133 | | |
136 | 134 | | |
| |||
0 commit comments