Blackjack in C
-
Hat jemand ein einfache, nicht graphische BlackJack (Siebzehn- und- Vier) Kartenspiel in C, was mir schicken kann, oder kann jemand erklären, wie ich das machen kann (was für Funktionen sind nötig usw.)? Ich bin Anfänger.
-
naja theoretisch ist das relativ einfach...
das einzige was ein bisschen schwieriger ist, ist die bedingten wahrscheinlichkeiten der karten abzubilden korrekt abzubilden...schau dir mal srand und rand an... wenn du zumindest ein bisschen programmieren kannst solltest du das ohne probleme selber hinbekommen...
-
Ich habe nur ein Russisches Roulette. Wenn es dir hilft, kann ich es dir schicken.
-
Ich habe einen einarmigen Banditen in C programmiert! Der ist ganz billig. Blackjack ist grad im entstehen.
Du nummerrierst deine Karten 1-? alle durch und dann per zufall mit hilfe von rand und srand wie ja schon gesagt von Windalf. Eigentlich ganz einfach :p
-
class CCard { public: enum Color = { CLUB, SPADE, HEART, DIAMOND, }; enum Value = { TWO=2, THREE=3, FOUR=4, FIVE=5, SIX=6, SEVEN=7, EIGHT=8, NINE=9, TEN=10, JACK=10, QUEEN=10, KING=10, ACE=11, }; CCard(Color color, Value value) { enColor=color; enValue=value; } Color GetColor() { return enColor; } Value GetValue() { return enValue; } private: Color enColor; Value enValue; } class CCardStack { private: int nCardCounter; CCard m_aCardStack[53]; public: CCardStack() { nCardCounter=0; for(int i=0;i<52;i++) { CCard m_aCardStack[i] = new CCard((CCard.Color)(i/13),((CCard.Value)((i%13)+2)); } } ~CCardStack() { for(int i=0;i<52;i++) { if(m_aCardStack[i]) delete m_aCardStack[i]; } } void Shuffle() { nCardCounter=0; for(int i=0;i<10;i++) { for(int j=0;j<52;j++) { CCard temp=m_aCardStack[i]; int n=rnd(52); // Zufallszahlenberechnung weiss ich jetzt nicht m_aCardStack[i]=m_aCardStack[n]; m_aCardStack[n]=temp; } } } CCard GetNextCard() { m_nCardCounter++; if(m_nCardCounter==52) m_nCardCounter=0; return m_aCardStack[m_nCardCounter]; }
vielleicht ein denkanstoss - nur schnell mal so getippt - so ohne funktionsgarantie !
-
Kleine Nebenbemerkung: Blackjack ist etwas anderes als Siebzehn-und-Vier. Ersteres wird mit einem [in Spielbanken: mehreren] Rommé-Blatt (52 Karten) gespielt, letzteres mit einem Skat-Blatt (32 Karten).
-
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*/