Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

11

05.10.2014, 16:26

Es handelt sich um eine Abwandlung der Tower Defense Games. In meinem Spiel wird es zwei Hauptarten von Gebäuden geben:
  1. Die Tower
    Die werden vom User platziert und werden dann automatisch auf die kommenden Gegner schiessen. Der User kann die Tower anklicken und dann ihre Stufe aufwerten( In einem kleinen Menü)
  2. Gebäude in der Basis
    In der Basis kann der Spieler einige Gebäude platzieren, dazu gehören, Forschungsgebäude, Rochstoff erzeugende Gebäude .... . Diese Gebäude kann der Spieler auch anklicken und wieder über ein kleines Menü mit ihnen interagieren. Je nach Gebäude natürlich komplett anders, zB forschen oder aufwerten oder andere Dinge.

Ich dachte mir ich schreibe eine Klasse, die ich jetzt einfach mal GebäudeManager nenne. Der GebäudeManager enthält zwei Vektoren (einmal Tower und einmal Basis Gebäude). Der GebäudeManager verwaltet also die ganzen Gebäude. Er ruft ihre Update Methoden auf, kümmert sich um das anklick-Verhalten und zeichnet ausserdem die Gebäude (nochmal zwei Vektoren, welche die "grafischen Gebäude" enthalten).

So in etwas, mache ich das im Regelfall, also dass eine Klasse für ein Gebäude gibt, welche alle Methoden und Variablen in sich vereint (also gegenteilig zu TGGC's Version) und eine zweite, für die grafische komponente.

Kann man das so als "richtig" absegnen, oder sollte ich es lieber anders machen, zB Klasse pro Funktion (TGGC)?

12

05.10.2014, 16:51

Nach deinem letzten Thread würde ich das folgendermaßen aufbauen: (ich kann nicht genau rauslesen, ob du das schon so dachtest oder nicht)

Quellcode

1
2
3
4
5
6
7
8
9
10
  Zeichenobjekt
        |
        |
        V
    Gebäude
      /    \
    /       \
   V         V
Basis-     Tower
Gebäude

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

13

05.10.2014, 18:25

Probier doch vielleicht beides mal aus. Wie schon gesagt führen viele Wege nach Rom. Wir können dir jetzt sagen welche Variante wir persönlich bevorzugen. Aber am Ende geht es ja darum dass du die für dich beste Methode findest. Am besten halt ausprobieren.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

14

05.10.2014, 19:21

So in etwas, mache ich das im Regelfall, also dass eine Klasse für ein Gebäude gibt, welche alle Methoden und Variablen in sich vereint (...) Kann man das so als "richtig" absegnen
Eher nicht, nein.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

15

05.10.2014, 19:34

Sondern?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

16

05.10.2014, 20:17

Statt eine eierlegende Wollmilchsau zu bauen, solltest Du eben eine Basisklasse verwenden, die NUR die Gemeinsamkeiten ALLER Klassen erfasst *oder* einen Komponenten-basierten Ansatz fahren (z.B. den von TGGC, gibt aber auch andere).
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

17

05.10.2014, 20:45

Macht es wirklich einen so grossen Unterschied, ob ich jetzt für Tower und BasisGebäude jeweils eine Basisklasse mache, oder für beide zusammen eine?

EDIT: Ausserdem gibt es ja eine Klasse, die sich nur mit dem grafischen Gedöns und eine die sich nur mit logischen auseinandersetzt. So habe ich ja in gewisser Weise die beiden Komponenten aufgeteilt.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

18

05.10.2014, 22:41

Ja, es gibt da einen so großen Unterschied. Und nein, du hast es nicht wirklich in Komponenten aufgeteilt. Was Du da treibst ist gegen jede bekannte Art von gutem Design. Alles in einen großen Monolithen zu werfen ist weder vernünftig, noch sinnvoll. Dass das Rendering dabei ausgelagert wurde, macht die Sache jetzt nicht unbedingt besser. Jede Klasse sollte *ihre* Aufgabe repräsentieren und nicht alle möglichen. Daher würde man nie eine Fahrrad-Klasse entwerfen, die ein Auto, Flugzeug, Motorrad, LKW und Hovercraft zugleich ist. Es macht keinen Sinn, wird völlig überladen und unübersichtlich.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

19

05.10.2014, 22:58

Das war niemals meine Absicht. Ich will doch eine abstrakte Klasse "Tower" machen, welche die kleinsten gemeinsamen Nenner besitzt und von dieser werden die anderen Türme abgeleitet, so wie hier mehrfach vorgeschlagen. Das gleiche dann für die Gebäude, da die Gebäude und Tower bei mir keinen Zusammenhang haben. Damit meine ich auch aus programmiertechnischer Sicht, die Gebäude und Tower teilen sich keinen Wert und keine Methoden.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

20

05.10.2014, 23:02

Dann hast Du Dich da oben ungünstig ausgedrückt, sorry. ;) Die größte Schnittmenge aller Spezialklassen sollte die Basisklasse darstellen, ja. Ich hatte das so verstanden, dass Du es üblicherweise so machst, dass eine Klasse alles das kann, was alle Gebäude zusammen können. Missverständnis.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige