int mano (giocatore *gioc, int numGioc, carta mazzo[4][13]) { int i, j; /*mescolo le carte*/ mescolaMazzo(mazzo); /*azzero i punteggi e i fold*/ for (i = 0; i < numGioc; i++) { *(punteggi + i) = -1; gioc[i].fold = FALSE; } /*distribuisci carte*/ for (i = 0; i < 5; i++) { for (j = 0; j < numGioc; j++) { gioc[j].mano[i] = distribuisciCarta(mazzo); } } /*ordina mano*/ for (i = 0; i < numGioc; i++) { gioc[i] = ordinaMano(gioc, i); } /*cambia carte*/ for (i = 0; i < numGioc; i++) { gioc[i] = cambiaCarte(gioc, i, mazzo); } //trova massimo nella mano for (i = 0; i < numGioc; i++) { gioc[i].cartaAltaMano.num = gioc[i].mano[4].num; gioc[i].cartaAltaMano.seme = gioc[i].mano[4].seme; } for (i = 0; i < numGioc; i++) { analizzaMano (gioc, i); } contaFold = 0; contaVedi = 0; int piatto = 0; puntataPrec = 0; //punta vedi folda while (contaVedi < numGioc && contaFold < numGioc) { for (i = 0; i < numGioc; i++) { if (gioc[i].fold == FALSE && contaFold < numGioc && contaVedi < numGioc && gioc[i].cash > 0) { piatto += puntaVedi(gioc, i); } } } //controlla quanti hanno perso for (i = 0; i < numGioc; i++) { if (gioc[numGioc].cash <= 0) { contaKO++; } } /*trova vincitore*/ int winner = vincitore(gioc, numGioc, piatto); return winner; }
/* * vocabolo() * funzione che permette di giocare al gioco VOCABOLO. * * Variabili locali di questa funzione: * 1- un vettore di caratteri per memorizzare le consonanti estratte * casualmente; * 1- 2 variabili di tipo carattere, la prima, per memorizzare il * carattere restituito della funzione che si occupa di far * inserire all'utente la difficolta' del gioco e restituirla * alla funzione chiamante; la seconda serve per creare una copia * della precedente variabile, perche' essa verra' passata per * indirizzo, a funzioni che ne modificheranno il valore nel caso * l'utente violi il tempo concesso dalla modalita' scelta e di * conseguenza occorrera' ripristinarne il "vero" valore, mediante * questa variabile di copia; * 3- 2 variabili di tipo intero, utilizzabili come contatori per dei * cicli e come indici di vettori; * 4- una variabile di tipo intero per memorizzare il numero di * consonanti per turno; * 5- una variabile di tipo intero per memorizzare il numero di * giocatori (inizializzata con l'apposita funzione); * 6- un vettore di strutture, per memorizzare i dati di ogni * giocatore. */ void vocabolo() { // Dichiarazione delle variabili: */ /*1*/ char consonante[7]; /*2*/ char dif, difTemp; /*3*/ int i, j; /*4*/ int nCPT; /*5*/ int numGiocatori=getNumGiocatori(); /*6*/ Giocatore giocatore[numGiocatori]; // Inserimento del Nome e del Cognome di ogni giocatore: setGiocatori(giocatore, numGiocatori); // Scelta della difficolta: dif=impostaDifficolta(); difTemp=dif; // copia di dif... // Esecuzione del gioco: /* Il prossimo ciclo utilizzato, serve per ripetere il suo blocco di * istruzioni 4 volte (per le 4 fasi del gioco). quindi la condizione * sara': "per nCPT che va da 4 a 7" perche' 4 sono le consonanti della * prima fase del gioco e 7, le consonanti dell'ultima fase). */ for(nCPT=4; nCPT<=7; nCPT++) { // Estrazione delle nCPT consonanti: setConsonanti(consonante, nCPT); for(i=0; i<numGiocatori; i++) // "Per ogni giocatore": { // Giocata del giocatore di turno: /* Il prossimo ciclo utilizzato non ripete il suo blocco di * istruzioni, solo se il giocatore di turno ha inserito una * parola che rientra nel regolamento del gioco. */ do{ system("cls"); printf("\n\n\t Premere ESC in qualsiasi momento per uscire..."); printf("\n\n\t ATTENZIONE! Ricordiamo che sono ritenute valide "); printf("solo\n\t parole scritte completamente in MAIUSCOLO e che "); printf("sia-\n\t no formate da vocali e consonanti proposte (non "); printf("rip-\n\t etute)! Pertanto, non potranno essere immessi "); printf("carat-\n\t teri fuori dal regolamento!!!"); printf("\n\n\t Turno %d: lettere estratte: ", nCPT-3); // Stampa delle consonanti estratte: for(j=0; j<nCPT; j++) printf("%c ", consonante[j]); printf("\n\n\n\n\t Tocca al giocatore "); printf("%d, %s %s:", i+1, giocatore[i].nome, giocatore[i].cognome); printf("\n\n\t inserire la parola: "); // Inserimento e controllo della parola inserita: }while(setParola(giocatore[i].parola, consonante, nCPT, &dif)); // Calcolo e dichiarazione del punteggio del giocatore di turno: // "Se l'utente ha violato il tempo concesso dalla difficolta'": if(dif=='0') { printf("\n\n\t Il tempo concesso dalla difficolta' scelta, e'"); printf(" stato superato"); dif=difTemp; // Per recuperare il "vero" valore di dif. } else // "..altrimenti": { giocatore[i].punti+= calcolaPunti(giocatore[i].parola, consonante, nCPT); } printf("\n\n\t Punteggio totalizzato = %d", giocatore[i].punti); printf("\n\n\t Premere un tasto per continuare......"); getch(); } } // Controllo e dichiarazione del/dei giocatore/i vincente/i: vincitore(giocatore, numGiocatori); printf("\n\n\n\n\n\t Premere un tasto per tornare al menu'......"); getch(); }