Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Frage bzgl. Haltung von Klasseneigenschaften

  1. #1
    Registrierter Benutzer
    Registriert seit
    20.11.2004
    Beiträge
    122

    Frage bzgl. Haltung von Klasseneigenschaften

    Hi Leute,
    ich habe eine Frage bezueglich eines Programmdesigns.

    Undzwar habe ich vor mir fuer das Kartenspiel Magic eine kleine
    Deckverwaltung (bis jetzt in C++) zu basteln.

    Eine Karte hat z.B. eine Eigenschaft "Farbe".
    Moegliche Werte sind dabei z.B. schwarz, blau, rot... usw.
    Es kommen im Programmverlauf keine neuen Farben dazu.

    Wie wuerdest ihr das in C++ am Besten abbilden?
    Mir fallen da folgende Moeglichkeiten ein:

    1) Ein enum pro Eigenschaft der Karte
    2) Eine "CardProperty" Klasse mit - z.B. - einem const vector fuer
    moeglichen Werte der Eigenschaft
    3) Was anderes, was mir noch nicht eingefallen ist..

    Bei 1) habe ich Zahlen, was ziemlich unuebersichtlich wird,
    wenn der Großteil der Eigenschaften einer Karte eine Ganzzahl ist.

    Danke fuer Tipps und Ideen.

    Gruß
    Kai
    Geändert von `kk (21-10-2005 um 11:46 Uhr)

  2. #2
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    ein vector oder eine andere Klasse gingen zwar problemlos, aber ein enum wird am meisten Platz sparen und am wenigsten Verwaltungs-Overhead haben.
    I haven't lost my mind - It's somewhere on a backup-disc

  3. #3
    Registrierter Benutzer
    Registriert seit
    20.11.2004
    Beiträge
    122
    Es ging mir rein um die Uebersicht.
    Wenn's um den Platz gegangen waere, koennte ich gleich
    direkt die Werte so reinschreiben wie sie sind...

    Aber ok.. danke fuer dein Tipp.
    Hat jemand evtl. noch ne andere Idee außer die zwei
    bereits genannten?

    Danke & Gruß
    Kai

  4. #4
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    Wo hast du bei bei einem enum Zahlen?
    Da arbeitet man doch nur noch mit den sprechenden Namen:
    Code:
    typdef enum
    {
       SCHWARZ,
       BLAU,
       ROT
    } CARD_COLOUR;
    Dass dann SCHWARZ intern den Wert 0 bekommt, BLAU den Wert 2 usw. das ist ja dann nicht mehr wichtig.
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

  5. #5
    Registrierter Benutzer
    Registriert seit
    20.11.2004
    Beiträge
    122
    Fuer die Farbe kann ich ein enum nehmen ja...

    Aber es gibt z.B. auch einige Eigenschaften, wo nach und
    nach mehrere moegliche Werte hinzu kommen.

    Ich habe z.B. eine Textdatei mit allen Karten, die ich
    beim Programmstart einlese und Kartenobjekte erstelle.
    Es gibt verschiedene Kartentypen, die ich vorher nicht kenne.
    Zumindest dafuer (Sprich: Fuer den Kartentyp) muesste ich
    eine Klasse zusammenbauen. Und wenn ich diese sowieso hab,
    dachte ich mir, kann ich sie auch gleich fuer die Farbe benutzen.

    Danke fuer eure Antworten.

    Gruß
    Kai

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Eigenschaften die sich nicht gegenseitig ausschließen, kann man leichter in getrennten Variablen halten.

    zB ein bool für "Fliegend", ein bool für "Artefakt", etc

    Theoretisch kann man dann immer noch beim Zugriff kontrollieren, daß keine unmöglichen Kombination entstehen, wie Fliegend + Trampelschaden.

    Allerdings kann eine Karte mehrere Zustände mit unterschiedlichen Eigenschaften haben, wenn ich nicht irre.

    Daher könnte man die Zustände in eine extra Klasse geben und in der Karte dann Objekte dieser Zustände.

    zB einen Zustand für getapt und einen für normal.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer
    Registriert seit
    20.11.2004
    Beiträge
    122
    Hallo anda_skoa,
    bei diesen Eigenschaften ist es relativ klar, diese
    so abzuspeichern. Entweder kann die Karte fliegen, oder nicht.

    Aber da das für eine Deckverwaltung nicht besonders
    von Belangen ist, kann ich das getrost weglassen.

    Ich will ja kein Spiel schreiben...


    Aber mir ging es jetzt ja wirklich eher um die Eigenschaften,
    wo man im Prinzip ne Auswahl von mehreren Werten hat...
    diese Werte aber dynamisch erzeugt werden.

    Aber danke trotzdem fuer dein Tipp!

    Gruß
    Kai

  8. #8
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Deckverwaltung also mehr im Sinne von Schallplattenverwaltung, also welche man hat, bzw wieviel Stück davon?

    Welche der Eigenschaften möchtest du denn dabei benutzen?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  9. #9
    Registrierter Benutzer
    Registriert seit
    20.11.2004
    Beiträge
    122
    Hallo anda.

    Naja..., fast.

    Ich moechte *alle* Karten im Programm
    zur Verfuegung stellen, damit man aus diesem Kartenpool
    (ca. 15000 Karten) heraus Decks erstellen kann.

    Diese sollen dann als Txt-, XML-, HTML- (whatever )
    exportiert werden koennen.

    Wenn ich dafuer erstmal die Logik habe, werde
    ich wahrscheinlich auch eine GUI dafuer bauen.

    Und wo ich grad dabei bin... wer gerne mitmachen moechte,
    ich suche noch Hilfe. Das Programm wird entweder in
    C++, Python oder OCaml geschrieben. So ganz festlgelegt
    habe ich mich da aber noch nicht.

    Gruß
    Kai

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •