Per divertimento, sto cercando di scrivere uno dei giochi da tavolo preferiti di mio figlio come un pezzo di software. Alla fine mi aspetto di costruire una UI WPF su di essa, ma in questo momento sto costruendo la macchina che modella i giochi e le sue regole.
Mentre lo faccio, continuo a vedere problemi che penso siano comuni a molti giochi da tavolo, e forse altri li hanno già risolti meglio di me.
(Nota che l'intelligenza artificiale per giocare e gli schemi intorno alle alte prestazioni non sono interessanti per me.)
Finora i miei schemi sono:
Diversi tipi immutabili che rappresentano entità nella scatola del gioco, ad esempio dadi, dama, carte, un tabellone, spazi sul tabellone, denaro, ecc.
Un oggetto per ogni giocatore, che contiene le risorse dei giocatori (es. Denaro, punteggio), il loro nome, ecc.
Un oggetto che rappresenta lo stato del gioco: i giocatori, chi è il turno, la disposizione dei pezzi sul tabellone, ecc.
Una macchina a stati che gestisce la sequenza dei turni. Ad esempio, molti giochi hanno un piccolo pre-gioco in cui ogni giocatore tira per vedere chi inizia per primo; questo è lo stato iniziale. Quando il turno di un giocatore inizia, prima rotola, poi si muove, poi deve ballare sul posto, poi gli altri giocatori indovinano di che razza di pollo sono, quindi ricevono punti.
C'è qualche arte precedente di cui posso trarre vantaggio?
EDIT: Una cosa che ho capito di recente è che lo stato del gioco può essere suddiviso in due categorie:
Stato degli artefatti del gioco . "Ho $ 10" o "la mia mano sinistra è blu".
Stato della sequenza di gioco . "Ho tirato il doppio due volte; il prossimo mi mette in prigione". Una macchina a stati può avere senso qui.
EDIT: Quello che sto davvero cercando qui è il modo migliore per implementare giochi multiplayer a turni come Chess o Scrabble o Monopoly. Sono sicuro che potrei creare un gioco del genere semplicemente lavorandoci dall'inizio alla fine, ma, come altri Design Pattern, ci sono probabilmente alcuni modi per far andare le cose molto più agevolmente che non sono ovvie senza uno studio accurato. Questo è quello che spero.