Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.09 KB | None | 0 0
  1. /******************************************************************************
  2.  
  3. Pillola Rossa - Ruota della Villa
  4.  
  5. *******************************************************************************/
  6. #include <stdio.h>
  7. #include <string.h>
  8. #include <ctype.h>
  9. #define N 1000+1
  10. #define VOCALE 1000
  11. #define P_CONSONANTE 50
  12. #define P_SOLUZIONE 100
  13.  
  14. int test (char chiave[],char gioco[], int l,char test ){
  15. int ii;
  16. int check = 0;
  17. for ( ii = 0; ii < l; ++ii)
  18. {
  19. if (test == chiave[ii])
  20. {
  21. gioco[ii] = chiave [ii];
  22. check = 1;
  23. }
  24. }
  25.  
  26. return check;
  27. } // Se il valore immesso è esatto allora lo mostra in chiaro sul vettore gioco
  28.  
  29. void addOccorrenza (int alfabeto[],char test ){
  30.  
  31. alfabeto[test - 'a']++;
  32.  
  33. } //Aggiunge occorrenza per lettera immessa in precedenza nel vettore
  34.  
  35. int testOccorrenza (int alfabeto[],char test ){
  36. int check = 0;
  37.  
  38. if (alfabeto[test - 'a'] == 1) check++;
  39.  
  40. return check;
  41. } // Verifica se esistono occorrenze sul valore test ritorna 0 se non esistono occorrenze
  42.  
  43.  
  44. int main()
  45. {
  46. int i,j,kk,montepremi,vita,check;
  47. char chiave[N];
  48. char user_1,user_2,user_3;
  49. int alfabeto[N] = {0};
  50. char vocali[] = "aeiou";
  51.  
  52. user_3 = user_2 = user_1 = 'n';
  53. vita = 3;
  54. montepremi = 0;
  55.  
  56.  
  57. //======== Immissione chiave del gioco
  58.  
  59. printf("Benvenuto al gioco RUOTA DELLA VILLA \nInserire la frase soluzione del gioco: ");
  60.  
  61. gets(chiave);
  62.  
  63. int l = (int) strlen (chiave);
  64. char gioco[l];
  65.  
  66. check = l; //mancano l caratteri da indovinare
  67. strcpy (gioco,chiave);
  68.  
  69. for (int i = 0; i < l; ++i)
  70. {
  71. if (!isspace (gioco[i]))
  72. {
  73. if (isalpha(gioco[i])) gioco[i] = '-';
  74. }
  75. else gioco[i] = ' ';
  76. }
  77. // Stampo la variabile gioco aggiornata
  78. puts (gioco);
  79.  
  80. char testStringa[l] ;
  81. // Inizio gioco
  82. while (check > 0 && vita > 0){
  83.  
  84. // Vuoi acquistare una vocale ?
  85. if (montepremi > 99)
  86. {
  87. //non esistono parole di senso compiuto che non hanno almeno una vocale, di seguito trovo vocale e restituisco la sua posizione
  88. printf ("Vuoi acquistare una vocale (montepremi %d) ? S/N \n", montepremi);
  89. scanf ("%c", &user_1);
  90. user_1 = tolower (user_1);
  91.  
  92. if (user_1 == 's')
  93. {
  94. //trovo posizione della prima vocale con 0 occorrenze
  95. int esci = 0;
  96. for (int i = 0; i < l; ++i)
  97. {
  98. if (!esci)
  99. {
  100.  
  101. for (int j = 0; j < 4; j++) //scandisco le vocali
  102. {
  103. if (!esci){
  104. char testVocale = vocali[j];
  105. int test1 = testOccorrenza (alfabeto,testVocale);
  106. if (chiave[i] == testVocale && !test1)
  107. {
  108. montepremi -= VOCALE;
  109.  
  110. addOccorrenza (alfabeto,testVocale);
  111. test (chiave, gioco,l,testVocale);
  112. esci++;
  113. }
  114.  
  115. }
  116. }
  117. }
  118.  
  119. }
  120. }
  121. }
  122.  
  123. puts(gioco);
  124. user_2 = ' ';
  125. // Tenta con una consonante
  126. printf ("Prova ad indovinare una consonante(minuscolo): ");
  127. scanf ("%c", &user_2);
  128.  
  129. if (!testOccorrenza(alfabeto,tolower(user_2)) && test(chiave,gioco,l,tolower(user_2)))
  130. {
  131. montepremi += P_CONSONANTE;
  132. }else{
  133. vita -= 1;
  134. }
  135. puts (gioco);
  136.  
  137. //Soluzione finale
  138. printf("Inserire la SOLUZIONE \n");
  139. //devo inserire la stringa nel vettore
  140. scanf ("%s",testStringa);
  141.  
  142. if ( strcmp(chiave,testStringa) == 0)
  143. {
  144. strcpy(gioco,chiave);
  145. montepremi += P_SOLUZIONE;
  146. }
  147. /* else{
  148. printf("Errore meno 1 vita \007");
  149. puts(gioco);
  150. vita--;
  151. }
  152. */
  153.  
  154.  
  155. user_3 = user_2 = user_1 = 'n';
  156. //verifico quante lettere rimangono da mostrare
  157. check = 0;
  158. for (int i = 0; i < l; ++i)
  159. {
  160. if (gioco[i] != chiave[i])
  161. {
  162. check++;
  163. }
  164. }
  165. printf("Round terminato devi indovinare %d lettere \n",check );
  166. }
  167. // Fine gioco
  168.  
  169. if(!vita){
  170. printf(" Hai Perso ! Il tuo montepremi è pari a %d", montepremi);
  171. return -1;
  172. }
  173. printf(" Hai Vinto ! Il tuo montepremi è pari a %d", montepremi);
  174.  
  175. return 0;
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement