Sto sviluppando un gioco da tavolo che ha una classe di gioco che controlla il flusso del gioco, e giocatori collegati alla classe di gioco. Il tabellone è solo una classe visiva, ma il controllo dei movimenti è tutto per gioco.
Il giocatore può provare a fare movimenti falsi che portano al gioco dicendo al giocatore che questo tipo di movimento non è permesso (e ne spiega il motivo). Ma in alcuni casi, il giocatore può semplicemente fare un movimento e rendersi conto che non è la mossa migliore, o semplicemente perdere il click sulla scacchiera, o semplicemente provare un altro approccio.
Il gioco può essere salvato e caricato, quindi un approccio potrebbe memorizzare tutti i dati prima del movimento e non consentire un rollback, ma consentire all'utente di caricare l'ultima svolta salvata automaticamente. Questo sembra un buon approccio, ma implica l'interazione dell'utente, e il ridisegno della scheda potrebbe essere noioso all'utente. C'è un modo migliore per fare questo genere di cose o l'architettura conta davvero su questa cosa?
La classe di gioco e la classe del giocatore non sono complicate quindi è clonazione delle classi una buona idea, o separare i dati del gioco dalle regole del gioco un approccio migliore, o il salvataggio / caricamento (anche automatico su un rollback richiesto) è ok?
AGGIORNAMENTO: come funziona questo gioco: Ha una scheda principale dove fai mosse (mosse semplici) e una plancia giocatore che reagisce alle mosse fatte sul tabellone principale. Ha anche movimenti di reazione in base alle mosse di altri giocatori e alle mosse di te stesso. Puoi anche reagire quando non è il tuo turno, facendo cose sulla tua tavola. Forse non posso annullare tutte le mosse, ma mi piace l'idea di annullare / ripristinare all'interno di una delle risposte attuali.