Laden...

[erledigt] Klassendesign für Browsergame

Erstellt von PPK vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.362 Views
P
PPK Themenstarter:in
157 Beiträge seit 2010
vor 11 Jahren
[erledigt] Klassendesign für Browsergame

Hallo community,
Ich arbeite gerade an einem Programm, dass bei einem Browsergame alle Daten ausliest usw.
Nun gibt es allerdings auch Schiffe mit Atk, Hülle, usw...
Sollte ich nun für jedes Schiff eine eigene Klasse anlegen oder sollte ich lieber in einer Klasse Flotte alle Schiffe als int speichern und die Eigenschaften über Funktionen auslesen (Atk, Hülle, etc.).
Das Gleiche gilt ja auch für Forschung und Gebäude.

Ich tendiere eher zu letzterem.

C
180 Beiträge seit 2011
vor 11 Jahren

ohne jetzt genaueres über das projekt zu wissen würde ich im allgemeinen zu folgendem raten:

wenns nur einen schiffst typ gibt dann einfach nur eine Klasse schiff und fertig. Und für jedes schiff das exestiert erstellst du eben ein objekt davon

wenn es mehrere schiffstypen gibt: Eine Abstakte Klasse Schiff und und für jeden schiffstyp eine eigene klasse die von der abstrakten erbt

P
PPK Themenstarter:in
157 Beiträge seit 2010
vor 11 Jahren

Das war auch erst mein Gedanke, nur war ich mir nicht sicher, ob es wegen dem größeren Speicherbedarf ein bessere Lösung gibt,
da ja viele Schiffe einer Art, sonst immer ein neues Objekt wäre, mit gleichen Werten.

Bsp. 10.000 Auroras --> komplett gleiche Werte

Man könnte auch beides verknüpfen: In dem man die Anzahl in der Klasse als Eigenschaft definiert.

16.807 Beiträge seit 2008
vor 11 Jahren

Ich würde eine Klasse Schiff machen, die eine Property (Enum) des Schiffstyps hat.
Über die Enum kannst Du Dir dann die spezifischen Werte des Schiffs ausgeben lassen.
Sowas wie

ShipProperties schiffsEigenschaften = ShipProperties.GetByType(myEnum.Attacker);

Sollte sich ein einzelnes Schiff jedoch "hochleveln" lassen, dann brauchst Du die Werte direkt am Objekt.

Edit: Möglich wäre natürlich auch Konstanten innerhalb der Schiffsklasse, wie PPK vorgeschlagen hatte.
Aufgrund der Auflistungsmöglichkeiten würde ich aber den Weg über Enums gehen (bzw. gehe es auch bei einigen ähnlichen Sachen).

C
180 Beiträge seit 2011
vor 11 Jahren

die idee mit den enums gefällt mir! Das muss ich mir merken für zukünftige sachen 😃

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo PPK,

Bsp. 10.000 Auroras --> komplett gleiche Werte

klingt für mich ein bisschen nach Flyweight.

herbivore

P
PPK Themenstarter:in
157 Beiträge seit 2010
vor 11 Jahren

Danke für die Antworten.
Ich nutze jetzt eine Kombination aus beidem, da ich die Schiffe selbst nicht als Objekt benötige.
Meine Schiffsklasse speichert alle wichtigen Werte, die das Schiff betreffen und die Anzahl der Schiffe.
Ein Schiff erzeuge ich über eine statische Funktionen, der ich ein Enum und die Anzahl der Schiffe übergebe.