Advertisement
Guest User

Progetto BOT Morra Cinese

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