Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /******************************************************************************
- Pillola Rossa - Ruota della Villa
- *******************************************************************************/
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
- #define N 1000+1
- #define VOCALE 1000
- #define P_CONSONANTE 50
- #define P_SOLUZIONE 100
- int test (char chiave[],char gioco[], int l,char test ){
- int ii;
- int check = 0;
- for ( ii = 0; ii < l; ++ii)
- {
- if (test == chiave[ii])
- {
- gioco[ii] = chiave [ii];
- check = 1;
- }
- }
- return check;
- } // Se il valore immesso è esatto allora lo mostra in chiaro sul vettore gioco
- void addOccorrenza (int alfabeto[],char test ){
- alfabeto[test - 'a']++;
- } //Aggiunge occorrenza per lettera immessa in precedenza nel vettore
- int testOccorrenza (int alfabeto[],char test ){
- int check = 0;
- if (alfabeto[test - 'a'] == 1) check++;
- return check;
- } // Verifica se esistono occorrenze sul valore test ritorna 0 se non esistono occorrenze
- int main()
- {
- int i,j,kk,montepremi,vita,check;
- char chiave[N];
- char user_1,user_2,user_3;
- int alfabeto[N] = {0};
- char vocali[] = "aeiou";
- user_3 = user_2 = user_1 = 'n';
- vita = 3;
- montepremi = 0;
- //======== Immissione chiave del gioco
- printf("Benvenuto al gioco RUOTA DELLA VILLA \nInserire la frase soluzione del gioco: ");
- gets(chiave);
- int l = (int) strlen (chiave);
- char gioco[l];
- check = l; //mancano l caratteri da indovinare
- strcpy (gioco,chiave);
- for (int i = 0; i < l; ++i)
- {
- if (!isspace (gioco[i]))
- {
- if (isalpha(gioco[i])) gioco[i] = '-';
- }
- else gioco[i] = ' ';
- }
- // Stampo la variabile gioco aggiornata
- puts (gioco);
- char testStringa[l] ;
- // Inizio gioco
- while (check > 0 && vita > 0){
- // Vuoi acquistare una vocale ?
- if (montepremi > 99)
- {
- //non esistono parole di senso compiuto che non hanno almeno una vocale, di seguito trovo vocale e restituisco la sua posizione
- printf ("Vuoi acquistare una vocale (montepremi %d) ? S/N \n", montepremi);
- scanf ("%c", &user_1);
- user_1 = tolower (user_1);
- if (user_1 == 's')
- {
- //trovo posizione della prima vocale con 0 occorrenze
- int esci = 0;
- for (int i = 0; i < l; ++i)
- {
- if (!esci)
- {
- for (int j = 0; j < 4; j++) //scandisco le vocali
- {
- if (!esci){
- char testVocale = vocali[j];
- int test1 = testOccorrenza (alfabeto,testVocale);
- if (chiave[i] == testVocale && !test1)
- {
- montepremi -= VOCALE;
- addOccorrenza (alfabeto,testVocale);
- test (chiave, gioco,l,testVocale);
- esci++;
- }
- }
- }
- }
- }
- }
- }
- puts(gioco);
- user_2 = ' ';
- // Tenta con una consonante
- printf ("Prova ad indovinare una consonante(minuscolo): ");
- scanf ("%c", &user_2);
- if (!testOccorrenza(alfabeto,tolower(user_2)) && test(chiave,gioco,l,tolower(user_2)))
- {
- montepremi += P_CONSONANTE;
- }else{
- vita -= 1;
- }
- puts (gioco);
- //Soluzione finale
- printf("Inserire la SOLUZIONE \n");
- //devo inserire la stringa nel vettore
- scanf ("%s",testStringa);
- if ( strcmp(chiave,testStringa) == 0)
- {
- strcpy(gioco,chiave);
- montepremi += P_SOLUZIONE;
- }
- /* else{
- printf("Errore meno 1 vita \007");
- puts(gioco);
- vita--;
- }
- */
- user_3 = user_2 = user_1 = 'n';
- //verifico quante lettere rimangono da mostrare
- check = 0;
- for (int i = 0; i < l; ++i)
- {
- if (gioco[i] != chiave[i])
- {
- check++;
- }
- }
- printf("Round terminato devi indovinare %d lettere \n",check );
- }
- // Fine gioco
- if(!vita){
- printf(" Hai Perso ! Il tuo montepremi è pari a %d", montepremi);
- return -1;
- }
- printf(" Hai Vinto ! Il tuo montepremi è pari a %d", montepremi);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement