This is the card_engine_pp project.
See the BUILDING document.
See the CONTRIBUTING document.
Notice that Turn to CheckState have the same flow. It seems that we might be able to define a card game by utilising Turn -> CheckState for all transitions. The transition should specify what player can take the action, who the next action taker is, what the board state requires for this action to be valid.
stateDiagram-v2
[*] --> SetupGame
SetupGame --> Round: Start
Round --> [*]: EndGame
Round --> Turn: StartRound
Turn --> EvaluationStep : Operation
EvaluationStep --> EvaluationStep: PostOperation
EvaluationStep --> Turn: WaitForNextTurn
EvaluationStep --> CalculateScore: IsWin
CalculateScore --> Round: EndRound
# note right of EvaluationStep : This is the note to the left.