Hello @Pot4t0 !
Sound interesting let me help you. First of all lest split the responsibilities.
I would like to start with:
Piece (Actor):
Responsabilities
- Know his current location
- Know how its move
- I am in game?
Chessboard (Actor)
Responsabilities
- Knows the size of the board
- Has a logic array of two dimensions of Sqaure Data (See below). This will help to know if a piece is in a location or not.
- Know the “id” position of each chess piece
- Know if a Square is occuppied or not.
Square Data (Struct):
- Piece* > Pointer to know which piece is ocupping this
- Location: X, Y, Z > To know the location of the world for this square
ChessManager (Actor or Info)
- Something to deside the next move. Can be simple or complex if you want to add meaning to the plays.
The flow will be the next:
1 - ChessManager decide the piece and the Move to do. Searching the availables pieces moves.
2 - Chesboard validates if the movement is valid (if there is other piece blocking the current piece )
3 - If everything is valid you move the piece. Getting the positions and updating the chesboard data.