Untitled

 avatar
unknown
plain_text
4 months ago
2.5 kB
3
Indexable
/*
To run this piece of shit, first you need to compile this (in the terminal):
`gcc -O0 -Wall -std=c17 -ggdb algorytm_losowanka.c -o algorytm_losowanka`
then run it:
`./algorytm_losowanka`
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX_WORD_LEN 10

void game(char *wordd)
{
    srand(time(NULL));
    int randNum, userNum = -1;

    int userTokens = 5;
    int winTokens = 2, failTokens = -1;
    int finishWinUserTokens = 10, finishFailUserTokens = 0;

    while (1)
    {
        // printf("time: %ld\n", time(NULL));   // random number seed is timestamp
        randNum = rand() % 3 + 1;

        printf("insert kremówka: ");    // standard input - ignoring user mistakes
        scanf("%d", &userNum);          // standard input - ignoring user mistakes

        // fancy input - handling user mistakes
        // int retries = 0;
        // while (userNum < 1 || 3 < userNum)
        // {
        //     retries == 0 ? printf("insert kremówka: ") : printf("invalid number, insert kremówka again: ");
        //     scanf("%d", &userNum);
        //     retries++;
        // }
        // retries = 0;

        if (randNum == userNum)
        {
            userTokens += winTokens;
            printf("win! current tokens: %d\n", userTokens);
        }
        else
        {
            userTokens += failTokens;
            printf("fail! PC number was %d\tcurrent tokens: %d\n", randNum, userTokens);
        }

        if (userTokens >= finishWinUserTokens)
        {
            sprintf(wordd, "win!");
            return;
        }
        else if (userTokens == finishFailUserTokens)
        {
            sprintf(wordd, "fail!");
            return;
        }

        userNum = -1; // for user mistakes handler
    }
}

int main()
{
    char wordd[MAX_WORD_LEN + 1];
    game(wordd);

    printf("Game result: %s\n", wordd);
}

/*
w zasadzie wszystko dzieje się w funkcji game

- ustawiamy wszystkie stałe zgodnie z warunkami zadania
- w nieskończonej pętli losujemy liczbę i porównujemy
-   jeśli trafiona -> przyznaj nagrodę
-   jeśli nie trafiona -> przyznaj karę
-   sprawdź czy to nie koniec (tokenów lub wygrana) i jeśli koniec to zwróć wynik

psudokod:

u_tokens = 5

while () // znaczy że nieskończona pętla
    r_num = losuj_liczbe()
    u_num = liczba_użyszkodnika() // do skutku aż poda poprawną
    if r_num == u_num
        u_tokens += 2
    else
        u_tokens -= 1
    if u_tokens >= 10
        return "win"
    if u_tokens == 0
        return "fail"
*/
Editor is loading...
Leave a Comment