K
Hier die Regeln; siehe auch da.
Und hier mein Vorschlag zur Implementierung eines Blackjack-Automaten (ohne die Versicherung):
#ifndef BLACKJACK_H
#define BLACKJACK_H
#ifdef __cplusplus
extern "C" {
#endif
typedef int BOOL;
typedef enum { KREUZ, PIK, HERZ, KARO } KARTENFARBE;
typedef enum { ZWEI, DREI, VIER, FUENF, SECHS, SIEBEN, ACHT, NEUEN, ZEHN, BUBE, DAME, KOENIG, AS } KARTENWERT;
typedef enum { HARDHAND, SOFTHAND, BLACKJACK, UEBERKAUFT } HANDSTATUS;
typedef struct
{
KARTENFARBE farbe;
KARTENWERT wert;
} BJ_KARTE;
typedef struct
{
BOOL ZiehenAbgeschlossen;
BOOL AmZug;
BOOL KannDoppeln;
BOOL KannTeilen;
int Einsatz;
int Gewinn;
int GesGewinn;
int AnzHaende;
} BJ_SPIELER;
typedef struct
{
int AnzKarten;
BJ_KARTE* Karten;
int Wert;
HANDSTATUS Status;
} BJ_HAND;
typedef struct
{
int Vorhanden[AS + 1];
int AnzVorhanden, AnzGefallen;
} BJ_KARTENSTATUS;
extern int BJ_PunkteProWert[];
BOOL BJ_Init(int AnzKarten, int MischBedg, int MinEinsatz, int MaxSpieler);
BOOL BJ_NeuesSpiel(int SpielerNr, int Einsatz);
BOOL BJ_NimmKarte(int SpielerNr, int Hand, BJ_KARTE*);
BOOL BJ_Doppeln(int SpielerNr);
BOOL BJ_Teilen(int SpielerNr);
BOOL BJ_Bank(void);
BOOL BJ_Abrechnen(void);
BOOL BJ_SpielerStatus(int SpielerNr, BJ_SPIELER*);
BOOL BJ_HandStatus(int SpielerNr, int Hand, BJ_HAND*);
BOOL BJ_BankStatus(BJ_SPIELER*, BJ_HAND*);
BOOL BJ_KartenStatus(BJ_KARTENSTATUS*);
void BJ_Exit(void);
#ifdef __cplusplus
} //extern "C" {
#endif
#endif /*BLACKJACK_H*/