lundi 21 décembre 2015

issue with converted char number to int using getch();

this function doesn't check the nums at the ifs... what i need to do? tnx for helping!

char c = ' ';
int hits = 0, miss = 0;
int counter = 0;
int flag = 0;
int input = 0;
int gen = 0;
int num1 = 0, num2 = 0, num3 = 0, num4 = 0;
int inum1 =0, inum2 = 0, inum3 = 0, inum4 = 0;  
do
{   
    do 
    {
        printf("generating...\n");
        gen = rand() % GEN_NUM + GEN_MIN;
        printf("gen %d\n", gen);
        num1 = gen % TEN;
        num2 = gen % (TEN*TEN) / TEN;
        num3 = gen % (TEN*TEN*TEN) / (TEN*TEN); 
        num4 = gen / (TEN*TEN*TEN);
    }   
    while (num1 < 0 || num1 > SIX || num1 == 0 || num2 < 0 || num2 > SIX || num2 == 0 || num3 < 0 || num3 > SIX || num3 == 0 || num4 < 0 || num4 > SIX || num4 == 0 || num1 == num2 || num1 == num3 || num1 == num4 || num2 == num3 || num2 == num4 || num3 == num4);

    do
    {
        do
        {
            printf("Write your guess (only 1-6, no ENTER is needed) [%d guesses left]\n", round);
            num4 = getch();
            putch(num4);
            num3 = getch();
            putch(num3);
            num2 = getch();
            putch(num2);
            num1 = getch();
            putch(num1);

            num1 -= '0';
            num2 -= '0';
            num3 -= '0';
            num4 -= '0';

            printf("\nnum1 %d\n", num1);
            printf("num2 %d\n", num2);
            printf("num3 %d\n", num3);
            printf("num4 %d\n", num4);

            //if ill use scanf it will work fine...
            /*  scanf("%4d", &input); 
            printf ("\ninput: %d\n", input);
            inum1 = input % TEN;
            printf ("%d\n", inum1);
            inum2 = input % (TEN*TEN) / TEN;
            printf ("%d\n", inum2);
            inum3 = input % (TEN*TEN*TEN) / (TEN*TEN);
            printf ("%d\n", inum3);
            inum4 = input / (TEN*TEN*TEN);
            printf ("%d\n", inum4); */ //

            if(num1 < 0 || num1 > SIX || num1 == 0 || num2 < 0 || num2 > SIX || num2 == 0 || num3 < 0 || num3 > SIX || num3 == 0 || num4 < 0 || num4 > SIX || num4 == 0 || num1 == num2 || num1 == num3 || num1 == num4 || num2 == num3 || num2 == num4 || num3 == num4)
            {
                printf("Only 1-6 are allowed, try again!");
                flag == 1;
            }
            else
            {
                flag = 0;
            }
        }
        while (flag == 1);
        hits = 0;
        miss = 0;
        if (inum1 == num1)
        {
            hits++;
        }
        else if(inum1 == num2 || inum1 == num3 || inum1 == num4)
        {
            miss++;
        }

        if (inum2 == num2)
        {
            hits++;
        }
        else if(inum2 == num1 || inum2 == num3 || inum2 == num4) 
        {
            miss++;
        }

        if (inum3 == num3)
        {
            hits++;
        }
        else if (inum3 == num1 || inum3 == num2 || inum3 == num4) 
        {
            miss++;
        }

        if (inum4 == num4)
        {
            hits++;
        }
        else if (inum4 == num1 || inum4 == num2 || inum4 == num3)
        {
            miss++;
        }
        if (hits == 4)
        {
            printf("4 HITS YOU WON!!!\n");
            flag = 0;
        }
        else if (round == 0)
        {
            printf("OOOOHHHH!!! Pancratius won and bought all of Hanukkah's gifts.\nNothing left for you...\n");
            printf("The secret password was %d\n", gen);
            flag = 0;
        }
        else
        {
            printf("you got\t %d HITS\t %d MISSES\n", hits, miss);
            counter++;
            round--;
            flag = 1;
        }
    }
    while(1 == flag);
    printf("Would you like to play again? (y/n):");
    c = getchar();
}
while (c == 'y');

Aucun commentaire:

Enregistrer un commentaire