Call update_state in try_move
Refactor and add char member variable to player classes
Start to implement Observer pattern
Start to implement board_state_updated
Finish game.board_state_updated, change board.try_move to pass in self