Salve a tutti, in un esercizio di programmazione si chideva di implementare un programma composto dalle funzioni:

  • int roll_dice(void) che genera 2 numeri casuali compresi tra 1 e 6 e se restituisce la somma
  • bool play_game(void) che restituisce true se il giocatore vince, false se perde (regole: se al primo lancio ottiene come somma dei dadi 7 o 11 vince, se ottine 2,3 o 12 perde, altrimenti vince se nei successivi lanci riesce ad ottenere il risultato del prima lancio e perde se ottiene 7)
  • main che, oltre a chiamare play_game(), tiene traccia delle vittorie e delle sconfitte


I miei problemi sono 2:
  1. Nel main, il ciclo mi si interrompe sempre alla seconda interazione e non riesco a capire il perchè
  2. Non so se sia normale, ma spesso roll_dice genera più volte consecutivamente gli stessi numeri casuali


Grazie a chi mi aiuterà

codice HTML:
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>

#define FACCE_DADO 6

int roll_dice(void);
int play_game(void);

int main(void)
{
    int wins = 0, defeats = 0;
    char c;
    do{
        if(play_game())
        {
            printf("YOU WIN\n");
            wins++;
        }
        else
        {
            printf("YOU LOOSE\n");
            defeats++;
        }
        printf("Play again? ");
        scanf("%c",&c);
        printf("\n");
        c = toupper(c);
    }while(c == 'Y');

    printf("Wins: %d \tLossess: %d",wins,defeats);

    return 0;
}

int roll_dice(void)
{
    int dice1,dice2,sum = 0;
    srand(time(NULL));
    dice1 = rand() % FACCE_DADO + 1;
    dice2 = rand() % FACCE_DADO + 1;
    return (dice1 + dice2);
}

int play_game(void)
{
    bool ris,done = true;
    int i = roll_dice();
    printf("You rolled %d\n",i);
    if(i == 7 || i == 11)
        ris = true;
    else if(i == 2 || i == 3 || i == 12)
        ris = false;
    else
    {
        printf("Your point is %d\n",i);
        int j = roll_dice();
        while(done)
        {
            printf("You rolled %d\n", j);
            if(j == i)
            {
                ris = true;
                done = false;
            }

            else if(j == 7)
            {
                ris = false;
                done = false;
            }
            else
                done = true;
        }
    }

    return ris;
}