Advertisement
Guest User

Untitled

a guest
May 23rd, 2015
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.88 KB | None | 0 0
  1. /*
  2. ARANCIONE=A
  3. BLU=B
  4. GIALLO=G
  5. LILLA=L
  6. MARRONE=M
  7. NERO=N
  8. ROSSO=R
  9. VERDE=V
  10. */
  11. #include <stdio.h>
  12. #define R 10
  13. #define C 8
  14. #define NCOLORI 8
  15. #define DIMSEQUENZA 4
  16. #define NTENTATIVI 10
  17.  
  18. //stampa mat
  19. void stampaMatrice(char mat[R][C], int r){
  20.      int i,j;
  21.      for(i=0;i<r;i++){
  22.                       printf("\n");
  23.                       for(j=0;j<C;j++)
  24.                                       printf("%c ",mat[i][j]);
  25.                         }
  26.      for(i=r;i<R;i++){
  27.                         printf("\n");
  28.                         for(j=0;j<DIMSEQUENZA;j++)
  29.                                         printf("%c ",mat[i][j]);
  30.                         }
  31.      printf("\n\n");
  32.      }
  33.  
  34. //torna 1 se l'utente inserisce i colori in modo corretto, 0 altrimenti
  35. int isColore(char c, char mat[R][C], int r, char colori[]){
  36.     int i,isTrovato=1;
  37.     for(i=0;i<NCOLORI;i++){
  38.         if(c==colori[i]){
  39.             for(i=0;i<DIMSEQUENZA&&isTrovato;i++)
  40.                 if(c==mat[r][i])
  41.                     isTrovato=0;
  42.             return isTrovato;
  43.             }
  44.         }
  45.     return 0;
  46.     }
  47.  
  48. //legge da tastiera la sequenza di colori
  49. void inserisciSequenza(char mat[R][C], int r, char colori[]){
  50.      int pos,i;
  51.      char colore;
  52.      printf("\n\nInserisci la sequenza di colori\n\n");
  53.      for(i=0;i<DIMSEQUENZA;i++){
  54.                       printf("ARANCIONE = A\nBLU = B\nGIALLO = G\nLILLA = L\nMARRONE = M\nNERO = N\nROSSO = R\nVERDE = V\n");
  55.                       printf("\n$ = Colore corretto in posizione corretta\n# = Colore corretto in posizione sbagliata\n. = Colore errato\n");
  56.                       stampaMatrice(mat,r);
  57.                       do{
  58.                          printf("Scegli in che posizione (1-2-3-4) della riga %d inserire il colore: \n",r+1);
  59.                          fflush(stdin);
  60.                          scanf("%d",&pos);
  61.                          }while(pos<1||pos>4);
  62.                       if(mat[r][pos-1]!='.'){
  63.                                              printf("\nHai gia\' inserito un numero in questo spazio\n");
  64.                                              i--;
  65.                                              }
  66.                       else{
  67.                            do{
  68.                               printf("\nInserisci il colore: ");
  69.                               fflush(stdin);
  70.                               scanf("%c",&colore);
  71.                               }while(!isColore(colore,mat,r,colori)); //se inserisce un carattere non corretto, ripete
  72.                            mat[r][pos-1]=colore;
  73.                            }
  74.                       system("PAUSE");
  75.                       system("CLS");
  76.                       }
  77.      }
  78.  
  79. //verifica se l'utente ha indovinato la sequenza e torna il numero di colori corretti in posizione corretta
  80. int controllaSequenza(char mat[R][C], char vincente[], int r){
  81.      int cc=0,cs=0,i,k;
  82.      for(i=0;i<DIMSEQUENZA;i++)
  83.                      if(mat[r][i]==vincente[i])
  84.                                                cc++;
  85.                      else{
  86.                           for(k=0;k<4;k++)
  87.                                           if(mat[r][i]==vincente[k])
  88.                                                                     cs++;
  89.                           }
  90.      for(;i<cc+DIMSEQUENZA;i++)
  91.                      mat[r][i]='$'; //stampa a video i simboli che indicano se un colore è corretto in posizione corretta
  92.      for(;i<cs+cc+DIMSEQUENZA;i++)
  93.                         mat[r][i]='#'; //stampa a video i simboli che indicano se un colore è corretto in posizione sbagliata
  94.      return cc;
  95.      }
  96.  
  97. main(){
  98.        FILE *fp;
  99.        char mat[R][C];
  100.        char colori[NCOLORI]="ABGLMNRV";
  101.        char vincente[DIMSEQUENZA]="MAGB"; //contiene la sequenza di colori vincente(generati casualmente)
  102.        int generati[10]; //per evitare la generazione di due colori casuali uguali
  103.        int casuale,isVinto=0;
  104.        int i,j,cont=0;
  105.        for(i=0;i<NCOLORI;i++) //inizializzo tutto il vettore generati a 0
  106.                               generati[i]=0;
  107.        /*srand(time(NULL));
  108.        for(i=0;i<DIMSEQUENZA;i++){
  109.                         do{
  110.                            casuale=rand()%NCOLORI;
  111.                            vincente[i]=colori[casuale];
  112.                            }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
  113.                         generati[casuale]=1;  //pongo a 1 la cella relativa al colore generato casualmente per evitare di generarlo di nuovo
  114.                         }*/
  115.        for(i=0;i<R;i++)
  116.                        for(j=0;j<C;j++)
  117.                                        mat[i][j]='.'; //inizializzo la matrice a .
  118.        printf("\nMM   MM     A     SSSSSS TTTTTTTT EEEEEE RRRRR  MM   MM II NN    N DDDDDD\n");
  119.        printf("M M M M    AAA    SS        TT    EE     RR   R M M M M II N N   N DD   DD\n");
  120.        printf("M  M  M   AA AA   SSSSSS    TT    EEEEE  RRRRR  M  M  M II N  N  N DD   DD\n");
  121.        printf("M     M  AA A AA      SS    TT    EE     RR RR  M     M II N   N N DD   DD\n");
  122.        printf("M     M AA     AA SSSSSS    TT    EEEEEE RR  RR M     M II N    NN DDDDDD\n\n\n");
  123.        system("PAUSE");
  124.        system("CLS");
  125.        for(i=0;i<NTENTATIVI&&!isVinto;i++){
  126.                                            printf("SEQUENZA %d",i+1);
  127.                                            inserisciSequenza(mat,i,colori);
  128.                                            if(controllaSequenza(mat,vincente,i)==4)
  129.                                                                                    isVinto=1;
  130.                                            printf("\n$ = Colore corretto in posizione corretta\n# = Colore corretto in posizione sbagliata\n. = Colore errato\n");
  131.                                            stampaMatrice(mat,i+1);
  132.                                            system("PAUSE");
  133.                                            system("CLS");
  134.                                            cont++;
  135.                                            }
  136.        fp=fopen("Output.txt","w");
  137.        for(i=0;i<cont;i++){
  138.                                  for(j=4;j<NCOLORI;j++){
  139.                                                         fprintf(fp,"%c",mat[i][j]);
  140.                                                         }
  141.                                  fprintf(fp,"\n");
  142.                                  }
  143.        if(!isVinto){
  144.                     fprintf(fp,"HAI PERSO\n");
  145.                     printf("\nHAI PERSO, LA SEQUENZA ERA: ");
  146.                     for(i=0;i<DIMSEQUENZA;i++)
  147.                                               printf("%c ",vincente[i]);
  148.                     printf("\n\n");
  149.                     }
  150.        else{
  151.             fprintf(fp,"HAI VINTO, HAI INDOVINATO LA SEQUENZA\n");
  152.             printf("\nHAI VINTO, HAI INDOVINATO LA SEQUENZA\n\n");
  153.             }
  154.        fclose(fp);
  155.        system("PAUSE");
  156.        }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement