Ehm scusate il ritardo. Allora il mio gioco è memory costruito e compilato in dev-c++.
Volevo implementare al di sopra della matrice oltre ai punti e ai tentativi anche il tempo di scadenza del gioco. Come faccio?
Se volete vi allego il mio prog. Ma non riesco. Anzi ve lo copio qui ma è lunghissimo. Cmq guardatelo e ditemi dove devo implementare il timer. Grazie infinite.
#include <stdio.h>
#include <stdlib.h>
#define N_RIG 4 //definisce il numero di righe della matrice
#define N_COL 4 //definisce il numero di colonne della matrice
#define LETTERE 16 //definisce il numero dei partecipanti (in questo caso sono le coppie di numeri da 1 a 8)
//all'estrazione casuale per essere in seguito immesse nella matrice del Gioco
#define LUNG_NOME 1 //definisce la lunghezza del nome (in questo caso la lunghezza dei numeri)
char matrice[N_RIG][N_COL]; //variabile character: dichiarazione della matrice attraverso il nuomero di righe e colonne
int nomiScelti[LETTERE]; //variabile integer: dichiarazione di tutti i numeri che verranno estratti e inseriti randomicamente nella matrice
int numeriDisponibili = LETTERE; //variabile integer: dichiarazione in cui i numeriDisponibili sono dati dall'insieme di numeri da estrarre randomicamente
char matriceGioco[4][4]; //variabile character: matrice che permette di mantenere lo stato del gioco
int tentativi; //variabile integer: dichiarazione dei tentativi usati durante il gioco
int numerogiocate; //variabile integer: dichiarazione del numero di gocate
int numeroRandom(int lBound, int uBound); //variabile integer: funzione random che estrae casualmente ogni numero dichiarato nell'insieme e inserito volta per vlta nella matrice
int selezionaUtente(int lBound, int uBound); //variabile integer: scelta casuale dei numeri
int punti;
void visualizzamatrice(void); //variabile puntatore void riferito alla visualizzazione della tabella (matrice)
void istruzioni(void);
int punteggiofinale();
int main() // inizio programma
{
char opzione; //variabile character: dihiarazione dell'opzione di scelta
int stop =1; // dichiarazione dello stop iniziale del programma per consentire all'utente di scegliere una delle opzioni
int riga_carta1, colonna_carta1, riga_carta2, colonna_carta2, carta1, carta2, vittoria, finePartita; // dichiarazioni della riga e colonna delle carte 1 e 2, vittoria e fine partita
int errore, countVit; // dichiarazione dell'errore di inserimento di un carattere e del contatore per la vincita
while (stop) // inizio del ciclo con stop iniziale del programma
{ /////// Stampa interfaccia grafica iniziale e a basso livello del gioco
printf(" %c----------------------------------------%c\n",184,184); //stam
printf(" | * * **** * * ***** **** * * |\n");
printf(" | ** ** * ** ** * * * * * * |\n");
printf(" | * * * **** * * * * * **** * |\n");
printf(" | * * * * * * * * * * |\n");
printf(" | * * **** * * ***** * * * |\n");
printf(" %c----------------------------------------%c\n",184,184);
printf(" %c----------------------------------------%c\n",184,184);
printf(" | @ @ @@@@ @ @ @@@@@ @ @ @ |\n");
printf(" | @ @ @ @ @ @ @ @ @ @ |\n");
printf(" | @ @ @ @@@@ @ @ @ @ @ @@@@ @ |\n");
printf(" | @@ @@ @ @@ @@ @ @ @ @ @ @ |\n");
printf(" | @ @ @@@@ @ @ @@@@@ @@@@ @ @ |\n");
printf(" %c----------------------------------------%c\n",184,184);
printf("\n");
printf(" *Versione Trial*\n");
printf(" *By Cris!*\n");
printf("\n");
printf("\n %c- A -%c Gioca",184,184);
printf("\n %c- B -%c Info",184,184);
printf("\n %c- C -%c Esci",184,184);
printf("\n > ");
fflush(stdin); // funzione di flusso di dati
scanf("%c",&opzione); // scansione del tasto premuo dall'utente
system("cls"); // sistema di pulizia dello stampato precedente
switch(opzione) // serve per effettuare decisioni multiple sulla base di una variabile. Esso prevede varie etichette case più una opzionale break e default.
{ //// queste etichette servono a dire al programma di eseguire una delle opzioni sceltedall'utente
case 'a':
case 'A':
{
int i,j; // dichiarazione di righe e colonne matrice
int k, fortunato; // dichiarazione di k,fortunato che sarebbe il numero estratto casualmente
char scelta; //variabile character:
char elencoNomi[LETTERE][LUNG_NOME+1] = {"A","B","C","D","E","F","G","H","A","B","C","D","E","F","G","H"};
for (i = 0; i < N_RIG; i++)
{
for (j = 0; j < N_COL; j++)
{
while (numeriDisponibili > 0) // affinchè in numeri disponibili sono presenti calcol randomicamente la matrice
{
fortunato = selezionaUtente(0,LETTERE);
matrice[i][j]= *elencoNomi[fortunato];
//printf("Matrice [%d] [%d] = %c\n",i,j,matrice[i][j]); //stampa matrice
break;
}
}
}
}
char nome_giocatore[30]; //variabile character: matrice per tener traccia del nome del giocatore
printf("Inserire nome giocatore\n"); // stampa richiesta del nome del giocatore
printf("\n");
scanf("%s",nome_giocatore); // lettura del nome del giocatore
printf("\n");
system("cls"); // pulizia
printf("\n");
///////CARICAMENTO MATRICE GIOCO///////
int i, j;
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
matriceGioco[i][j] = ' ';
tentativi = 9;
punti = 0;
/*do ///////////ciclo del conto vittoria///////
{ */
do ////////ciclo verifica carte
{
system("cls");
printf(" %c NOME GIOCATORE %c \n",1,1);
printf("\n");
printf(" *-%s-*\n\n\n\n ",nome_giocatore);
visualizzamatrice();
//////////////richiesta carte da scoprire nel gioco e controllo se sono uguali il programma va avanti al contrario cancella le carte sbagliate e rivisualizza
//////////////la matrice con la coppia giusta precedentemente scelta.
finePartita = 5;
printf("*- Numero riga CARTA 1 -*\n");
fflush(stdin);
scanf("%d",&riga_carta1); //funzione scanf: lettura riga della prima carta
if (riga_carta1 == 4)
{
finePartita = 1;
system("cls");
break;
}
if (riga_carta1 == 5)
{
istruzioni();
system("cls");
visualizzamatrice();
}
printf("*- Numero colonna CARTA 1 -*\n");
fflush(stdin);
scanf("%d",&colonna_carta1); //funzione scanf: lettura colonna della prima carta
if (colonna_carta1 == 4)
{
finePartita = 1;
system("cls");
break;
}
if (colonna_carta1 == 5)
{
istruzioni();
system("cls");
visualizzamatrice();
}
if (((riga_carta1 >=0) && (colonna_carta1 >=0)) && ((riga_carta1 <=3) && (colonna_carta1 <=3))) //verifica se la carta è compresa nella matrice
{
// printf("CARTA 1: (%d;%d) \n",riga_carta1,colonna_carta1); // stampa coordinate della prima carta
matriceGioco[riga_carta1][colonna_carta1] = matrice[riga_carta1][colonna_carta1]; //mostra la carta nella matrice
// system("pause");
system("cls");
visualizzamatrice(); //visualizza matrice
printf("*- Numero riga CARTA 2 -* : \n");
fflush(stdin);
scanf("%d",&riga_carta2); //funzione scanf: lettura riga della seconda carta
if (riga_carta2 == 4)
{
finePartita = 1;
system("cls");
break;
}
if (riga_carta2 == 5)
{
istruzioni();
system("cls");
visualizzamatrice();
}
printf("*- Numero colonna CARTA 2 -* : \n");
fflush(stdin);
scanf("%d",&colonna_carta2); //funzione sacanf: lettura colonna della seconda carta
if (colonna_carta2 == 4)
{
finePartita = 1;
system("cls");
break;
}
if (colonna_carta2 == 5)
{
istruzioni();
system("cls");
visualizzamatrice();
}
if (((riga_carta2 >=0) && (colonna_carta2 >=0)) && ((riga_carta2 <=3) && (colonna_carta2 <=3)))
{
// printf("CARTA 2: (%d;%d) \n",riga_carta2,colonna_carta2);
// system("pause");
matriceGioco[riga_carta2][colonna_carta2] = matrice[riga_carta2][colonna_carta2];
// visualizzamatrice();
//int tempo; for (tempo=0 ; tempo < 1000000 ; tempo ++);
// system("pause");
//system("cls");
//visualizzamatrice();
//tentativi++;
numerogiocate++;
if (matriceGioco[riga_carta1][colonna_carta1] != matriceGioco[riga_carta2][colonna_carta2])
{
//printf("\a");
//printf("\a");
tentativi--;
punti--;
visualizzamatrice();
printf("Hai sbagliato, ritenta!!!\n\n\n\n");
system("PAUSE");
if (tentativi == 0)
{
printf("Siamo spiacenti, hai consumato tutti i tentativi! Ritenta!!\n\n");
system("PAUSE");
system("cls");
break;
}
matriceGioco[riga_carta1][colonna_carta1]= ' ';
matriceGioco[riga_carta2][colonna_carta2]= ' ';
system("cls");
visualizzamatrice();
}
else
{
//printf("\a");
punti++;
punti++;
visualizzamatrice();
printf("Bravo!!!!Hai indovinato la coppia giusta!\n\n");
system("PAUSE");
system("cls");
}
}
}
}
while (numerogiocate<16);
break;
case 'b':
case 'B':
printf(" %c Info %c",15,15);
printf("\n");
printf(" %c AUTORE %c",1,1);
printf("\n");
printf("\n Nome: Cristian");
printf("\n Cognome: Capannini");
printf("\n Professione: Studente ");
printf("\n Universita': Scienze dell'informazione - Cesena");
printf("\n E-mails:
[email protected]");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
system("PAUSE");
system("cls");
break;
case 'c':
case 'C':
system("color 0F");
printf("\n G");
system("cls");
printf("\n GR");
system("cls");
printf("\n GRA");
system("cls");
printf("\n GRAZ");
system("cls");
printf("\n GRAZI");
system("cls");
printf("\n GRAZIE");
system("cls");
printf("\n GRAZIE P");
system("cls");
printf("\n GRAZIE PE");
system("cls");
printf("\n GRAZIE PER");
system("cls");
printf("\n GRAZIE PER A");
system("cls");
printf("\n GRAZIE PER AV");
system("cls");
printf("\n GRAZIE PER AVE");
system("cls");
printf("\n GRAZIE PER AVER");
system("cls");
printf("\n GRAZIE PER AVER S");
system("cls");
printf("\n GRAZIE PER AVER SC");
system("cls");
printf("\n GRAZIE PER AVER SCE");
system("cls");
printf("\n GRAZIE PER AVER SCEL");
system("cls");
printf("\n GRAZIE PER AVER SCELT");
system("cls");
printf("\n GRAZIE PER AVER SCELTO");
system("cls");
printf("\n GRAZIE PER AVER SCELTO M");
system("cls");
printf("\n GRAZIE PER AVER SCELTO ME");
system("cls");
printf("\n GRAZIE PER AVER SCELTO MEM");
system("cls");
printf("\n GRAZIE PER AVER SCELTO MEMO");
system("cls");
printf("\n GRAZIE PER AVER SCELTO MEMOR");
system("cls");
printf("\n GRAZIE PER AVER SCELTO MEMORY");
system("cls");
printf("\n GRAZIE PER AVER SCELTO MEMORY!");
system("cls");
printf("\n GRAZIE PER AVER SCELTO MEMORY!!");
system("cls");
printf("\n GRAZIE PER AVER SCELTO MEMORY!!!");
system("cls");
printf("\n GRAZIE PER AVER SCELTO MEMORY!!!!");
system("cls");
printf("\n GRAZIE PER AVER SCELTO MEMORY!!!!!");
stop = 0;
break;
}
}
printf("\n\n\n\n");
system("PAUSE");
return 0;
}
/////funzioni per inserire randomicamente i numeri già dichiarati nella matrice////
int selezionaUtente(int lBound, int uBound)
{
int scelta;
int k;
while (1)
{
scelta = numeroRandom(lBound,uBound);
if (nomiScelti[scelta] == 0)
{
nomiScelti[scelta] = 1;
numeriDisponibili--;
break;
}
}
return scelta;
}
int numeroRandom(int lBound, int uBound)
{
int valore, diff;
diff = uBound-lBound;
if (diff != 0)
return lBound + (rand()+time(NULL))%(diff);
else
return lBound;
}
void visualizzamatrice(void) //visualizzatore matrice che viene richiamato ogni volta che si gioca
{
system("color 0F");
printf(" %c Tempo: 00:00:00 %c %c Punti: %d %c Numero Tentativi = %d %c",1,1,1,punti,1,tentativi,1);
printf("\n");
printf("\n");
printf("\n");
printf(" 0 1 2 3\n");
printf(" *****************\n");
printf(" 0 * %c * %c * %c * %c *\n",matriceGioco[0][0],matriceGioco[0][1],matriceGioco[0][2],matriceGioco[0][3]);
printf(" *****************\n");
printf(" 1 * %c * %c * %c * %c *\n",matriceGioco[1][0],matriceGioco[1][1],matriceGioco[1][2],matriceGioco[1][3]);
printf(" *****************\n");
printf(" 2 * %c * %c * %c * %c *\n",matriceGioco[2][0],matriceGioco[2][1],matriceGioco[2][2],matriceGioco[2][3]);
printf(" *****************\n");
printf(" 3 * %c * %c * %c * %c *\n",matriceGioco[3][0],matriceGioco[3][1],matriceGioco[3][2],matriceGioco[3][3]);
printf(" *****************\n");
printf("\n");
printf("\n");
printf("[4 per uscire 5 per Help]");
printf("\n");
printf("\n");
printf("\n");
}
void istruzioni(void)
{
printf(" %c ISTRUZIONI %c",1,1);
printf("\n");
printf("\n In questo gioco devi trovare 8 coppie");
printf("\n di lettere uguali. Per trovarle");
printf("\n vi verranno chieste le coordinate per");
printf("\n scoprirle. Se hai individuato la coppia giusta,");
printf("\n si va avanti finchè non si esauriscono le carte se no");
printf("\n ritorni alla coppia precedentemente individuata.");
system("PAUSE");
system("cls");
visualizzamatrice();
}
int punteggiofinale() // a seconda del numero di giocate effettuate il programma ci dirà la nostra qualità di giocatore.
{
if (numerogiocate<=8 && numerogiocate>=12)
{
printf("COMPLIMENTI!!");
}
if (numerogiocate<=13 && numerogiocate>=17)
{
printf("MEDIOCRE..!!");
}
if (numerogiocate<=18 && numerogiocate>=22)
{
printf("SCARSO...!!");
}
}