CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Tworzenie gry w pokera - problem

Tworzenie gry w pokera - problem

dział ogólny

Tworzenie gry w pokera - problem

Nowy postprzez michael23 » czwartek, 3 lutego 2011, 01:56

Witam tak jak w temacie chce coś takiego napisać, ale przyciąłem się.
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();
  }
}
 


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
Ostatnio edytowano czwartek, 3 lutego 2011, 12:51 przez Cyfrowy Baron, łącznie edytowano 1 raz
Powód: Zmianiłem tagi z CODE na CPP.
Avatar użytkownika
michael23
Bladawiec
Bladawiec
 
Posty: 7
Dołączył(a): piątek, 28 stycznia 2011, 14:52
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: C++ Builder 6
Gadu Gadu: 0
    Windows 7Firefox

Re: Tworzenie gry w pokera - problem

Nowy postprzez polymorphism » czwartek, 3 lutego 2011, 11:56

Mała prośba: kod wklejaj w znaczniki 'CPP'.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Tworzenie gry w pokera - problem

Nowy postprzez michael23 » czwartek, 3 lutego 2011, 19:10

sorry mój błąd, administrator poprawił
Avatar użytkownika
michael23
Bladawiec
Bladawiec
 
Posty: 7
Dołączył(a): piątek, 28 stycznia 2011, 14:52
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: C++ Builder 6
Gadu Gadu: 0
    Windows 7Firefox

Re: Tworzenie gry w pokera - problem

Nowy postprzez Cyfrowy Baron » czwartek, 3 lutego 2011, 19:41

Odpowiedzi nieprędko się doczekasz, gdyż Twoje pytanie jest zbyt ogólne. W zasadzie to chcesz, żeby ktoś napisał za ciebie algorytmy do oceniania siły kart, obstawiania i podbijania, ale sam nie opracowałeś nawet grama kodu. W zasadzie to nie masz nawet żadnej koncepcji jak można by to zrobić.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 6 gości