Lo studente è invitato ad analizzare i vari passaggi proposti nel programma seguente.
Al termine lo studente deve apportare alcune ulteriori modifiche al programma.
Vengono simulate le 52 carte da poker. Dopo averle mescolate, vengono distribiuite ai giocatori.
#include <iostream> #include <stdlib.h> using namespace std; // int carta[52]; int Carte[52], seme[52]; int carteDate[52]; char valore[][3]={"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}; char colore[]={'C', 'Q', 'F', 'P'}; int i, j, k, tmp; int NGioc = 4, estratte=0; int giocatore[4][5]; // 4 giocatori con 5 carte int main() { srand(time(NULL)); // evita che si ripeta la stessa sequenza for (i=0; i<52; i++) { // generazione delle carte: Carte[i] = i%13; // si ottengono 4 sequenze di valori 1, 2, ..., 13 // che vengono assegnate in ordine agli elementi dell'array seme[i] = i/13; // si ottengono 13 volte 0, 13 volte 1, 13 volte 2 e 13 volte 3 // che servono a simulare il colore della carta. } // stampa di prova per verificare l'esatta generazione delle carte: for (j=0; j<52; j++) { cout << valore[Carte[j]] << colore[seme[j]] << " "; if (!((j+1)%13)) cout << endl; // passa alla linea successiva ogni 13 carte } // mescola le carte for (k=51; k>0; k--) { i= rand() % k; tmp = Carte[i]; Carte[i] = Carte[k]; Carte[k] = tmp; tmp = seme[i]; seme[i] = seme[k]; seme[k] = tmp; } // stampa di prova cout << endl << "carte mescolate" << endl; for (j=0; j<52; j++) { cout << valore[Carte[j]] << colore[seme[j]] << " "; if (!((j+1)%13)) cout << endl; // passa alla linea successiva ogni 13 carte } // distribuzione delle carte: estratte=0; // prima carta a ciascun giocatore giocatore[0][0]=estratte++; giocatore[1][0]=estratte++; giocatore[2][0]=estratte++; giocatore[3][0]=estratte++; // seconda carta a ciascun giocatore giocatore[0][1]=estratte++; giocatore[1][1]=estratte++; giocatore[2][1]=estratte++; giocatore[3][1]=estratte++; // terza carta a ciascun giocatore giocatore[0][2]=estratte++; giocatore[1][2]=estratte++; giocatore[2][2]=estratte++; giocatore[3][2]=estratte++; // quarta carta a ciascun giocatore giocatore[0][3]=estratte++; giocatore[1][3]=estratte++; giocatore[2][3]=estratte++; giocatore[3][3]=estratte++; // quinta carta a ciascun giocatore giocatore[0][4]=estratte++; giocatore[1][4]=estratte++; giocatore[2][4]=estratte++; giocatore[3][4]=estratte++; cout << endl; // mostra carte del giocatore 0 cout << "Carte del primo giocatore: "; for (k=0; k<5; k++) cout << valore[Carte[giocatore[0][k]]] << colore[seme[giocatore[0][k]]] << " "; cout << endl; // mostra carte del giocatore 1 cout << "Carte del secondo giocatore: "; for (k=0; k<5; k++) cout << valore[Carte[giocatore[1][k]]] << colore[seme[giocatore[1][k]]] << " "; cout << endl; // mostra carte del giocatore 2 cout << "Carte del terzo giocatore: "; for (k=0; k<5; k++) cout << valore[Carte[giocatore[2][k]]] << colore[seme[giocatore[2][k]]] << " "; cout << endl; // mostra carte del giocatore 3 cout << "Carte del quarto giocatore: "; for (k=0; k<5; k++) cout << valore[Carte[giocatore[3][k]]] << colore[seme[giocatore[3][k]]] << " "; cout << endl; system("PAUSE"); return 0; }
Compattare le operazioni di distribuzione delle carte e le successive operazioni di stampa, utilizzando uno o più cicli.
Calcolare il punteggio di ciascun giocatore