Closed Fs00 closed 6 years ago
A me piace più la proposta di @AlibabaSakura. Credo si complichi un po' l'implementazione, ma la vedo meglio.
Allora vada per l'idea di @AlibabaSakura. Ci penseremo io e lui.
@AlibabaSakura Nell'ultimo commit ho rivisto la tua prima implementazione della classe di gestione della partita, ti spiego come avrei intenzione di implementare il tutto con il main (leggi questo commento con il codice della classe di gestione a fianco):
turnoSuccessivo()
, che riordina gli indici dei giocatori nell'array ordineGiocatori in base alla loro velocità (il più veloce è il primo)while (!partitaFinita) {
turnoSuccessivo();
ordineGiocatori = gestione.getOrdineGiocatori();
for (i = 0; i < ordineGiocatori.length; i++) {
int mossa = inputMossa(); // per brevità qui la metto come funzione
gestione.faiMossa(ordineGiocatori[i], mossa);
int stato = verificaPartitaConclusa(); // metodo che dovrebbe verificare se c'è una condizione per cui la partita termina
if (/*stato è un codice che prevede il termine della partita*/) {
partitaFinita = true;
break;
}
}
}
Inoltre, il metodo statico stampaMessaggio
servirà alle classi dei personaggi per stampare informazioni sugli attacchi/contrattacchi ecc..
Dimmi cosa ne pensi e cosa eventualmente si può migliorare.
Abbiamo quindi deciso che della classe Main per la riga di comando me ne occupo io, mentre @AlibabaSakura si occupa della classe GestioneGioco. Si è optato per un'implementazione della lotta solo per due giocatori, scartando quindi la proposta di predisporre la possibilità di effettuare lotte multiple.
L'implementazione della gestione della partita è stata completata con il commit 826ba7a, perciò chiudo.
La mia intenzione era quella, per ogni turno, di far scegliere prima a entrambi i giocatori le mosse e poi di darle in pasto alla classe di gestione, la quale calcolerebbe autonomamente chi far attaccare prima e gestirebbe tutto da sola. @AlibabaSakura, invece, ha proposto di far sì che, dopo che il primo giocatore ha scelto la sua mossa, la si effettui subito, stessa cosa per il secondo. Quindi si dovrebbe fare un metodo da chiamare nel main prima di ogni turno per decidere (in base alla velocità) chi deve fare la sua mossa prima. Dato che entrambi i modi hanno i loro pro e contro in fase di implementazione, quale decidiamo di fare? (domanda soprattutto per @alegotta, dato che non si è ancora espresso)
PS: Se la velocità di due personaggi è pari (può capitare, dato che la randomizzazione va da +5 a -5), allora entrambi avrebbero una probabilità del 50% di attaccare prima.