Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[erledigt] Klassendesign für Browsergame
PPK
myCSharp.de - Member



Dabei seit:
Beiträge: 157

Themenstarter:

[erledigt] Klassendesign für Browsergame

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von PPK am .
private Nachricht | Beiträge des Benutzers
Coooder
myCSharp.de - Member



Dabei seit:
Beiträge: 180

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
PPK
myCSharp.de - Member



Dabei seit:
Beiträge: 157

Themenstarter:

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von PPK am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.751

beantworten | zitieren | melden

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).
private Nachricht | Beiträge des Benutzers
Coooder
myCSharp.de - Member



Dabei seit:
Beiträge: 180

beantworten | zitieren | melden

die idee mit den enums gefällt mir! Das muss ich mir merken für zukünftige sachen :)
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo PPK,
Zitat
Bsp. 10.000 Auroras --> komplett gleiche Werte
klingt für mich ein bisschen nach Flyweight.

herbivore
private Nachricht | Beiträge des Benutzers
PPK
myCSharp.de - Member



Dabei seit:
Beiträge: 157

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers