⚠️ Warning: This is a draft ⚠️

This means it might contain formatting issues, incorrect code, conceptual problems, or other severe issues.

If you want to help to improve and eventually enable this page, please fork RosettaGit's repository and open a merge request on GitHub.

{{draft task|Move generation}} This is a sub-task of the Chess player task.

Using suitable data structures, generate a list of valid moves given a chess game position and the side-to-move. You can create a basic (and incomplete) solution or create an advanced solution which covers all possible moves and depends on tracking more of the game state.

Basic implementation: #Moves based on piece type #Promotion to queen #Allow resignation More advanced/full implementation: #Castling (not through check) #En-passant capture #All promotions #Move legality for moving in/out of check #Draw by repetition and 50-move rule

Describe how complete your solution is, and try to create a self-contained component which could be used by a complete chess program.