notnil / chess

chess package for go
MIT License
508 stars 126 forks source link

Add support for nil move in Position.Update #113

Open leonhfr opened 2 years ago

leonhfr commented 2 years ago

First, thanks for the awesome library! I'm using it to write a toy chess engine.

Then, this PR:

Position.Update is useful for game engines when also using the ValidMoves method as it skips redundant validation. It would also be useful to add support for nil move to make it act like passing is a thing in chess.

This could be used in the context of implementing null move pruning or in quiescence search to check if not capturing is better than capturing.

Currently, when passed nil Position.Update panics. The proposal is that when passed nil, it returns the same position with the opposite turn.