Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ARANCIONE=A
- BLU=B
- GIALLO=G
- LILLA=L
- MARRONE=M
- NERO=N
- ROSSO=R
- VERDE=V
- */
- #include <stdio.h>
- #define R 10
- #define C 8
- #define NCOLORI 8
- #define DIMSEQUENZA 4
- #define NTENTATIVI 10
- //stampa mat
- void stampaMatrice(char mat[R][C], int r){
- int i,j;
- for(i=0;i<r;i++){
- printf("\n");
- for(j=0;j<C;j++)
- printf("%c ",mat[i][j]);
- }
- for(i=r;i<R;i++){
- printf("\n");
- for(j=0;j<DIMSEQUENZA;j++)
- printf("%c ",mat[i][j]);
- }
- printf("\n\n");
- }
- //torna 1 se l'utente inserisce i colori in modo corretto, 0 altrimenti
- int isColore(char c, char mat[R][C], int r, char colori[]){
- int i,isTrovato=1;
- for(i=0;i<NCOLORI;i++){
- if(c==colori[i]){
- for(i=0;i<DIMSEQUENZA&&isTrovato;i++)
- if(c==mat[r][i])
- isTrovato=0;
- return isTrovato;
- }
- }
- return 0;
- }
- //legge da tastiera la sequenza di colori
- void inserisciSequenza(char mat[R][C], int r, char colori[]){
- int pos,i;
- char colore;
- printf("\n\nInserisci la sequenza di colori\n\n");
- for(i=0;i<DIMSEQUENZA;i++){
- printf("ARANCIONE = A\nBLU = B\nGIALLO = G\nLILLA = L\nMARRONE = M\nNERO = N\nROSSO = R\nVERDE = V\n");
- printf("\n$ = Colore corretto in posizione corretta\n# = Colore corretto in posizione sbagliata\n. = Colore errato\n");
- stampaMatrice(mat,r);
- do{
- printf("Scegli in che posizione (1-2-3-4) della riga %d inserire il colore: \n",r+1);
- fflush(stdin);
- scanf("%d",&pos);
- }while(pos<1||pos>4);
- if(mat[r][pos-1]!='.'){
- printf("\nHai gia\' inserito un numero in questo spazio\n");
- i--;
- }
- else{
- do{
- printf("\nInserisci il colore: ");
- fflush(stdin);
- scanf("%c",&colore);
- }while(!isColore(colore,mat,r,colori)); //se inserisce un carattere non corretto, ripete
- mat[r][pos-1]=colore;
- }
- system("PAUSE");
- system("CLS");
- }
- }
- //verifica se l'utente ha indovinato la sequenza e torna il numero di colori corretti in posizione corretta
- int controllaSequenza(char mat[R][C], char vincente[], int r){
- int cc=0,cs=0,i,k;
- for(i=0;i<DIMSEQUENZA;i++)
- if(mat[r][i]==vincente[i])
- cc++;
- else{
- for(k=0;k<4;k++)
- if(mat[r][i]==vincente[k])
- cs++;
- }
- for(;i<cc+DIMSEQUENZA;i++)
- mat[r][i]='$'; //stampa a video i simboli che indicano se un colore è corretto in posizione corretta
- for(;i<cs+cc+DIMSEQUENZA;i++)
- mat[r][i]='#'; //stampa a video i simboli che indicano se un colore è corretto in posizione sbagliata
- return cc;
- }
- main(){
- FILE *fp;
- char mat[R][C];
- char colori[NCOLORI]="ABGLMNRV";
- char vincente[DIMSEQUENZA]="MAGB"; //contiene la sequenza di colori vincente(generati casualmente)
- int generati[10]; //per evitare la generazione di due colori casuali uguali
- int casuale,isVinto=0;
- int i,j,cont=0;
- for(i=0;i<NCOLORI;i++) //inizializzo tutto il vettore generati a 0
- generati[i]=0;
- /*srand(time(NULL));
- for(i=0;i<DIMSEQUENZA;i++){
- do{
- casuale=rand()%NCOLORI;
- vincente[i]=colori[casuale];
- }while(generati[casuale]==1); //se un colore è gia stato generato casualmente(ossia la cella del vettore relativa a quel colore vale 1), non lo considera
- generati[casuale]=1; //pongo a 1 la cella relativa al colore generato casualmente per evitare di generarlo di nuovo
- }*/
- for(i=0;i<R;i++)
- for(j=0;j<C;j++)
- mat[i][j]='.'; //inizializzo la matrice a .
- printf("\nMM MM A SSSSSS TTTTTTTT EEEEEE RRRRR MM MM II NN N DDDDDD\n");
- printf("M M M M AAA SS TT EE RR R M M M M II N N N DD DD\n");
- printf("M M M AA AA SSSSSS TT EEEEE RRRRR M M M II N N N DD DD\n");
- printf("M M AA A AA SS TT EE RR RR M M II N N N DD DD\n");
- printf("M M AA AA SSSSSS TT EEEEEE RR RR M M II N NN DDDDDD\n\n\n");
- system("PAUSE");
- system("CLS");
- for(i=0;i<NTENTATIVI&&!isVinto;i++){
- printf("SEQUENZA %d",i+1);
- inserisciSequenza(mat,i,colori);
- if(controllaSequenza(mat,vincente,i)==4)
- isVinto=1;
- printf("\n$ = Colore corretto in posizione corretta\n# = Colore corretto in posizione sbagliata\n. = Colore errato\n");
- stampaMatrice(mat,i+1);
- system("PAUSE");
- system("CLS");
- cont++;
- }
- fp=fopen("Output.txt","w");
- for(i=0;i<cont;i++){
- for(j=4;j<NCOLORI;j++){
- fprintf(fp,"%c",mat[i][j]);
- }
- fprintf(fp,"\n");
- }
- if(!isVinto){
- fprintf(fp,"HAI PERSO\n");
- printf("\nHAI PERSO, LA SEQUENZA ERA: ");
- for(i=0;i<DIMSEQUENZA;i++)
- printf("%c ",vincente[i]);
- printf("\n\n");
- }
- else{
- fprintf(fp,"HAI VINTO, HAI INDOVINATO LA SEQUENZA\n");
- printf("\nHAI VINTO, HAI INDOVINATO LA SEQUENZA\n\n");
- }
- fclose(fp);
- system("PAUSE");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement