int main(int argc, char *argv[]) { if (def==0){ strcpy(players[0].nick,"Giocatore1"); } do{ stampamenprinc(); //chiama la funzione stampamenprinc scanf("%d",&scelta); //legge la scelta dell'utente getchar(); switch (scelta){ case 1: system("cls"); visimpo(tipo,num_gio,lun_cod,elem_cod,tentativi,players); //chiamo la funzione visimpo printf("\n\nAttendere, configurazione nuova partita in corso..."); Sleep(3000); system("cls"); printf("MASTERMIND -- NUOVA PARTITA\n\n"); //Se Modalità Umano vs Umano if(tipo==1){ printf("\nAttendere, il PC sta sorteggiando il codificatore...\n\n"); Sleep(4000); estratto=estrazionecod(players,num_gio); //Estrazione Codificatore strcpy(codificatore.nick,players[estratto].nick); //Copia Nick Codificatore for( j = estratto; j < num_gio-1; ++j ) //Rimuovi Codificatore dal Vettore Giocatori players[j] = players[j+1]; printf("%s Inserisci il codice segreto:\n\n",codificatore.nick); for(i=0;i<lun_cod;i++){ do{ printf ("Digita un numero qualsiasi [0 - %d] nella %d posizione: ",elem_cod-1,i+1); scanf ("%d",&cod[i]); } //Acquisizione del Codice Segreto while (cod[i]<0 || cod[i]>elem_cod-1);} //controlla se i valori inseriti nel vettore "cod" sono accettabili. printf ("\nL'iserimento del codice e' avvenuto con successo !!\n\n"); printf ("Il codice inserito e' il seguente: "); for (i=0;i<lun_cod;i++){ printf ("%5d",cod[i]); //mostra a video il codice inserito } printf ("\n\n** Si consiglia di prendere nota del codice **\n\n"); system ("PAUSE"); system ("CLS"); } //Se modalità Umano vs PC else{ strcpy(codificatore.nick,"CPU"); //Assegnazione del Codificatore alla CPU printf("\nAttendere, la CPU sar\205 il codificatore...\n\n"); Sleep(3000); printf("\nAttendere, la CPU sta inserendo il codice segreto...\n\n"); Sleep(3000); //Generazione Random del Codice Segreto dalla CPU srand (time(NULL)); for (i=0;i<lun_cod;i++){ cod[i]=rand()%elem_cod; } printf ("\nL'iserimento del codice e' avvenuto con successo !!\n\n"); printf ("Il codice inserito e' il seguente: "); for (i=0;i<lun_cod;i++){ printf ("\t*",cod[i]); //mostra a video il codice inserito } printf ("\n\n** Si consiglia di prendere nota del codice **\n\n"); system ("PAUSE"); system ("CLS"); } //Chiamata alla Funzione Partita partita(cod,dec,lun_cod,tentativi,elem_cod,num_gio,players,codificatore,giocatoriclass,gv,gc,&pass); //Chiamata alla Funzione Classifica classifica(giocatoriclass,pass); //Chiamata alla Funzione Top Ten topten(giocatoriclass,pass); printf("\n"); initialize(&listPointer); //Inizializza Lista //Chiamata alla Funzione Leggi da File per generazione e stampa della top ten LeggiDaFile(giocatoritop,&listPointer); //Chiamata alla Funzione Rsest Impostazioni per resettare le impostazioni resetimpo(players,&num_gio,&tentativi,&lun_cod,&elem_cod,&tipo,&def); main(argc,argv); break; case 2: //Chiamata alla funzione Carica per caricare una partita salavata carica(cod,dec,lun_cod,tentativi,elem_cod,num_gio,players,codificatore,giocatoriclass,gv,gc,giocatoritop,&tipo,&def); initialize(&listPointer); //Inizializza Lista LeggiDaFile(giocatoritop,&listPointer); //Chiamata alla Funzione Rsest Impostazioni per resettare le impostazioni resetimpo(players,&num_gio,&tentativi,&lun_cod,&elem_cod,&tipo,&def); break; case 3: //Chiamata alla Funzione Impostazioni per gestire le Impostazioni Modificabili dall'Utente impostazioni(players,&num_gio,&tentativi,&lun_cod,&elem_cod,&tipo,&def); break; case 4: initialize(&listPointer); //Inizializza Lista //Stampa a Video della Top Ten system("cls"); LeggiDaFile(giocatoritop,&listPointer); main(argc,argv); break; case 5: //Uscita system("cls"); printf("####### ## ## ####### ## ##\n"); printf("## ## ## ## ## ## ##\n"); printf("## ## ### ## ##\n"); printf("######## ## #### ##\n"); printf("## ## ## ## ##\n"); printf("## ## ## ## ## ##\n"); printf("####### ## ####### ## ##\n"); printf("\nIl Gioco \212 stato realizzato da:\n\n"); printf("\t - Giuseppe Pace\n\n"); printf("\t - Cosimo Bellini\n\n"); system("PAUSE"); return 0; break; default://Controllo sulla Scelta del Menu Principale printf("Valore errato\n\nPremere Invio ed effettuare nuovamente la scelta.\n"); } getchar(); }while(0<scelta<5); system("PAUSE"); return 0; }
/* Be careful not to call panic from here! */ void done(const char *st1) { #ifdef WIZARD if(wizard && *st1 == 'd'){ u.uswldtim = 0; if(u.uhpmax < 0) u.uhpmax = 100; /* arbitrary */ u.uhp = u.uhpmax; pline("For some reason you are still alive."); flags.move = 0; if(multi > 0) multi = 0; else multi = -1; flags.botl = 1; return; } #endif /* WIZARD */ signal(SIGINT, done_intr); signal(SIGQUIT, done_intr); signal(SIGHUP, done_hangup); if(*st1 == 'q' && u.uhp < 1){ st1 = "died"; killer = "quit while already on Charon's boat"; } if(*st1 == 's') killer = "starvation"; else if(*st1 == 'd' && st1[1] == 'r') killer = "drowning"; else if(*st1 == 'p') killer = "panic"; else if(*st1 == 't') killer = "trickery"; else if(!index("bcd", *st1)) killer = st1; paybill(); clearlocks(); if(flags.toplin == 1) more(); if(index("bcds", *st1)){ #ifdef WIZARD if(!wizard) #endif /* WIZARD */ savebones(); if(!flags.notombstone) outrip(); } if(*st1 == 'c') killer = st1; /* after outrip() */ settty(NULL); /* does a clear_screen() */ if(!done_stopprint) printf("Goodbye %s %s...\n\n", pl_character, plname); { long int tmp; tmp = u.ugold - u.ugold0; if(tmp < 0) tmp = 0; if(*st1 == 'd' || *st1 == 'b') tmp -= tmp/10; u.urexp += tmp; u.urexp += 50 * maxdlevel; if(maxdlevel > 20) u.urexp += 1000*((maxdlevel > 30) ? 10 : maxdlevel - 20); } if(*st1 == 'e') { struct monst *mtmp; struct obj *otmp; int i; unsigned worthlessct = 0; boolean has_amulet = FALSE; killer = st1; keepdogs(); mtmp = mydogs; if(mtmp) { if(!done_stopprint) printf("You"); while(mtmp) { if(!done_stopprint) printf(" and %s", monnam(mtmp)); if(mtmp->mtame) u.urexp += mtmp->mhp; mtmp = mtmp->nmon; } if(!done_stopprint) printf("\nescaped from the dungeon with %ld points,\n", u.urexp); } else if(!done_stopprint) printf("You escaped from the dungeon with %ld points,\n", u.urexp); for(otmp = invent; otmp; otmp = otmp->nobj) { if(otmp->olet == GEM_SYM){ i = otmp->quan*objects[otmp->otyp].g_val; if(i == 0) { worthlessct += otmp->quan; continue; } u.urexp += i; if(!done_stopprint) printf("\t%s (worth %d Zorkmids),\n", doname(otmp), i); } else if(otmp->olet == AMULET_SYM) { i = (otmp->spe < 0) ? 2 : 5000; u.urexp += i; if(!done_stopprint) printf("\t%s (worth %d Zorkmids),\n", doname(otmp), i); if(otmp->spe >= 0) { has_amulet = TRUE; killer = "escaped (with amulet)"; } } } if(worthlessct) if(!done_stopprint) printf("\t%u worthless piece%s of coloured glass,\n", worthlessct, plur(worthlessct)); if(has_amulet) u.urexp *= 2; } else if(!done_stopprint) printf("You %s on dungeon level %d with %ld points,\n", st1, dlevel, u.urexp); if(!done_stopprint) printf("and %ld piece%s of gold, after %ld move%s.\n", u.ugold, plur(u.ugold), moves, plur(moves)); if(!done_stopprint) printf("You were level %u with a maximum of %d hit points when you %s.\n", u.ulevel, u.uhpmax, st1); if(*st1 == 'e' && !done_stopprint){ getret(); /* all those pieces of coloured glass ... */ cls(); } #ifdef WIZARD if(!wizard) #endif /* WIZARD */ topten(); if(done_stopprint) printf("\n\n"); exit(0); }
//Funzione di Caricamento da Salvataggio void carica (int cod[], int dec[],int lun_cod, int tentativi,int elem_cod, int num_gio, giocatore players[], giocatore codificatore, giocatore giocatoriclass[],int gv,int gc, giocatore giocatoritop[], int *tipo, int *def) { FILE *fd; int i,pass; system("cls"); printf(" ## ###### ## ##### ## ## ## #####\n"); printf(" ## ## ## #### ## ## ## #### ## ##\n"); printf(" ## ## ## ## ## ## ## ## ## #### ## ###\n"); printf(" ## ## ## ###### ## ## ## ## ### ## ##\n"); printf(" ##### ###### ## ## ##### ## ## ## ##### ##\n"); sleep (800); system("cls"); printf(" ## ###### ## ##### ## ## ## #####\n"); printf(" ## ## ## #### ## ## ## #### ## ##\n"); printf(" ## ## ## ## ## ## ## ## ## #### ## ###\n"); printf(" ## ## ## ###### ## ## ## ## ### ## ##\n"); printf(" ##### ###### ## ## ##### ## ## ## ##### ## ##\n"); sleep(800); system("cls"); printf(" ## ###### ## ##### ## ## ## #####\n"); printf(" ## ## ## #### ## ## ## #### ## ##\n"); printf(" ## ## ## ## ## ## ## ## ## #### ## ###\n"); printf(" ## ## ## ###### ## ## ## ## ### ## ##\n"); printf(" ##### ###### ## ## ##### ## ## ## ##### ## ## ##\n\n"); sleep(400); fd=fopen("salvataggio.dat", "rb"); if (fd!= NULL){ fread(&elem_cod, sizeof(int), 1, fd); //leggo da file elem_cod fread(&lun_cod, sizeof(int),1,fd); //leggo da file lun_cod fread(&tentativi, sizeof(int),1,fd); //leggo da file tentativi fread(&num_gio, sizeof(int),1,fd); //leggo da file num_gio fread(&gc, sizeof(int),1,fd); //leggo da file gc fread(&gv, sizeof(int),1,fd); //leggo da file gv fread(&codificatore, sizeof(giocatore), 1, fd); //leggo da file codificatore for(i=0;i<num_gio-1;i++){ fread(&players[i].nick, sizeof(giocatore), 100, fd); } //leggo da file vettore players.nick for(i=0;i<num_gio-1;i++){ fread(&players[i].tentativo, sizeof(giocatore), 100, fd); } //leggo da file players.tentativo for(i=0;i<lun_cod;i++){ fread(&cod[i], sizeof(int),100, fd); } //leggo da fle vettore cod for(i=0;i<gv;i++){ fread(&giocatoriclass[i].nick, sizeof(giocatore),100, fd); fread(&giocatoriclass[i].tentativo, sizeof(giocatore),100, fd); } //leggo da file vettore giocatoriclass.nick e giocatoriclass.tentativo } else{ printf("File inesistente, mi spiace :( \n"); sleep(2000); main (); } fclose(fd); system("cls"); //chiudo file partita(cod,dec,lun_cod,tentativi,elem_cod,num_gio,players,codificatore,giocatoriclass,gv,gc,&pass); //chiamo la funzione partita classifica(giocatoriclass,pass); //chiamo la funzione classifica topten(giocatoriclass,pass); //chiamo la funzione topten printf("\n"); }