2017-05-15 3 views
0

Ich entwerfe ein Kartenspiel (vom Typ Uno/Mau Mau) und überlege mir zwei Designoptionen. Hier sind sie. Sie sind sprachunabhängig (nicht in irgendeiner Programmiersprache geschrieben).Karten und Deck in einem Kartenspiel, erben oder nicht?

// option #1 

class Card 
{ 
    int suit; 
    int value; 

    int flags; // for special cards, such as "cannot be answered, opponent takes two cards etc." 

    // some methods 
} 

class Deck 
{ 
    Card backsStack[maxCards]; 
    Card facesStack[maxCards]; 

    method shuffle() 
    { 
     ... 
    } 

    method drawCards(int nr) 
    { 
     ... 
    } 

    method addCardToBacks(Card toAdd) 
    { 
     ... 
    } 

    method addCardToFaces(Card toAdd) 
    { 
     ... 
    } 
} 

Hier ist die andere Option. In dieser Option gibt es eine Grundkarte und eine Mau Mau Card erbt von ihr. Es gibt ein Standardkartenspiel mit einem Stapel, der nur die Kartenrückseiten zeigt. Mau Mau Deck hat einen weiteren Stapel (zeigt die Gesichter der Karten). Das Problem, das ich hier sehen kann, ist, dass es möglich ist, Grundkarten zu einem Mau Mau Deck hinzuzufügen (das nur Mau Mau Karten enthalten sollte), da es den grundlegenden "Backs" Stapel vom Basisdeck geerbt hat.

// option #2 

class Card 
{ 
    int suit; 
    int value; 

    // some methods 
} 

class MauMauCard : public Card 
{ 
    int flags; // for special cards, such as "cannot be answered, opponent takes two cards etc." 

    // some methods 
} 

class Deck 
{ 
    Card backsStack[maxCards]; 

    method shuffle() 
    { 
     ... 
    } 

    method drawCards(int nr) 
    { 
     ... 
    } 

    method addCardToBacks(Card toAdd) 
    { 
     ... 
    } 
} 

class MauMauDeck : public Deck 
{ 
    Card facesStack[maxCards]; 

    method addCardToFaces(Card toAdd) 
    { 
     ... 
    } 
} 

Welche Option sollte ich verwenden? Wie könnte ich es verbessern?

Vielen Dank im Voraus für Ihre Vorschläge!

Caroline

+0

Vielleicht können Sie ein statisches Fabrikmuster verwenden, um ein Deck und passende Kartenobjekte abhängig vom Spiel zu erstellen. Auf diese Weise steuern Sie, welche Objekte von Deck und Karte Sie erstellen. – ahoxha

Antwort

0

Der erste Entwurf ist ausreichend, wenn es nicht mehr Arten von Karten in der Zukunft sein werden. Andernfalls ist das zweite Design besser, da es Ihnen viel Arbeit sparen wird, wenn Sie MauMauCard in zwei Klassen aufteilen, wenn die Anwendung wächst.

+0

Ich dachte schon, es gibt ein "Problem" mit dem MauMau-Deck - es ist möglich, "einfache" (Nicht-MauMau) -Karten hinzuzufügen, da es vom Basis-Deck geerbt wurde (das zB in 5-Karten-Draw wiederverwendet werden konnte) Poker oder ähnliche Spiele). – Caroline

Verwandte Themen