W programie utworzony jest wektor do którego ładowane są odpowiednie karty z pliku zasobów, następuje przetasowanie.
Odpowiednie elementy wektora są przypisywane odpowiednim vektorom graczy. Męczę się teraz nad tzw. preflopem gdzie kaźdy gracz musiałby ocenić siłę karty i obstawić - call,zrezygnować -fold lub podbić - raise. Teraz trochę kodu:
KOD cpp: UKRYJ
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Pokergame.h"
#include "Rules.h"
#include "Rank.h"
#include <memory>
#include <algorithm>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
class player
{
public:
char name[6];
int cash;
vector<String> vHand;
player(const char *wpis,int x); //deklaracja konstruktor
void DealCards(int i); //deklaracja funkcji wypełniającej wektor gracza
};
player::player(const char *wpis,int x) //definicja konstruktora
{
strcpy(name,(wpis ? wpis:""));
cash=x;
}
//---------------------------------------------------------------------------
void player::DealCards(int i) //wypełnienie wektora gracza , wypisanie do odpowiedniego labela zmiennej cash i name
{
vHand.push_back(Form1->vCards[i]);
dynamic_cast<TLabel *>(Form1->FindComponent("Label" + IntToStr(i+1)))->
Caption=name;
i++;
vHand.push_back(Form1->vCards[i]);
dynamic_cast<TLabel *>(Form1->FindComponent("Label" + IntToStr(i+1)))->
Caption=cash;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
randomize();
LoadCardToVector();
DrawBackCard();
ShuffleCards();
//DrawCards(14,17);
//DrawCards(17,18);
//DrawCards(18,19);
player you("You",1000); //tworzenie gracza
you.DealCards(0);
player greg("Greg",1000);
greg.DealCards(2);
player steve("Steve",1000);
steve.DealCards(4);
player mike("Mike",1000);
mike.DealCards(6);
player luke("Luke",1000);
luke.DealCards(8);
player erick("Erick",1000);
erick.DealCards(10);
player john("John",1000);
john.DealCards(12);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DrawBackCard(void) //wyswietlenie tyłu kart przeciwników
{
for(int i = 3; i < 15; i++)
dynamic_cast<TImage *>( FindComponent( "Image" + IntToStr( i ) ) )->
Picture->Bitmap->LoadFromResourceName((int)HInstance, vCards[52]);
vCards.pop_back(); //usuniecie załadowanego obrazu tyłu karty, by nie był w ogóle brany przy losowaniu
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LoadCardToVector(void) //ładowanie kart
{
for(int i = 0; i <= 52; i++)
{
vCards.push_back(LoadStr(i));
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ShuffleCards(void) //tasowanie kart 3krotne
{
for(int i = 0; i < 3; i++)
random_shuffle(vCards.begin(), vCards.end());
DrawCards(0,2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DrawCards(int i, int j) //funkcja wyświetlania kart, przyjmuje wartości na podstawie ktorych określa numery imagów do wypełnienia
{
for(i; i < j; i++)
dynamic_cast<TImage *>( FindComponent( "Image" + IntToStr( i + 1 ) ) )->
Picture->Bitmap->LoadFromResourceName((int)HInstance, vCards[i]);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender) //tworzenie własnych przyciskow
{
ImageList1->GetBitmap( 0, ik1->Picture->Bitmap );
ImageList1->GetBitmap( 2, ik2->Picture->Bitmap );
ImageList1->GetBitmap( 4, ik3->Picture->Bitmap );
ImageList1->GetBitmap( 6, ik4->Picture->Bitmap );
ImageList1->GetBitmap( 8, ik5->Picture->Bitmap );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik1MouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y) //obsługa kliknięcia na danym Imagu
{
if( Button == mbLeft )
{
ik1->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 1, ik1->Picture->Bitmap );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik1->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 0, ik1->Picture->Bitmap );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik2MouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik2->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 3, ik2->Picture->Bitmap );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik2MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik2->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 2, ik2->Picture->Bitmap );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik3MouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik3->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 5, ik3->Picture->Bitmap );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik3MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik3->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 4, ik3->Picture->Bitmap );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik4MouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik4->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 7, ik4->Picture->Bitmap );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik4MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik4->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 6, ik4->Picture->Bitmap );
RulesForm->Left = Form1->Left + 5;
RulesForm->Top = Form1->Top + 578;
RulesForm->ShowModal();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik5MouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik5->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 9, ik5->Picture->Bitmap );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik5MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik5->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 8, ik5->Picture->Bitmap );
RankForm->Left = Form1->Left + 687;
RankForm->Top = Form1->Top + 324;
RankForm->ShowModal();
}
}
#include <vcl.h>
#pragma hdrstop
#include "Pokergame.h"
#include "Rules.h"
#include "Rank.h"
#include <memory>
#include <algorithm>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
class player
{
public:
char name[6];
int cash;
vector<String> vHand;
player(const char *wpis,int x); //deklaracja konstruktor
void DealCards(int i); //deklaracja funkcji wypełniającej wektor gracza
};
player::player(const char *wpis,int x) //definicja konstruktora
{
strcpy(name,(wpis ? wpis:""));
cash=x;
}
//---------------------------------------------------------------------------
void player::DealCards(int i) //wypełnienie wektora gracza , wypisanie do odpowiedniego labela zmiennej cash i name
{
vHand.push_back(Form1->vCards[i]);
dynamic_cast<TLabel *>(Form1->FindComponent("Label" + IntToStr(i+1)))->
Caption=name;
i++;
vHand.push_back(Form1->vCards[i]);
dynamic_cast<TLabel *>(Form1->FindComponent("Label" + IntToStr(i+1)))->
Caption=cash;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
randomize();
LoadCardToVector();
DrawBackCard();
ShuffleCards();
//DrawCards(14,17);
//DrawCards(17,18);
//DrawCards(18,19);
player you("You",1000); //tworzenie gracza
you.DealCards(0);
player greg("Greg",1000);
greg.DealCards(2);
player steve("Steve",1000);
steve.DealCards(4);
player mike("Mike",1000);
mike.DealCards(6);
player luke("Luke",1000);
luke.DealCards(8);
player erick("Erick",1000);
erick.DealCards(10);
player john("John",1000);
john.DealCards(12);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DrawBackCard(void) //wyswietlenie tyłu kart przeciwników
{
for(int i = 3; i < 15; i++)
dynamic_cast<TImage *>( FindComponent( "Image" + IntToStr( i ) ) )->
Picture->Bitmap->LoadFromResourceName((int)HInstance, vCards[52]);
vCards.pop_back(); //usuniecie załadowanego obrazu tyłu karty, by nie był w ogóle brany przy losowaniu
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LoadCardToVector(void) //ładowanie kart
{
for(int i = 0; i <= 52; i++)
{
vCards.push_back(LoadStr(i));
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ShuffleCards(void) //tasowanie kart 3krotne
{
for(int i = 0; i < 3; i++)
random_shuffle(vCards.begin(), vCards.end());
DrawCards(0,2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DrawCards(int i, int j) //funkcja wyświetlania kart, przyjmuje wartości na podstawie ktorych określa numery imagów do wypełnienia
{
for(i; i < j; i++)
dynamic_cast<TImage *>( FindComponent( "Image" + IntToStr( i + 1 ) ) )->
Picture->Bitmap->LoadFromResourceName((int)HInstance, vCards[i]);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender) //tworzenie własnych przyciskow
{
ImageList1->GetBitmap( 0, ik1->Picture->Bitmap );
ImageList1->GetBitmap( 2, ik2->Picture->Bitmap );
ImageList1->GetBitmap( 4, ik3->Picture->Bitmap );
ImageList1->GetBitmap( 6, ik4->Picture->Bitmap );
ImageList1->GetBitmap( 8, ik5->Picture->Bitmap );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik1MouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y) //obsługa kliknięcia na danym Imagu
{
if( Button == mbLeft )
{
ik1->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 1, ik1->Picture->Bitmap );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik1->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 0, ik1->Picture->Bitmap );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik2MouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik2->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 3, ik2->Picture->Bitmap );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik2MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik2->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 2, ik2->Picture->Bitmap );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik3MouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik3->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 5, ik3->Picture->Bitmap );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik3MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik3->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 4, ik3->Picture->Bitmap );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik4MouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik4->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 7, ik4->Picture->Bitmap );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik4MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik4->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 6, ik4->Picture->Bitmap );
RulesForm->Left = Form1->Left + 5;
RulesForm->Top = Form1->Top + 578;
RulesForm->ShowModal();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik5MouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik5->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 9, ik5->Picture->Bitmap );
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ik5MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if( Button == mbLeft )
{
ik5->Picture->Bitmap = NULL;
ImageList1->GetBitmap( 8, ik5->Picture->Bitmap );
RankForm->Left = Form1->Left + 687;
RankForm->Top = Form1->Top + 324;
RankForm->ShowModal();
}
}
Czy możecie pomóc w przejściu preflopa do momentu ukazania 3 kart flopa na podstawie tego kodu? Jest 6 graczy komputerowych jak widać.
plik id_cards.rc
KOD cpp: UKRYJ
#define CLUBS_2 0
#define CLUBS_3 1
#define CLUBS_4 2
#define CLUBS_5 3
#define CLUBS_6 4
#define CLUBS_7 5
#define CLUBS_8 6
#define CLUBS_9 7
#define CLUBS_10 8
#define CLUBS_JACK 9
#define CLUBS_QUEEN 10
#define CLUBS_KING 11
#define CLUBS_ACE 12
#define DIAMONDS_2 13
#define DIAMONDS_3 14
#define DIAMONDS_4 15
#define DIAMONDS_5 16
#define DIAMONDS_6 17
#define DIAMONDS_7 18
#define DIAMONDS_8 19
#define DIAMONDS_9 20
#define DIAMONDS_10 21
#define DIAMONDS_JACK 22
#define DIAMONDS_QUEEN 23
#define DIAMONDS_KING 24
#define DIAMONDS_ACE 25
#define HEARTS_2 26
#define HEARTS_3 27
#define HEARTS_4 28
#define HEARTS_5 29
#define HEARTS_6 30
#define HEARTS_7 31
#define HEARTS_8 32
#define HEARTS_9 33
#define HEARTS_10 34
#define HEARTS_JACK 35
#define HEARTS_QUEEN 36
#define HEARTS_KING 37
#define HEARTS_ACE 38
#define SPADES_2 39
#define SPADES_3 40
#define SPADES_4 41
#define SPADES_5 42
#define SPADES_6 43
#define SPADES_7 44
#define SPADES_8 45
#define SPADES_9 46
#define SPADES_10 47
#define SPADES_JACK 48
#define SPADES_QUEEN 49
#define SPADES_KING 50
#define SPADES_ACE 51
#define BACK 52
STRINGTABLE
BEGIN
CLUBS_2 "CLUBS_2"
CLUBS_3 "CLUBS_3"
CLUBS_4 "CLUBS_4"
CLUBS_5 "CLUBS_5"
CLUBS_6 "CLUBS_6"
CLUBS_7 "CLUBS_7"
CLUBS_8 "CLUBS_8"
CLUBS_9 "CLUBS_9"
CLUBS_10 "CLUBS_10"
CLUBS_JACK "CLUBS_JACK"
CLUBS_QUEEN "CLUBS_QUEEN"
CLUBS_KING "CLUBS_KING"
CLUBS_ACE "CLUBS_ACE"
DIAMONDS_2 "DIAMONDS_2"
DIAMONDS_3 "DIAMONDS_3"
DIAMONDS_4 "DIAMONDS_4"
DIAMONDS_5 "DIAMONDS_5"
DIAMONDS_6 "DIAMONDS_6"
DIAMONDS_7 "DIAMONDS_7"
DIAMONDS_8 "DIAMONDS_8"
DIAMONDS_9 "DIAMONDS_9"
DIAMONDS_10 "DIAMONDS_10"
DIAMONDS_JACK "DIAMONDS_JACK"
DIAMONDS_QUEEN "DIAMONDS_QUEEN"
DIAMONDS_KING "DIAMONDS_KING"
DIAMONDS_ACE "DIAMONDS_ACE"
HEARTS_2 "HEARTS_2"
HEARTS_3 "HEARTS_3"
HEARTS_4 "HEARTS_4"
HEARTS_5 "HEARTS_5"
HEARTS_6 "HEARTS_6"
HEARTS_7 "HEARTS_7"
HEARTS_8 "HEARTS_8"
HEARTS_9 "HEARTS_9"
HEARTS_10 "HEARTS_10"
HEARTS_JACK "HEARTS_JACK"
HEARTS_QUEEN "HEARTS_QUEEN"
HEARTS_KING "HEARTS_KING"
HEARTS_ACE "HEARTS_ACE"
SPADES_2 "SPADES_2"
SPADES_3 "SPADES_3"
SPADES_4 "SPADES_4"
SPADES_5 "SPADES_5"
SPADES_6 "SPADES_6"
SPADES_7 "SPADES_7"
SPADES_8 "SPADES_8"
SPADES_9 "SPADES_9"
SPADES_10 "SPADES_10"
SPADES_JACK "SPADES_JACK"
SPADES_QUEEN "SPADES_QUEEN"
SPADES_KING "SPADES_KING"
SPADES_ACE "SPADES_ACE"
BACK "BACK"
END
#define CLUBS_3 1
#define CLUBS_4 2
#define CLUBS_5 3
#define CLUBS_6 4
#define CLUBS_7 5
#define CLUBS_8 6
#define CLUBS_9 7
#define CLUBS_10 8
#define CLUBS_JACK 9
#define CLUBS_QUEEN 10
#define CLUBS_KING 11
#define CLUBS_ACE 12
#define DIAMONDS_2 13
#define DIAMONDS_3 14
#define DIAMONDS_4 15
#define DIAMONDS_5 16
#define DIAMONDS_6 17
#define DIAMONDS_7 18
#define DIAMONDS_8 19
#define DIAMONDS_9 20
#define DIAMONDS_10 21
#define DIAMONDS_JACK 22
#define DIAMONDS_QUEEN 23
#define DIAMONDS_KING 24
#define DIAMONDS_ACE 25
#define HEARTS_2 26
#define HEARTS_3 27
#define HEARTS_4 28
#define HEARTS_5 29
#define HEARTS_6 30
#define HEARTS_7 31
#define HEARTS_8 32
#define HEARTS_9 33
#define HEARTS_10 34
#define HEARTS_JACK 35
#define HEARTS_QUEEN 36
#define HEARTS_KING 37
#define HEARTS_ACE 38
#define SPADES_2 39
#define SPADES_3 40
#define SPADES_4 41
#define SPADES_5 42
#define SPADES_6 43
#define SPADES_7 44
#define SPADES_8 45
#define SPADES_9 46
#define SPADES_10 47
#define SPADES_JACK 48
#define SPADES_QUEEN 49
#define SPADES_KING 50
#define SPADES_ACE 51
#define BACK 52
STRINGTABLE
BEGIN
CLUBS_2 "CLUBS_2"
CLUBS_3 "CLUBS_3"
CLUBS_4 "CLUBS_4"
CLUBS_5 "CLUBS_5"
CLUBS_6 "CLUBS_6"
CLUBS_7 "CLUBS_7"
CLUBS_8 "CLUBS_8"
CLUBS_9 "CLUBS_9"
CLUBS_10 "CLUBS_10"
CLUBS_JACK "CLUBS_JACK"
CLUBS_QUEEN "CLUBS_QUEEN"
CLUBS_KING "CLUBS_KING"
CLUBS_ACE "CLUBS_ACE"
DIAMONDS_2 "DIAMONDS_2"
DIAMONDS_3 "DIAMONDS_3"
DIAMONDS_4 "DIAMONDS_4"
DIAMONDS_5 "DIAMONDS_5"
DIAMONDS_6 "DIAMONDS_6"
DIAMONDS_7 "DIAMONDS_7"
DIAMONDS_8 "DIAMONDS_8"
DIAMONDS_9 "DIAMONDS_9"
DIAMONDS_10 "DIAMONDS_10"
DIAMONDS_JACK "DIAMONDS_JACK"
DIAMONDS_QUEEN "DIAMONDS_QUEEN"
DIAMONDS_KING "DIAMONDS_KING"
DIAMONDS_ACE "DIAMONDS_ACE"
HEARTS_2 "HEARTS_2"
HEARTS_3 "HEARTS_3"
HEARTS_4 "HEARTS_4"
HEARTS_5 "HEARTS_5"
HEARTS_6 "HEARTS_6"
HEARTS_7 "HEARTS_7"
HEARTS_8 "HEARTS_8"
HEARTS_9 "HEARTS_9"
HEARTS_10 "HEARTS_10"
HEARTS_JACK "HEARTS_JACK"
HEARTS_QUEEN "HEARTS_QUEEN"
HEARTS_KING "HEARTS_KING"
HEARTS_ACE "HEARTS_ACE"
SPADES_2 "SPADES_2"
SPADES_3 "SPADES_3"
SPADES_4 "SPADES_4"
SPADES_5 "SPADES_5"
SPADES_6 "SPADES_6"
SPADES_7 "SPADES_7"
SPADES_8 "SPADES_8"
SPADES_9 "SPADES_9"
SPADES_10 "SPADES_10"
SPADES_JACK "SPADES_JACK"
SPADES_QUEEN "SPADES_QUEEN"
SPADES_KING "SPADES_KING"
SPADES_ACE "SPADES_ACE"
BACK "BACK"
END






