14/07/09 18:27
duncan757
Salve a tutti.
Ho appena creato questo programma che simula il gioco della roulette. Il gioco va e funziona ma ha un problema: se inserisco anzichè un numero una lettera il gioco si impalla e va in loop. Come lo risolvo?
ecco il programma:
Ho appena creato questo programma che simula il gioco della roulette. Il gioco va e funziona ma ha un problema: se inserisco anzichè un numero una lettera il gioco si impalla e va in loop. Come lo risolvo?
ecco il programma:
/* Gioco della roulette scritto da duncan757*/ #include <stdio.h> #include <stdlib.h> #include <time.h> float soldi = 100.00; int numero = -1; char colore = 'Salve a tutti.
Ho appena creato questo programma che simula il gioco della roulette. Il gioco va e funziona ma ha un problema: se inserisco anzichè un numero una lettera il gioco si impalla e va in loop. Come lo risolvo?
ecco il programma:/* Gioco della roulette scritto da duncan757*/ #include <stdio.h> #include <stdlib.h> #include <time.h> float soldi = 100.00; int numero = -1; char colore = '{parsed_message}'; char tipo = '{parsed_message}'; float soldi_puntata[8] = {0}; float puntata_tot = 0; float punta_soldi(float x) { while(1) { printf("Soldi da puntare: "); scanf("%f", &x); if ( (puntata_tot + x) > soldi ) printf("Impossibile, non si dispone di tutti questi soldi .\n"); else if ( x == -1 ) { x = 0; break; } else if ( x <= 0 ) printf("Impossibile puntare una cifra simile.\n"); else break; } return x; } int puntata_gioco(void) { int scelta, i; puntata_tot = 0; for ( i = 1; i < 8; ++i) puntata_tot += soldi_puntata[i]; soldi_puntata[0] = 0; printf("----------------------------------------------------------\n" "----------------------------------------------------------\n" "\n" " Soldi disponibili:% .2f\n" " Soldi puntati: % .2f\n" "\n" " 1 - Punta su un numero\n" " 2 - Punta sul nero\n" " 3 - Punta sul rosso\n" " 4 - Punta sul pari\n" " 5 - Punta sul dispari\n" " 9 - Esci.\n" " 0 - Gioca.\n" "\n" " Numero della scelta: ", soldi, puntata_tot); scanf("%d", &scelta); switch(scelta) { case 1: printf("Numero su cui puntare: "); scanf("%d", &numero); soldi_puntata[1] = punta_soldi(soldi_puntata[0]); break; case 2: soldi_puntata[2] += punta_soldi(soldi_puntata[0]); colore = 'n'; break; case 3: soldi_puntata[3] += punta_soldi(soldi_puntata[0]); colore = 'r'; break; case 4: soldi_puntata[4] += punta_soldi(soldi_puntata[0]); tipo = 'p'; break; case 5: soldi_puntata[5] += punta_soldi(soldi_puntata[0]); tipo = 'd'; break; case 9: exit(1); case 0: return 0; default: printf("Scelta non valida.\n\n"); break; } printf("\n"); puntata_gioco(); } int gira_roulette(void) { int numero_estratto[2] = { (rand() % 37) + 1, ((rand() % 10) + 1) % 2 }; int i; float differenza = soldi; printf("\n\aNumero estratto: "); if ( numero_estratto[0] == 37 ) printf("00"); else { if ( numero_estratto[1] == 0 ) printf("%d Rosso", numero_estratto[0]); else printf("%d Nero", numero_estratto[0]); } /* Controllo il colore */ if ( colore == 'n' ) { if ( numero_estratto[1] == 1 ) soldi += soldi_puntata[2]; else soldi -= soldi_puntata[2]; } else if ( colore == 'r' ) { if ( numero_estratto[1] == 0 ) soldi += soldi_puntata[3]; else soldi -= soldi_puntata[3]; } /* Controllo il numero */ if ( numero_estratto[0] == 37 ) soldi = 0; else { if ( numero_estratto[0] == numero ) soldi += soldi_puntata[1]; else soldi -= soldi_puntata[1]; } /* Controllo se è pari o dispari */ if ( tipo == 'p' ) { if ((numero_estratto[0] % 2) == 0) soldi += soldi_puntata[4]; else soldi -= soldi_puntata[4]; } else if ( tipo == 'd' ) { if ((numero_estratto[0] % 2) == 1) soldi += soldi_puntata[5]; else soldi -= soldi_puntata[5]; } printf("\n\nTotale "); differenza -= soldi; if ( differenza < 0 ) { differenza *= -1; printf("guadagno: % .2f", differenza); } else if ( differenza == 0 ) printf("nessun guadagno."); else printf("perdita: % .2f", differenza); printf("\n\n\n"); /* Resetto le puntate precedenti */ for ( i = 0; i < 8; ++i ) soldi_puntata[i] = 0; } int main(void) { srand(time(NULL)); printf("[ Gioco della roulette | Autore: duncan757 } \n"); while(1) { puntata_gioco(); gira_roulette(); } }'; char tipo = 'Salve a tutti.
Ho appena creato questo programma che simula il gioco della roulette. Il gioco va e funziona ma ha un problema: se inserisco anzichè un numero una lettera il gioco si impalla e va in loop. Come lo risolvo?
ecco il programma:/* Gioco della roulette scritto da duncan757*/ #include <stdio.h> #include <stdlib.h> #include <time.h> float soldi = 100.00; int numero = -1; char colore = '{parsed_message}'; char tipo = '{parsed_message}'; float soldi_puntata[8] = {0}; float puntata_tot = 0; float punta_soldi(float x) { while(1) { printf("Soldi da puntare: "); scanf("%f", &x); if ( (puntata_tot + x) > soldi ) printf("Impossibile, non si dispone di tutti questi soldi .\n"); else if ( x == -1 ) { x = 0; break; } else if ( x <= 0 ) printf("Impossibile puntare una cifra simile.\n"); else break; } return x; } int puntata_gioco(void) { int scelta, i; puntata_tot = 0; for ( i = 1; i < 8; ++i) puntata_tot += soldi_puntata[i]; soldi_puntata[0] = 0; printf("----------------------------------------------------------\n" "----------------------------------------------------------\n" "\n" " Soldi disponibili:% .2f\n" " Soldi puntati: % .2f\n" "\n" " 1 - Punta su un numero\n" " 2 - Punta sul nero\n" " 3 - Punta sul rosso\n" " 4 - Punta sul pari\n" " 5 - Punta sul dispari\n" " 9 - Esci.\n" " 0 - Gioca.\n" "\n" " Numero della scelta: ", soldi, puntata_tot); scanf("%d", &scelta); switch(scelta) { case 1: printf("Numero su cui puntare: "); scanf("%d", &numero); soldi_puntata[1] = punta_soldi(soldi_puntata[0]); break; case 2: soldi_puntata[2] += punta_soldi(soldi_puntata[0]); colore = 'n'; break; case 3: soldi_puntata[3] += punta_soldi(soldi_puntata[0]); colore = 'r'; break; case 4: soldi_puntata[4] += punta_soldi(soldi_puntata[0]); tipo = 'p'; break; case 5: soldi_puntata[5] += punta_soldi(soldi_puntata[0]); tipo = 'd'; break; case 9: exit(1); case 0: return 0; default: printf("Scelta non valida.\n\n"); break; } printf("\n"); puntata_gioco(); } int gira_roulette(void) { int numero_estratto[2] = { (rand() % 37) + 1, ((rand() % 10) + 1) % 2 }; int i; float differenza = soldi; printf("\n\aNumero estratto: "); if ( numero_estratto[0] == 37 ) printf("00"); else { if ( numero_estratto[1] == 0 ) printf("%d Rosso", numero_estratto[0]); else printf("%d Nero", numero_estratto[0]); } /* Controllo il colore */ if ( colore == 'n' ) { if ( numero_estratto[1] == 1 ) soldi += soldi_puntata[2]; else soldi -= soldi_puntata[2]; } else if ( colore == 'r' ) { if ( numero_estratto[1] == 0 ) soldi += soldi_puntata[3]; else soldi -= soldi_puntata[3]; } /* Controllo il numero */ if ( numero_estratto[0] == 37 ) soldi = 0; else { if ( numero_estratto[0] == numero ) soldi += soldi_puntata[1]; else soldi -= soldi_puntata[1]; } /* Controllo se è pari o dispari */ if ( tipo == 'p' ) { if ((numero_estratto[0] % 2) == 0) soldi += soldi_puntata[4]; else soldi -= soldi_puntata[4]; } else if ( tipo == 'd' ) { if ((numero_estratto[0] % 2) == 1) soldi += soldi_puntata[5]; else soldi -= soldi_puntata[5]; } printf("\n\nTotale "); differenza -= soldi; if ( differenza < 0 ) { differenza *= -1; printf("guadagno: % .2f", differenza); } else if ( differenza == 0 ) printf("nessun guadagno."); else printf("perdita: % .2f", differenza); printf("\n\n\n"); /* Resetto le puntate precedenti */ for ( i = 0; i < 8; ++i ) soldi_puntata[i] = 0; } int main(void) { srand(time(NULL)); printf("[ Gioco della roulette | Autore: duncan757 } \n"); while(1) { puntata_gioco(); gira_roulette(); } }'; float soldi_puntata[8] = {0}; float puntata_tot = 0; float punta_soldi(float x) { while(1) { printf("Soldi da puntare: "); scanf("%f", &x); if ( (puntata_tot + x) > soldi ) printf("Impossibile, non si dispone di tutti questi soldi .\n"); else if ( x == -1 ) { x = 0; break; } else if ( x <= 0 ) printf("Impossibile puntare una cifra simile.\n"); else break; } return x; } int puntata_gioco(void) { int scelta, i; puntata_tot = 0; for ( i = 1; i < 8; ++i) puntata_tot += soldi_puntata[i]; soldi_puntata[0] = 0; printf("----------------------------------------------------------\n" "----------------------------------------------------------\n" "\n" " Soldi disponibili:% .2f\n" " Soldi puntati: % .2f\n" "\n" " 1 - Punta su un numero\n" " 2 - Punta sul nero\n" " 3 - Punta sul rosso\n" " 4 - Punta sul pari\n" " 5 - Punta sul dispari\n" " 9 - Esci.\n" " 0 - Gioca.\n" "\n" " Numero della scelta: ", soldi, puntata_tot); scanf("%d", &scelta); switch(scelta) { case 1: printf("Numero su cui puntare: "); scanf("%d", &numero); soldi_puntata[1] = punta_soldi(soldi_puntata[0]); break; case 2: soldi_puntata[2] += punta_soldi(soldi_puntata[0]); colore = 'n'; break; case 3: soldi_puntata[3] += punta_soldi(soldi_puntata[0]); colore = 'r'; break; case 4: soldi_puntata[4] += punta_soldi(soldi_puntata[0]); tipo = 'p'; break; case 5: soldi_puntata[5] += punta_soldi(soldi_puntata[0]); tipo = 'd'; break; case 9: exit(1); case 0: return 0; default: printf("Scelta non valida.\n\n"); break; } printf("\n"); puntata_gioco(); } int gira_roulette(void) { int numero_estratto[2] = { (rand() % 37) + 1, ((rand() % 10) + 1) % 2 }; int i; float differenza = soldi; printf("\n\aNumero estratto: "); if ( numero_estratto[0] == 37 ) printf("00"); else { if ( numero_estratto[1] == 0 ) printf("%d Rosso", numero_estratto[0]); else printf("%d Nero", numero_estratto[0]); } /* Controllo il colore */ if ( colore == 'n' ) { if ( numero_estratto[1] == 1 ) soldi += soldi_puntata[2]; else soldi -= soldi_puntata[2]; } else if ( colore == 'r' ) { if ( numero_estratto[1] == 0 ) soldi += soldi_puntata[3]; else soldi -= soldi_puntata[3]; } /* Controllo il numero */ if ( numero_estratto[0] == 37 ) soldi = 0; else { if ( numero_estratto[0] == numero ) soldi += soldi_puntata[1]; else soldi -= soldi_puntata[1]; } /* Controllo se è pari o dispari */ if ( tipo == 'p' ) { if ((numero_estratto[0] % 2) == 0) soldi += soldi_puntata[4]; else soldi -= soldi_puntata[4]; } else if ( tipo == 'd' ) { if ((numero_estratto[0] % 2) == 1) soldi += soldi_puntata[5]; else soldi -= soldi_puntata[5]; } printf("\n\nTotale "); differenza -= soldi; if ( differenza < 0 ) { differenza *= -1; printf("guadagno: % .2f", differenza); } else if ( differenza == 0 ) printf("nessun guadagno."); else printf("perdita: % .2f", differenza); printf("\n\n\n"); /* Resetto le puntate precedenti */ for ( i = 0; i < 8; ++i ) soldi_puntata[i] = 0; } int main(void) { srand(time(NULL)); printf("[ Gioco della roulette | Autore: duncan757 } \n"); while(1) { puntata_gioco(); gira_roulette(); } }
aaa