Quote Originariamente inviata da scimmiaparlante Visualizza il messaggio
Per quanto riguarda il ritornare al giocatore 1 dopo il 4 basta realizzare l'incremento nel for con l'operatore modulo, affinché la variabile resti sempre fra uno e la lunghezza del tuo array-1.
Una cosa del tipo
codice:
i = (i+1)%4
Per fare le cose più pulite puoi quindi dichiarare una costante per la lunghezza e usare quella.
Attenzione che il sizeof in quel modo ti restituisce la lunghezza in byte dell'array e quindi il confronto non ha senso.
Inoltre, a meno di non prevedere un break nel for interno, la condizione su victory non è mai controllata e il programma non terminerà mai.
La varaibile cont poi cosa rappresenterebbe?

Grazie infinite, ho cambiato l' impostazione e ora funziona però non ho ben capito come si comporta la divisione del valore assoluto.
Cioè i=(i+1)%N con N=4 al primo giro i= 2, al secondo dovrebbe essere i=(2+1)%4 --> che valore ritorna?
cont++ serve perchè essendo un pezzo o meglio una funzione del gioco la parte del gioco effettivo non è ancora stata fatta, ora ho sistemato la parte che indica quale giocatore deve iniziare il turno.
Ora che il codice funziona vorrei esportarlo in una funzione in modo che quando chiamata restituisca il valore del giocatore che deve giocare. Ho pensato ad una cosa del genere:
ma secondo me non e corretta o meglio non vorrei che quando la chiamo si impalli nel ciclo.
Dovrebbe essere svincolata dalle istruzioni del turno che ancora devo scrivere.


#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;






//string chi_deve_giocare(int iniziale, int dim_vet, string vet[]) {
// int i;
// for (i = iniziale;; i = (i + 1) % dim_vet) {
// cout << "tocca a: " << vet[i] << endl;
// }
// return vet[i];
//}
//




void stampa_stringa_vincitore(string stringa_da_stampare) {


cout << "ha vinto: " << stringa_da_stampare << endl;
}


int main() {


string giocatori[4] = { "luca", "max", "tommy", "alle" };


bool victory = false; // condizone di uscita dal gioco se diventa true
int i, cont = 0, dim = 4;
int iniziale = 2, vincitore;


while (!victory) { // ciclo nel quale si svilupperà il gioco






for (i = iniziale;; i = (i + 1) % dim) {
cout << "tocca a: " << giocatori[i] << endl;
// {-------ISTRUZIONI DEL TURNO
cont++;
if (cont == 10) { // COTNTROLLO SULLA CONDIZIONE DI VITTORIA
string vincente;
victory = true;
vincente = giocatori[i];
stampa_stringa_vincitore(vincente);
break;


}
// }-----FINE TURNO, TOCCA AL SUCCESSIVO
}
}


}