This is an old revision of the document!
Realizarea unui battle arena simplu, turn-based
Pentru simplitate, toate interactiunile se pot realiza prin butoane de comanda.
Bonusuri:
Cateva exemple, doar ca idee de inspiratie
Gasiti pe MS Teams inregistrat
Pentru a aplica comenzile la terminarea turului, acestea trebuie memorate si gestionate intr-o lista.
Command design pattern este unul dintre Gang of Four inițial și este util oricând doriți să urmăriți o serie specifică de acțiuni. Probabil că ați văzut command design pattern deja dacă ați jucat un joc care folosește funcționalitatea de undo/redo sau păstrează istoricul comenzilor într-o listă. Imaginați-vă un joc de strategie în care utilizatorul poate planifica mai multe ture înainte de a le executa efectiv. Acesta este command design pattern.
Command design pattern permite acțiunilor să fie reprezentate ca obiecte. Încapsularea acțiunilor ca obiecte vă permite să creați un sistem flexibil și extensibil pentru controlul comportamentului GameObjects ca răspuns la intrarea utilizatorului. Aceasta funcționează prin încapsularea unuia sau mai multor apeluri de metodă ca „obiect de comandă”, mai degrabă decât invocarea directă a unei metode. Apoi puteți stoca aceste obiecte de comandă într-o colecție, cum ar fi o coadă sau o stivă, care funcționează ca un mic buffer.
Stocarea obiectelor de comandă în acest fel vă permite să controlați timpul de execuție a acestora prin eventual întârzierea unei serii de acțiuni pentru redarea ulterioară. În mod similar, puteți să le refaceți sau să le anulați și să adăugați flexibilitate suplimentară pentru a controla execuția fiecărui obiect de comandă.
Iată câteva aplicații comune ale modelului în diferite genuri de joc:
Pentru a implementa un command pattern, veți avea nevoie de un obiect general care va conține acțiunea. Acest obiect de comandă va deține ce logică să efectueze și cum să o anuleze.
Există mai multe moduri de a implementa acest lucru, dar iată o versiune simplă folosind o interfață numită ICommand:
public interface ICommand { void Execute(); void Undo(); }
În acest caz, fiecare acțiune de joc va aplica interfața ICommand (puteți implementa aceasta și cu o clasă abstractă).
Fiecare obiect de comandă va fi responsabil pentru propriile sale metode Execute și Undo. Prin urmare, adăugarea mai multor comenzi în joc nu le va afecta pe cele existente.
Clasa CommandInvoker este apoi responsabilă pentru executarea și anularea comenzilor. În plus față de metodele ExecuteCommand și UndoCommand, are o stivă de anulare pentru a păstra secvența de obiecte de comandă.