R
Und im Intresse der performance wuerd ich die Definition deiner daten in das halten was sie sind ... nämlich predefinierte werte, also Enums.
Und nur zur ausgabe aufm Bildschirm irgendwelche Strings erzeugen (kommt dann auch der Trennung von daten und Darstellungsklassen zu gute).
Und du kannst spaeter ganz schnell das Haessliche Franzoesiche Blatt durch nen schoeneres Deutsches austauschen (Eichel Gruen Rot Schell) !!!
enum BildT
{
Zwei = 0,
Drei,
Vier
// ...
Koenig,
Ass
};
enum FarbT
{
Karo,
Pik,
Kreuz,
Herz
};
Das naechste ... benenne die Klassen besser was sie wirklich sind.
class Karte{
private:
string karte[52];
Was was 52 dinger hat ... ist definitiv keine Karte, ... ne Karte hat ein Bild und ne Farbe !!! was du meinst iss nen Blatt oder Kartenset ^^
class Karte
{
public:
Karte(BildT bild,FarbT farbe);
// vergleichen sollte man karten ziemlich simpel, genau so wie sortieren ...
operator bool ==(const Karte &rx) const;
operator bool !=(const Karte &rx) const;
operator bool >(const Karte &rx) const;
operator bool <(const Karte &rx) const;
};
// zum "Anzeigen " brauchst dann eher die Strings ... dazu solltes dir ne Klasse schreiben, die die Namen(Strings) haelt, schreiben ... wo man die namen auch simpel austauschen kann, und mittels memberfunktion die namen holen kann ...
class BlattNamen
{
public:
const std::string & getFarbName(FarbT farbe) const; // nur ref auf vorhandenen String
const std::string & GetBildName(BildT bild) const; // nur ref auf vorhandenen String
std::string getCardName(FarbT farbe,BildT bild) const; // string wird zusammengebaut und nicht nur referenziert ...
};
class Blatt
{
public:
std::vector<Karte> getGemischtesBlatt() const;
private:
// an der Stelle braucht man eh kaum nen zugriff ueber index, sondern nen eher ne sortierung ... also set !
std::set<Karte> mKarten;
};
Das waern nur meine Vorschlaege.
Vorteile, Hasst du ne relativ gut abstrahierte Darstellungsschicht, kannst deine KartenSet klassen fuer was weiss ich fuer andere Spiele Impls auch noch verwenden ....
Die klassen sind unvollstaendig definiert, also die benoetigten CTors und Add funktionen solltest selber noch hinzufuegen ....
Ciao ...