Gra w oczko - Pobieranie atrybutu z tablicy obiektów

0

Witam, mam do napisania program - grę w oczko, po drodze w jego pisaniu pojawił mi się problem z pobieraniem atrybutu poszczególnego obiektu z tablicy obiektów(za pomocą metody). Jeżeli chodzi o sam program to mamy go podzielić na 3 klasy - Karta, Gracz oraz Kasyno. Klasę karta otrzymaliśmy gotową oraz mamy do wykonania poszczególne zadania(np. ze Kasyno ma się składać z 51 kart itd. Mam świadomość że powinienem się posłużyć wskaźnikami, ale nie za bardzo wiem jak. Napisałem wstępnie coś takiego ale wydaję mi się że nie będzie to działać. Ale może od początku :
To są podstawowe atrybuty/metody klasy kasyno :

class Kasyno {
public:
    Karta* Karty[51];
    Gracz* Gracze[20];
    int daj_karte;

    void Tworz_talie()
    {
        int licznik = 0;
        for (int i = 0; i < 4; i++) // Tworzy 52 obiektow klasy karta
        {
            for (int j = 0; j < 13; j++) {
                Karty[licznik] = new Karta(i, j);
                licznik++;
                cout << Karty[licznik] << endl;
            }
        }
    }
    void tasowanie()
    {
        for (int i = 0; i < 100; i++) {
            srand(time(NULL));
            swap(Karty[rand() % 51 + 0], Karty[rand() % 51 + 0]); // zamienia miejscami karty 100 razy
        }
    }
    Karta* dajKarte()
    {
        srand(time(NULL));
        do {
            int daj_karte = rand() % 51 + 0;
        } while (Karty[daj_karte] != NULL);
        Karty[daj_karte] = NULL;
        return Karty[daj_karte];
    }

Jeżeli chodzi o klase Karta to wygląda to tak:
w cpp mamy rozpisane wartosci, kolory i figury poszczegolnych

class Karta {
private:
    char kolor;
    char figura;
    int wartosc;

public:
    Karta(int _kolor = 0, int _wartosc = 0);
    void setKolor(int _kolor);
    void setWartosc(int _wartosc);
    char getKolor() const { return kolor; }
    char getFigura() const { return figura; }
    int getWartosc() const { return wartosc; }
    void wypisz() const { std::cout << figura << kolor << "\n"; }
};
karta cpp const char kolory[] = { 3, 4, 5, 6 };
const char figury[] = { '2', '3', '4', '5', '6', '7', '8', '9', 'D', 'J', 'Q', 'K', 'A' };
const int wartosci[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 3, 4, 11 };

Karta::Karta(int _kolor, int _wartosc)
{
    setKolor(_kolor);
    setWartosc(_wartosc);
}

void Karta::setKolor(int _kolor)
{
    if (_kolor < 4) {
        kolor = kolory[_kolor];
    }
}

void Karta::setWartosc(int _wartosc)
{
    if (_wartosc < 13) {
        figura = figury[_wartosc];
        wartosc = wartosci[_wartosc];
    }
}

A w klasie gracz wygląda to tak:

class Gracz {
    Karta* Karty_gracz[10];
    int suma = 0;
    int licznik_kart = 0;
    bool pass = false;
    //size_t liczba_kart = sizeof(Karty_gracz) / sizeof(Karty_gracz[10]);
    string nazwa_gracza;

    char PosiadaneKarty(Karta* _Karty_gracz)
    {
        for (int i = 0; i < licznik_kart; i++) {
            char kolor = _Karty_gracz.getKolor();
            char figura = _Karty_gracz.getFigura();
            switch (kolor) {
            case 3:
                cout << figura << endl;
                cout << "Trefl" << endl;
                break;
            case 4:
                cout << figura << endl;
                cout << "Pik" << endl;
                break;
            case 5:
                cout << figura << endl;
                cout << "Kier" << endl;
                break;
            case 6:a
                cout << figura << endl;
                cout << "Karo" << endl;
                break;
            default:
                cout << "Brak Kart" << endl;
                break;
            }
        }
    }

Niżej zadam pytanie :

  1. Czy to w ogóle, będzie działać ? czy muszę pokombinować na wskaźnikach ?
  2. Czy takie metody jak tu zrobiłem mają sens ? Ma to jakąś rację bytu, w sensie czy używanie metody wysyłając do niej poszczególny obiekt z tablicy obiektów jest w ogóle możliwe ? czy najpierw muszę się dostać do poszczególnego obiektu a dopiero potem wysłać go jako pojedyńczy obiekt, a nie obiekt w tablicy ?

dodatkowe:
3. Jak dopisać do konstruktora klasy,w której jest użyta zmienna char[20] nazwe podawaną przez użytkownika ? Trzeba przeciążyć operator ?

Pozdrawiam i z góry dziękuję za pomoc :)

0

Kart jest 52 (nie 51) zabraknie rozmiaru tablicy.
Wydawało mi się że w tej grze 'J', 'Q', 'K' mają wartość 10.
Warto zrobić coś takiego:

const char CardColors[] = { '\3','\4','\5','\6' };
const char *CardFigure[] = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" };
const unsigned char CardValue[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 11 };
class Card
{
	private:
	unsigned char index;
	public:
	Card(unsigned char index):index(index) {}
	char color()const { return CardColors[index&3]; }
	char figure()const { return CardFigure[index>>2]; }
	unsigned char value()const { return CardValue[index>>2]; }
	friend ostream &operator<<(ostream &s,const Card &card) { return s<<card.figure()<<card.color(); }
};

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