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;
}
Beispiel #2
0
/*
* 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();
}