Ti passo sia la parta di codice di inizializzazione delle probabilità sia la parte di codice di stampa .....fondamentalmente serve controllare questi...
void crea_scacchiera () {
reset();
srand((unsigned int)time(0));
printf("Immettere la lunghezza n di un lato della scacchiera: " );
scanf("%d", &lato );
mappa=lato*lato ;
scacchiera=malloc(lato*lato*sizeof(struct Cella));
printf("Grandezza Mappa => %d (%dX%d)\n\n",mappa,lato,lato);
printf("Ai fini della difficoltà del gioco dovrai inserire 3 probabilità la cui somma dovrà fare 100..... \n\n" );
do {
printf("\t Probabilità di trovare in una data cella una'TRAPPOLA':" );
scanf("%d", &trapp);
printf("\t Probabilità di trovare in una data cella un 'ALIENO' :" );
scanf("%d", &alie );
printf("\t Probabilità di trovare in una data cella 'NESSUN PERICOLO':");
scanf("%d", &ness_per );
if (ness_per +trapp+alie !=100) {
printf(" \n Ricorda la somma delle probabilità deve essere 100 \n\n " );
}
}
while( ness_per +trapp+alie !=100);
printf("\t\nOra dovrai inserire 5 probabilità legate al ritrovamento o meno degli oggetti....." );
do {
printf("\n\n\t Probabilità di trovare in una data cella 'POZIONE':" );
scanf("%d", &pozio);
printf("\t Probabilità di trovare in una data cella un 'MEDIKIT' :" );
scanf("%d", &medik );
printf("\t Probabilità di trovare in una data cella 'MATERIALE':" );
scanf("%d", &mater);
printf("\t Probabilità di trovare in una data cella un 'COLPI LANCIARAZZI' :" );
scanf("%d", &colpilancia );
printf("\t Probabilità di trovare in una data cella 'NESSUN OGGETTO':" );
scanf("%d", &no_obj );
if (no_obj+pozio+medik+colpilancia+mater !=100) {
printf("Ricorda la somma delle probabilità deve essere 100\n\n" );
}
} while(no_obj+pozio+medik+colpilancia+mater !=100);
//inizializzo Tipo_pericolo
for ( int i = 0; i < lato; i++) {
for ( int j= 0; j <lato; j++) {
int prob1= rand()%101;
if (prob1<ness_per) {
scacchiera[i*lato+j].pericolo=nessun_pericolo;
} else if (ness_per<=prob1&&prob1<ness_per+trapp) {
scacchiera[i*lato+j].pericolo=trappola;
} else if(prob1>ness_per+trapp){
scacchiera[i*lato+j].pericolo=alieno;
}
}}
sleep(1);
//inizializzo Tipo_oggetto
for ( i = 0; i < lato; i++) {
for ( j= 0; j <lato; j++) {
int prob2 =rand()%101;
if (prob2<no_obj) {
scacchiera[i*lato+j].oggetto=nessun_oggetto;
printf("%d\n",prob2);
} else if (no_obj<=prob2&&prob2<no_obj+medik) {
scacchiera[i*lato+j].oggetto=medikit;
} else if (no_obj+medik<=prob2&&prob2<no_obj+medik +pozio)
scacchiera[i*lato+j].oggetto=pozione;
else if (no_obj+medik+pozio<=prob2&&prob2<no_obj+medik+pozio+mater)
scacchiera[i*lato+j].oggetto=materiale;
else if (no_obj+medik+pozio+mater<prob2)
scacchiera[i*lato+j].oggetto=colpi_lanciarazzi;
}
}
sleep(1);
Ciccio.x=rand()%lato;
sleep(1);
Ciccio.y=rand()%lato;
sleep(1);
Ninja.x=rand()%lato;
sleep(1);
Ninja.y=rand()%lato;
sleep(1);
printf("Ciccio.x=%d\n", Ciccio.x );
printf("Ciccio.y=%d\n", Ciccio.y );
printf("Ninja.x=%d\n", Ninja.x );
printf("Ninja.y=%d\n", Ninja.y);
printf("\n\n\nOk......la mappa è stata creata\n\n\n");
}
void stampa_scacchiera(){
if(scacchiera == NULL){
printf("Devi ancora creare la scacchiera!...\n ");
printf("\n ");}
printf("\n\n\n\n" );
int l, p ;
for ( l = 0; l < lato ; l++) {
for (p=0; p<lato ; p++) {
if (scacchiera[l*lato+p].pericolo==nessun_pericolo) {
printf(" [1" );
} else if (scacchiera[l*lato+p].pericolo==alieno) {
printf(" [2" );
} else if(scacchiera[l*lato+p].pericolo) {
printf(" [3" );
}///////////////////////////////////////////////////
if(scacchiera[l*lato+p].oggetto==nessun_oggetto) {
printf(",4]" );
} else if(scacchiera[l*lato+p].oggetto==medikit) {
printf(",5]" );
} else if(scacchiera[l*lato+p].oggetto==pozione) {
printf(",6]" );
}
else if(scacchiera[l*lato+p].oggetto==materiale) {
printf(",7]" );
} else if(scacchiera[l*lato+p].oggetto) {
printf(",8]" );
}
}
printf("\n" );
}
printf("\t\t\t \n\nLegenda :\n\n");
printf("\nNessun pericolo=1\nAlieno=2\nTrappola=3\nNessun Oggetto=4\nMedikit=5\nPozione=6\nMateriale=7\nColpi lanciarazzi=8\n\n\n\n" );
}