Buonasera ragazzi, mi sono appena iscritto.
Sto svolgendo un progetto universitario, la creazione del gioco risiko in c.
Solo che mi sorge un problema, come suddividere i territori ai vari giocatori, vi chiedo aiuti, spunti e idee, ringrazio in anticipo chi vorrà aiutarmi.
questo è il sorgente che ho scritto fin ora
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
int Menu();
void Risiko();
int NumeroGiocatori();
int NumeroArmate();
void CarteObbiettivo();
int Estrazione();
int PrimoAdIniziare();
void Risiko(){ //FUNZIONANTE
printf("********* ++ sssssssss ii kk kk ooooooooooo\n"
"********* ++ sssssssss ii kk kk ooooooooooo\n"
"** ** ++ ss ii kk kk oo oo\n"
"** ** ++ ss ii kk kk oo oo\n"
"********* ++ sssssssss ii kkkk oo oo\n"
"********* ++ sssssssss ii kkk oo oo\n"
"*** * ++ ss ii kk kk oo oo\n"
"** ** ++ ss ii kk kk oo oo\n"
"** ** ++ sssssssss ii kk kk ooooooooooo\n"
"** ** ++ sssssssss ii kk kk ooooooooooo\n");
}
//struttura giocatore
typedef struct {
char nome[20];
char colore[20];
int num_armate;
char carta_obbiettivo[60];
int matricola;
}giocatori;
int main(){
int matricola=0; //numero univoco per identificare il giocatore
int i=0; //contatore di lavoro
int scelta; //variabile che indica la scelta effettuata nel menu scelta
int numero_giocatori; // indica quanti giocatori stanno giocando
int numero_armate;
char carta[60];
int primoadiniziare;
int z=0; //condizione per uscire fuori dal primo ciclo
int v=0; //condizione per uscire dal secondo ciclo
giocatori giocatore[6];
Risiko();
scelta=Menu();
numero_giocatori=NumeroGiocatori();
numero_armate=NumeroArmate();
while (i<numero_giocatori){
printf("Inserisci il nome del giocatore n. %d\n", i+1);
scanf("%s", &giocatore[i].nome);
printf("Scegli il colore del giocatore n. %d\n", i+1);
scanf("%s", giocatore[i].colore);
giocatore[i].num_armate=numero_armate;
CarteObbiettivo(giocatore[i].carta_obbiettivo);
puts(giocatore[i].carta_obbiettivo);
giocatore[i].matricola=matricola,
i++;
matricola++;
}
i=0;
while (z<1){ //condizione per uscire fuori dal primo ciclo
primoadiniziare=Estrazione();
if (primoadiniziare>matricola){
primoadiniziare=Estrazione();
}
else{
while (v<1)
if (primoadiniziare==giocatore[i].matricola){
printf("\nIl giocatore che inizia per primo è: %s", giocatore[i].nome);
v=1;
z=1;
}
else {
i++;
}
}
}
}
int Menu(){ //FUNZIONANTE
int scelta;
printf("\n\n\n\n\n\nSeleziona una delle opzioni:\n1)Gioca");
scanf("%d", &scelta);
return scelta;
}
int NumeroGiocatori(){ //FUNZIONANTE
int numerogiocatori;
puts("Inserisci il numero dei giocatori, un minimo di 3, un massimo di 6");
scanf("%d", &numerogiocatori);
return numerogiocatori;
}
int NumeroArmate(){ //FUNZIONANTE
int numeroarmate;
printf("\nScegli con quante armate vuoi giocare:\n1)20\n2)25\n3)30\n4)35\n");
scanf("%d", &numeroarmate);
if (numeroarmate==1){
return 20;
}
else if (numeroarmate==2){
return 25;
}
else if (numeroarmate==3){
return 30;
}
else if (numeroarmate==4){
return 35;
}
//return 0;
}
void CarteObbiettivo(char carta[]){ //il numero 6 corrisponde alle carte obbiettivo presenti nel gioco //FUNZIONANTE
int random;
int lunghezza=0;
int i=0;
random=Estrazione();
char carta1[30]="Conquistare24territori";
char carta2[35]="ConquistareilNordAmericael'Africa";
char carta3[40]="ConquistareilNordAmericael'Oceania";
char carta4[40]="Conquistarel'AsiaeilSud America";
char carta5[40]="Conquistarel'Asiael'Africa";
char carta6[60]="Distruggerecompletamentetuttelearmatediuncolore";
if (random==1){
lunghezza=strlen(carta1);
while(i<lunghezza){
carta[i]=carta1[i];
i++;
}
}
else if(random==2){
lunghezza=strlen(carta2);
while(i<lunghezza){
carta[i]=carta2[i];
i++;
}
}
else if (random==3){
lunghezza=strlen(carta3);
while(i<lunghezza){
carta[i]=carta3[i];
i++;
}
}
else if (random==4){
lunghezza=strlen(carta4);
while(i<lunghezza){
carta[i]=carta4[i];
i++;
}
}
else if (random==5){
lunghezza=strlen(carta5);
while(i<lunghezza){
carta[i]=carta5[i];
i++;
}
}
else if (random==6){
lunghezza=strlen(carta6);
while(i<lunghezza){
carta[i]=carta6[i];
i++;
}
}
//puts(carta);
}
int Estrazione(){ //FUNZIONANTE
int random;
srand(time(0));
random=1+rand()%6;
return random;
}
int PrimoAdIniziare(){ //FUNZIONATE
int random;
srand(time(0));
random=1+rand()%6;
return random;
}