Pour le plaisir, j'essaye d'écrire un des jeux de société préférés de mon fils sous forme de logiciel. Finalement, je prévois de créer une interface utilisateur WPF dessus, mais en ce moment, je construis la machine qui modélise les jeux et ses règles.
En faisant cela, je continue à voir des problèmes que je pense communs à de nombreux jeux de société, et peut-être que d'autres les ont déjà résolus mieux que moi.
(Notez que l'IA pour jouer au jeu et les modèles autour de hautes performances ne m'intéressent pas.)
Jusqu'à présent, mes modèles sont:
Plusieurs types immuables représentant des entités dans la boîte de jeu, par exemple des dés, des pions, des cartes, un plateau, des espaces sur le plateau, de l'argent, etc.
Un objet pour chaque joueur, qui contient les ressources des joueurs (ex: argent, score), leur nom, etc.
Un objet qui représente l'état du jeu: les joueurs, à qui c'est le tour, la disposition des pièces sur le plateau, etc.
Une machine d'état qui gère la séquence des tours. Par exemple, de nombreux jeux ont un petit pré-jeu où chaque joueur lance pour voir qui joue en premier; c'est l'état de départ. Quand le tour d'un joueur commence, il roule d'abord, puis il bouge, puis il doit danser sur place, puis les autres joueurs devinent de quelle race de poulet ils sont, puis ils reçoivent des points.
Y a-t-il un état de la technique dont je peux profiter?
EDIT: Une chose que j'ai réalisé récemment est que l'état du jeu peut être divisé en deux catégories:
État de l'artefact du jeu . «J'ai 10 $» ou «ma main gauche est en bleu».
État de la séquence de jeu . "J'ai roulé deux fois en double; le suivant me met en prison". Une machine à états peut avoir un sens ici.
EDIT: Ce que je recherche vraiment ici, c'est la meilleure façon de mettre en œuvre des jeux multijoueurs au tour par tour comme Chess ou Scrabble ou Monopoly. Je suis sûr que je pourrais créer un tel jeu en travaillant simplement du début à la fin, mais, comme d'autres modèles de conception, il existe probablement des moyens de rendre les choses beaucoup plus fluides qui ne sont pas évidentes sans une étude approfondie. C'est ce que j'espère.