Losowanie kart. Przypisanie do gracza.

0

Witam mam krótki kod.
classes.h:

#include <iostream>

using namespace std;


class Player
{
    string nazwa;
    public:
    Player(string);
    void pokazkarty();
    void losujkarte();
};

class Karta
{
    string figura;
    int numer;
    public:
    Karta(int, string);
};

W main.cpp

#include <iostream>
#include "classes.h"
using namespace std;



int main()
{
    Karta dwakier(2, "Kier");
    Karta dwakier(2, "Karo");
    Karta dwakier(2, "Trefl");
    Karta dwakier(2, "pik");
    Player gracz1("Gracz 1");
    gracz1.losujkarte();
    gracz1.losujkarte();
    gracz1.pokazkarty();
    Player gracz2("Gracz 2");
    gracz2.losujkarte();
    gracz2.losujkarte();
    gracz2.pokazkarty();
}

Dla lepszej przejrzystości są tylko cztery karty. Teraz po wylosowaniu karty dla gracza pierwszego ma zostać ona wypisana w konsoli oraz to samo dla gracza drugiego. Mam już stworzoną funkcję losującą jednak nie mam pojęcia jak przypisać kartę po wylosowaniu do danego gracza.
Czyli w sytuacji wylosowania dla gracza 1: 2 Kier i 2 Karo a dla gracza 2: 2 Trefl i 2 Pik zostanie wyłoniona nazwa obiekty.

Jedyne co wpadło mi do głowy to stworzenie dwóch klas KartyGraczaPierwszego KartyGraczaDrugiego, stworzyć tablice obiektów wektorem i dodawać tam kolejne karty po wylosowaniu. Później stworzyć pętle for i wyświetlić wszystkie karty z tablicy. Jednak może znacie jakiś lepszy pomysł gdzie uniknę tworzenia kolejnych klas i wystarczy mi bazowanie na tych dwóch?

1
Exsyl napisał(a):

Jedyne co wpadło mi do głowy to stworzenie dwóch klas KartyGraczaPierwszego KartyGraczaDrugiego, stworzyć tablice obiektów wektorem i dodawać tam kolejne karty po wylosowaniu.

jedna klasa Player / Play*) i w niej lista kart jak piszesz. Tej klasy będą oczywiście dwie instancje (dwa obiekty, tak jak już masz twój Player), ale klasa jedna

*) Player z listą kart, a Play tylko w bardzo ambitnym podejściu że Gracz != Gra

Inne podrzucone idee: kolor byłby dobry jako enum, i kolejność kart w kolorze też jako enum (za wyjątkiem że chcesz mocno obrabiać, formatować stringi, na wyjściu)

1
Exsyl napisał(a):
    Karta dwakier(2, "Kier");
    Karta dwakier(2, "Karo");
    Karta dwakier(2, "Trefl");
    Karta dwakier(2, "pik");

Budziet aszibka! Nie skompilirujestja!

1

Hmm, tak się składa że z osiem lat temu pisałem prostego pokera dla znajomego na zaliczenie. IMHO nie rozbiłeś sobie problemu wystarczająco drobno. Ja sobie podzieliłem to na:

  1. class Card która składająca się z dwóch enumów czyli figury i koloru i jakiś dodatkowych helperów które tam potrzebujesz.
  2. class CardSet zestaw kart którymi gracz może się posługiwać.
  3. class Deck czyli zestaw wszystkich możliwych kart.

Na początku rozgrywki wykonujesz Deck::Distribute() która zwraca Ci dwie instancje CardSet.

EDIT
Znalazłem wszystkie źródła na dysku i wrzuciłem na github'a - https://github.com/pdy/PrimitivePoker. Mogę z czasem to przerzucić gdzie indziej a na razie korzystaj jak chcesz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1