/* Programma che utilizzando una matrice ci permetterā di simulare il gioco strizzacervelli chiamato Gioco Del 15*/ #include //caricamento libreria standard I/O #include //caricamento libreria standard #include //caricamento libreria comandi temporizati #include //caricamento libreria per la funzione system("cls"); #define RIGHE 5 //Dichiarazione costante di grandezza delle righe della matrice #define COLONNE 5 //Dichiarazione costante di grandezza delle colonne della matrice int menu(); void carica_campo(int [RIGHE][COLONNE]); void visualizza_campo(int [RIGHE][COLONNE]); int muovi_numero(int [RIGHE][COLONNE]); int controllo_vittoria(int [RIGHE][COLONNE]); void vittoria(char *,int,int); //**************************************************// // PROGRAMMA PRINCIPALE // //**************************************************// void main() { char nomegiocatore[20]; //Variabile che contiene il nome del giocatore int mat[COLONNE][RIGHE]; //Dichiarazione matrice int inizio_tempo; //Variabile per contare il tempo (inizio) int mossa; //variabile per le mosse del giocatore int mossegioc; //Variabile per cotare le mosse del giocatore while(1!=menu()); //Ciclo di menu per le varie scelte carica_campo(mat); //Creazione della matrice per il campo da gioco mossegioc=0; //inizializzazione delle mosse a 0 system("cls"); printf("\nInserisci il tuo nome prima di incominciare a giocare: "); scanf("%s",&nomegiocatore); //Prendo il nome dell'utente inizio_tempo=time(NULL); //inizio conteggio del tempo //Ciclo di gioco do { system("cls"); //Pulisco lo schermo visualizza_campo(mat); //Visualizzo la matrice passata come parametro mossa=muovi_numero(mat); //muovo i dati all'interno della matrice e restituisco la mossa effettuata (per il controllo del trucco) mossegioc++; //Aggiungo una mossa al giocatore } while(mossa!=16 && controllo_vittoria(mat)!=16); //Controllo se c'č stato l'utilizzo del trucco oppure se si ha vinto regolarmente vittoria(nomegiocatore,inizio_tempo,mossegioc); //Visualizzo le varie ed eventuali statistiche della parita } //**************************************************// // FUNZIONE MENU // //**************************************************// int menu() { int i; //Variabile di ciclo int smenu; //Variabile scelta menu system("cls"); //pulisco schermo printf("\n\n\n\n\n %c",201); // Ciclo di grechine per for(i=0;i<=30;i++) // Migliorare printf("%c",205); // L'aspetto Estetico printf("%c",187); // printf("\n %c GIOCO DEL QUINDICI %c",186,186); printf("\n %c %c",186,186); printf("\n %c 1.Nuova Parita %c",186,186); printf("\n %c 2.Visualizza regole %c",186,186); printf("\n %c 3.esci %c",186,186); printf("\n %c %c",186,186); printf("\n %c",200); for(i=0;i<=30;i++) // Ciclo di grechine per printf("%c",205); // Migliorare printf("%c\n",188); // L'aspetto Estetico printf("\n Scelta: "); scanf("%d",&smenu); //Caricamento della scelta dell'utente nel menu switch(smenu) //Casi delle scelte { case 3: //se 0 esco dal programma exit(0); case 2: //se due: system("cls"); //pulisco schermo printf("\n\n\n\n\n %c",201); // Ciclo di grechine per for(i=0;i<=50;i++) // Migliorare printf("%c",205); // L'aspetto Estetico printf("%c",187); // printf("\n %c REGOLE %c",186,186); printf("\n %c %c",186,186); printf("\n %c %c",186,186); printf("\n %c Giocare a Questo Gioco non e' semplice: %c",186,186); printf("\n %c Vi Troverete di fronte ad un tabella %c",186,186); printf("\n %c contentente dei numeri..quando vi verra' %c",186,186); printf("\n %c chiesto di scegliere il numero che dovrete %c",186,186); printf("\n %c spostare sappiate che potete spostare solo i %c",186,186); printf("\n %c numeri vicino allo spazio vuoto. %c",186,186); printf("\n %c Il gioco finisce quando sono stati posizionati %c",186,186); printf("\n %c tutti i numeri in ordine crescente a partire %c",186,186); printf("\n %c dall'angolo sinitro in alto. %c",186,186); printf("\n %c Ovviamente il Vincitore sara' colui che %c",186,186); printf("\n %c ci mette meno tempo e utilizza meno mosse. %c",186,186); printf("\n %c %c",186,186); printf("\n %c !!Buona Partita!! %c",186,186); printf("\n %c %c",186,186); printf("\n %c",200); //disegno menu (parte sotto) for(i=0;i<=50;i++) // Ciclo di grechine per printf("%c",205); // Migliorare printf("%c",188); // L'aspetto Estetico // printf("\n\n\n Premi il tasto enter per tornare al menu --->"); fflush(stdin); getchar(); break; } return smenu; //restituisco che voglio incominciare una nuova partita } //**************************************************// // FUNZIONE CARICA CAMPO // //**************************************************// void carica_campo(int campo[RIGHE][COLONNE]) { int c,r; //Indici di scorrimento righe e colonne della matrice int valore_cas; //Dichiarazione variabile per il valore random int contc,contr; //variabili parallele per le righe e colonne int contval; //Variabile utilizzata come flag per il controllo del valore random nella matrice //CREAZIONE AUTOMATICA E CASUALE DEL CAMPO DI GIOCO PER IL LIVELLO 2 srand((unsigned int) time(NULL)); for(r=0;r"); fflush(stdin); getchar(); main(); }