Problema con sasso carta forbice

di il
4 risposte

Problema con sasso carta forbice

Salve ragazzi è da poco che sto imparando sul C pero ho un problema veramente grande molto probabilmente legato a qualche concetto che non ho ben capito vi posto qua sotto il mio programma e vi illustro il problema


#include <stdio.h>
int main(){

int player_a, player_b;
int carta = 0, sasso = 1, forbice = 2;


printf("Giocatore 1, inserisci [carta|sasso|forbice] = [0|1|2]: ");
scanf("%d", &player_a);




if (player_a == 0 || player_a == 1 || player_a == 2){}else{
printf("ehy caro non mi freghi\n\n"); return main();}

if (player_a == carta)
{
printf("Computer ha scelto forbice VINCE!\n\n"); return main();}



if (player_a == sasso)
{
printf("computer ha scelto carta VINCE!\n\n"); return main();}


if (player_a == forbice)
{
printf("computer ha scelto sasso VINCE!\n\n"); return main();}

}



ok è un programma stupido secondo molti pero non riesco a capire il perche se invece di un numero ci inserisco una lettera all'interno della casella quando faccio partire il programma mi si impalla facendo un loop infinito che mi richiede il numero. Potete illuminarmi?

4 Risposte

  • Re: Problema con sasso carta forbice

    Così il computer vince sempre..

    Scherzi a parte, con i tipi INT succede. Non ricordo ci sia un modo per risolvere il problema.
  • Re: Problema con sasso carta forbice

    Anzi fai così:
    #include <stdio.h>
    int main(){
    
    char player_a; // player_b non c'è
    char carta = '0', sasso = '1', forbice = '2';
    
    
    printf("Giocatore 1, inserisci [carta|sasso|forbice] = [0|1|2]: ");
    player_a = getch();
    
    
    
    
    if (player_a == carta)
    {
    printf("Computer ha scelto forbice VINCE!\n\n"); return main();}
    
    
    
    else if (player_a == sasso)
    {
    printf("computer ha scelto carta VINCE!\n\n"); return main();}
    
    
    else if (player_a == forbice)
    {
    printf("computer ha scelto sasso VINCE!\n\n"); return main();}
    
    }
    
    else
    {
    printf("ehy caro non mi freghi\n\n");
    return main();}
    }
    
  • Re: Problema con sasso carta forbice

    Mhh mi da errore su questa riga
    player_a = getch();
  • Re: Problema con sasso carta forbice

    #include <stdio.h>
    #include <conio.h>
    int main(){
    
    char player_a; // player_b non c'è
    char carta = '0', sasso = '1', forbice = '2';
    
    
    printf("Giocatore 1, inserisci [carta|sasso|forbice] = [0|1|2]: ");
    player_a = getche();
    
    printf("\n");
    
    
    if (player_a == carta)
    {
    printf("Computer ha scelto forbice VINCE!\n\n"); return main();}
    
    
    
    else if (player_a == sasso)
    {
    printf("computer ha scelto carta VINCE!\n\n"); return main();}
    
    
    else if (player_a == forbice)
    {
    printf("computer ha scelto sasso VINCE!\n\n"); return main();}
    
    else
    {
    printf("ehy caro non mi freghi\n\n");
    return main();}
    }
    
    Sì, c'erano uno o due errori. Prova questo codice.
Devi accedere o registrarti per scrivere nel forum
4 risposte