Il modello di comando può essere applicato a un gioco Pokemon a turni?

4

Sto scrivendo la logica di base di Pokemon Gen I in Java (8), e sto cercando di capire il modo migliore per implementare l'aspetto del gioco a turni. In questo momento ho una classe Battle che ha due Player s ciascuno con un PokemonTeam .

L'idea è che un Player prende un Turn (un Battle ha molti Turn s) e alcune azioni si verificano, ad es. attacca con Pokemon , usa Item , cambia Pokemon , ecc. Quindi, una volta che l'azione singola è stata presa, deve essere applicata durante quel turno, e poi l'altro giocatore prende il turno.

Il mio design originale, che è leggermente cambiato, assomiglia a questo:

StavoprogettandodiimplementareunasuperclasseActioneActionResult,consottoclassiperciascunodeitipidiazione(adesempioAttackActioneAttackActionResult).Masembrachesarebbeunpo'diconfusionedausare,elaresponsabilitàdiapplicaredanni,effetti,gestionedellosvenimentodiPokemon,ecc.,Tuttosiriempieinquellesottoclassi,ilchesembraunacattivaidea.

Poimisonoimbattutonel schema di comando che sembra adattarsi al disegno di legge - "un modello di progettazione comportamentale in cui un oggetto viene utilizzato per incapsulare tutte le informazioni necessarie per eseguire un'azione o attivare un evento in un secondo momento ". Supponendo un buon uso del modello, potrei avere una buona delega nell'applicare azioni, gestire i risultati, aggiornare lo stato di battaglia, ecc. Senza trasformare le classi in classi di Dio.

Il modello di comando si adatta bene a un gioco a turni come Pokemon, o c'è qualcosa di più appropriato?

    
posta Chris Cirefice 02.10.2016 - 22:08
fonte

1 risposta

2

Il tuo piano iniziale che utilizza una classe Action sembra esattamente come lo schema di comando per me, quindi se pensi che questo sia ciò che ti serve, dovresti provarlo.

But that seems like it would be a bit confusing to use,

Perché? Avere solo un metodo public apply per un'azione mi sembra uno scenario di utilizzo piuttosto semplice.

responsibility of applying damage, effects, handling Pokemon fainting, etc. all gets stuffed into those subclasses

Sicuramente no. Non è necessario mettere tutto ciò in una sola sottoclasse Action . Se un Action ha un sacco di cose da fare, può delegare quella roba a dozzine di altre classi, se questo è ciò che è richiesto. In questo modo, una sottoclasse Action può anche essere una facciata .

Is the command pattern a good fit for a turn-based game like Pokemon

Potrebbe essere una buona idea per la tua implementazione della parte di azione dei turni in un gioco del genere. Ma sinceramente, non posso dirti se soddisferà i tuoi bisogni, devi provarlo da solo, vedere se funziona, e se non riesci a trovare una soluzione più semplice , allora è probabile una buona.

    
risposta data 02.10.2016 - 22:33
fonte

Leggi altre domande sui tag