Lollators

Progetto BOT Morra Cinese

Jun 20th, 2016
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.71 KB | None | 0 0
  1. //MORRA CINESE - By Luca Missaglia  
  2.  
  3. #include <conio.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <time.h>
  7. #include <windows.h>
  8.  
  9. //1=sasso  2=carta  3=forbice;
  10.  
  11. void printRegole()
  12. {
  13.    system("cls");
  14.    
  15.    printf("\nLe regole sono semplici:\n\n- Il sasso batte la forbice\n- La forbice batte la carta\n- La carta batte il sasso\n\n");
  16.    printf("Ogni turno dovrai inserire la tua scelta tra sasso, carta oppure forbice.\nNon inserire scelte in maiuscolo altrimenti ");
  17.    printf("il programma non funzionera'.\nSe per caso sbagli a digitare non ti preoccupare, il programma ti chiedera'\n");
  18.    printf("di inserire di nuovo la tua scelta.\nIl programma rilevera' e annuncera' l'esito di ogni turno, che sia tu o\nil BOT a vincere.\n");
  19.    printf("Nel primo caso incrementera' il tuo punteggio, nel secondo quello del BOT.\nChiunque raggiunga i 3 punti per primo vince il match.\n");
  20.    printf("Ricorda: dopo che il programma rileva il risultato del turno \ndovrai premere un tasto qualunque per poter passare al successivo.\n");
  21.    printf("Spero che ti diverta a sfidare il mio BOT :)\n\n\nLuca\n\nPremi qualsiasi tasto per continuare");
  22.    
  23.    getch();
  24.    return;
  25. }
  26.  
  27. int main()
  28. {
  29.    
  30.     SetConsoleTitle("Morra Cinese v2.0 - by Luca Missaglia");
  31.     int sceltaBOT,sceltaBOT_old,tuascelta,i=0;
  32.     char regole,replay,tuascelta_s[10],nome[20];
  33.    
  34.     for(i=0;i<20;i++)      //inizializza l'array nome
  35.       nome[i]=' ';
  36.    
  37.     printf("                               - Morra Cinese -\n");
  38.     printf("                              by Luca Missaglia\n\n\n");
  39.     printf("Inserisci il tuo nome: ");
  40.     scanf("%s",&nome);
  41.    
  42.     do{
  43.         printf("\nMolto bene %s. Vorresti leggere come giocare? s/n (raccomandato)\n",nome);
  44.         fflush(stdin);
  45.         scanf("%c",&regole);
  46.       }while(regole!='s' && regole!='S' && regole!='n' && regole!='N');
  47.        
  48.     if(regole=='s' || regole=='S')
  49.       printRegole();
  50.      
  51.     do{
  52.         for(i=0;i<10;i++)                            //inizializza l'array tuascelta_s
  53.           tuascelta_s[i]=' ';
  54.          
  55.         int vinciteBOT=0,tuevincite=0,tuascelta_cont=0,tuascelta_old=0;;
  56.         srand(time(NULL));                  //randomizza la prima scelta del bot
  57.         sceltaBOT=rand()%3+1;               //tra 1, 2 o 3
  58.        
  59.         do{
  60.            int cont=0;
  61.            system("cls");
  62.            printf("BOT: %d           %s: %d\n\n\n",vinciteBOT,nome,tuevincite);
  63.            do{  
  64.                  printf("\nInserisci la tua mano: ");
  65.                  scanf("%s",& tuascelta_s);
  66.              }while(strcmp(tuascelta_s,"sasso")!=0 && strcmp(tuascelta_s,"carta")!=0 && strcmp(tuascelta_s,"forbice")!=0);
  67.            if(strcmp(tuascelta_s,"sasso")==0)                   //converte la scelta (stringa) in formato int
  68.               tuascelta=1;
  69.            if(strcmp(tuascelta_s,"carta")==0)
  70.               tuascelta=2;
  71.            if(strcmp(tuascelta_s,"forbice")==0)
  72.               tuascelta=3;
  73.            if(tuascelta==sceltaBOT_old)                     //se la tua scelta è uguale a quella che il BOT ha appena
  74.               {                                             //effettuato, la prossima scelta del BOT sara' randomizzata
  75.                 srand(time(NULL));
  76.                 sceltaBOT=rand()%3+1;
  77.               }
  78.              
  79.            if(tuascelta_old==tuascelta)                   //BUGFIX - quando l'utente ripete una mano il BOT la previene
  80.               tuascelta_cont++;
  81.            if(tuascelta_old!=tuascelta)
  82.               tuascelta_cont=0;  
  83.              
  84.            if(tuascelta_cont>=2)
  85.            {
  86.              if(tuascelta==3)
  87.                sceltaBOT=1;
  88.              else
  89.                sceltaBOT++;
  90.            }
  91.            
  92.            tuascelta_old=tuascelta;
  93.              
  94.            switch(sceltaBOT)                                 //stampa su STO la mano del BOT
  95.            {
  96.              case 1: printf("La mia mano e': sasso\n");
  97.                break;
  98.              case 2: printf("La mia mano e': carta\n");
  99.                break;
  100.              case 3: printf("La mia mano e': forbice\n");
  101.               break;
  102.              default:
  103.               break;
  104.            }
  105.            
  106.            if((sceltaBOT==1 && tuascelta==2) || (sceltaBOT==2 && tuascelta==3) || (sceltaBOT==3 && tuascelta==1)){      //se hai vinto incrementa le tue vincite
  107.              printf("\nHAI VINTO!\n");
  108.              tuevincite++;
  109.              cont=1;
  110.              }
  111.              
  112.            if((sceltaBOT==1 && tuascelta==3) || (sceltaBOT==3 && tuascelta==2) || (sceltaBOT==2 && tuascelta==1))       //se perdi incrementa le vincite del BOT
  113.             {
  114.               printf("\nHAI PERSO!\n");
  115.               vinciteBOT++;
  116.               cont=-1;
  117.             }
  118.            
  119.             if(sceltaBOT==tuascelta)            //se si pareggia non succede nulla
  120.               printf("\nPAREGGIO!\n");
  121.              
  122.            sceltaBOT_old=sceltaBOT;
  123.            
  124.            switch(cont)
  125.            {
  126.              case 1:  if(sceltaBOT==1 && tuascelta==2)   //se hai vinto, la prossima scelta del BOT sara' cio' che non e' uscito
  127.                          sceltaBOT=3;
  128.                       if(sceltaBOT==2 && tuascelta==3)
  129.                          sceltaBOT=1;
  130.                       if(sceltaBOT==3 && tuascelta==1)
  131.                          sceltaBOT=2;
  132.                break;
  133.              case -1:   sceltaBOT=tuascelta;       //se hai perso il BOT utilizzera' la scelta che hai appena effettuato
  134.                break;
  135.              default:   srand(time(NULL));        //BUGFIX - se si ha pareggiato il BOT randomizza la sua scelta
  136.                         sceltaBOT=rand()%3+1;     //altrimenti la sua prossima scelta sara' identica a quella che ha appena mostrato
  137.               break;
  138.            }
  139.            
  140.           getch();
  141.          
  142.           }while(vinciteBOT<3 && tuevincite<3);     //ripete tutto fino a che qualcuno non arriva a 3 punti
  143.          
  144.         system("cls");
  145.         printf("BOT: %d           %s: %d\n\n\n",vinciteBOT,nome,tuevincite);  
  146.        
  147.         if(tuevincite==3)
  148.            printf("Congratulazioni! Hai vinto contro il mio BOT ^_^\n");
  149.         if(vinciteBOT==3)
  150.            printf("Hai perso ma non ti preoccupare! La prossima volta farai di meglio ^_^\n");
  151.            
  152.         printf("Grazie per aver giocato, %s :)\n\n\n",nome);
  153.        
  154.         do{    
  155.              printf("Vorresti giocare di nuovo? s/n\n",nome);   //Se utente preme s allora si ricomincia altrimenti si chiude il pgm
  156.              fflush(stdin);
  157.              scanf("%c",& replay);
  158.              }while(replay=='s' && replay=='S');
  159.     }while(replay=='s' || replay=='S');
  160.     printf("Premi un qualsiasi tasto per uscire\n");
  161.     getch();
  162.     return 0;
  163. }
Advertisement
Add Comment
Please, Sign In to add comment