Table of Contents

Implementační test 23.1.2025

Napište program, který bude simulovat hru Black Jack (Oko bere, Jednadvacet) podle následujících pravidel:

Implementace

Následující body nejsou povinné, spíš doporučené.

1. Jednotlivé karty budou reprezentovány strukturou, která bude obsahovat název karty (2 - 9, J, Q, K, A), barvu (srdce, kára, kříže, piky) a její hodnotu.

typedef struct
{
    // vase implementace
} karta_t;

2. Karty jsou umístěny ve vhodné struktuře, která umožňuje destruktivní náhodný výběr karty z množiny. Jako jedno z možných řešení se nabízí kruhová fronta nebo použití dvou zásobníků: na začátku hry se vloží potřebný počet karet do prvního zásobníku, náhodný počet karet se z prvního zásobníku vyjme a vloží do druhého. Kartu, která je na vrcholu některého ze zásobníků se odebere a dostává ji hráč, který je na tahu.

Generátor náhodných čísel:

#include <time.h>
#include <stdlib.h>
 
srand(time(NULL));   // inicializace, staci zavolat jednou
int r = rand();      // vrati pseudo-nahodne cislo typu integer v rozsahu 0 a RAND_MAX

3. Každý hráč je reprezentován datovou strukturou, která obsahuje informaci o jeho jméně, kartách, které dostal od krupiéra a celkovém součtu ve hře.

typedef struct {
    // vase implementace
} hrac_t;

4. Jména hráčů jsou programu jsou vložena na začátku hry, např. všechna najednou, oddělena mezerou

Příklad hry

$ game.exe
> zadej hrace: Petr, Pavel, Jan
> ve hre jsou Petr, Pavel a Jan
> Petr ? [a/n/s] a
< Piky 2
> Petr 2 Pavel 0 Jan 0
> Pavel ? [a/n/s] a
< Kara A
> Petr 2 Pavel 11 Jan 0
> Jan ? [a/n/s] n
> Petr ? [a/n/s] s
> Soucet: 2
> Piky 2
> Petr ? [a/n/s] a
< Kriz K
> Petr 12 Pavel 11 Jan 0

Hodnocení

Hodnoceny jsou dílčí části programu: