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

valentin

Treue Seele

  • »valentin« ist der Autor dieses Themas

Beiträge: 212

Wohnort: Schweiz

Beruf: Schüler

  • Private Nachricht senden

1

11.07.2011, 20:12

Frage zu Klassendesign

Moin.

Ich hätte da mal wieder eine (mehr oder weniger) kleine Frage. Ich arbeite gerade (mal wieder) an nem Jump n Run bzw. an dem Editor dazu. Nun bin ich an dem Punkt angelangt, dass ich alles bauen kann wie ich will (editieren, skalieren, rotieren etc.). Jetzt hab' ich mir schon einmal n Paar Gedanken zum Gamedesign gemacht. Es soll (natürlich) Gegner geben. Zusätzlich will ich so etwas wie ein Eventsystem, also dass die Gegner auf bestimmte Ereignisse (z.B. Sensoren) reagieren. Nun hab' ich mir überlegt, wie das Klassendesign aufgebaut sein soll. Und genau hier besteht mein Problem:

Ich habe die Klasse Tiles, die für alle Images zuständig ist. (Tiles, Licht). Dann habe ich die Klasse Sprites, in der die Koordinaten und alle weiteren Settings der einzelnen Tiles gespeichert sind. Und nun weiss ich nicht, wie ich das mit der Ai und den Sensoren machen soll...

  • Einfach die Funktionen der Ai / der Sensoren der "Sprites"-Klasse hinzufügen?
  • Zwei extra Klassen (Ai / Sensoren) erstellen, obwohl die Sensoren/ die Ai ja auch "Sprites" sind?
  • Die "Sprites"-Klasse in 3 bzw. 2 Unterklassen aufteilen (Kollisionen/Ai/(Sensoren, welche ja auch mehr oder weniger Ai sind))?
Diese Möglichkeiten sind mir eingefallen. Welche die Beste ist, weiss ich nicht wirklich, jedoch bin ich auch offen für andere Vorschläge von euch...

Valentin
visit me on deviantArt!
http://v-alentin.deviantart.com/

There is no programming language, no matter how structured, that will prevent programmers from making bad programs. //Larry Flon

2

11.07.2011, 20:21

Ich verstehe dein Problem zwar nicht 100%, aber ich würde zur zweiten variante tendieren. Schließlich gibt es sowas wie vererbung, dann sind deine klassen halt auch sprites ;)

einfach funktionen hinzufügen ist nie gut, wird sehr schnell unübersichtlich und entspricht meißtens nicht der planung, die man vorher gemacht haben sollte.
zur dritten variante würde ich sagen, dass gedoppelte daten nicht gut sind, sehr fehleranfällig.

valentin

Treue Seele

  • »valentin« ist der Autor dieses Themas

Beiträge: 212

Wohnort: Schweiz

Beruf: Schüler

  • Private Nachricht senden

3

11.07.2011, 20:51

Mit "Zwei extra Klassen (Ai / Sensoren) erstellen, obwohl die Sensoren/ die Ai ja auch "Sprites" sind?" meine ich eher zwei völlig andere Klassen, also nichts mit Vererbung und so. Ich denke, dass ich's wohl etwas schlecht ausgedrückt hab', aber mit "Die "Sprites"-Klasse in 3 bzw. 2 Unterklassen aufteilen (Kollisionen/Ai/(Sensoren, welche ja auch mehr oder weniger Ai sind))?" meinte ich eigenlich das mit der Vererbung.

Allerdings ist mir gerade noch eine Idee gekommen: Ich mache einfach für jedes Sprite-Objekt sowas wie ne Ki, die das Sprite kontrolliert.

Wobei wahrscheinlich die Idee mit der Vererbung besser wäre...
visit me on deviantArt!
http://v-alentin.deviantart.com/

There is no programming language, no matter how structured, that will prevent programmers from making bad programs. //Larry Flon

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

11.07.2011, 20:53

Ich finde das alles ziemlich ... künstlich konstruiert. Ich würde mich an Deiner Stelle lieber an etwas realen Modellen orientieren, was den Entwurf der Klassen angeht und nicht auf Krampf irgendwas von irgendwas ableiten.
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]

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

5

11.07.2011, 20:57

Mit AI(Artificial intelligence?) meinst du Gegner? Was ist denn der Spieler?
In meinen Augen besitzen! die Gegner eine AI und ein Sprite. Allgemein sollte man eine "haben-Beziehung"(Element der Klasse) einer "ist-Beziehung"(public Vererbung) vorziehen, wenn es dann nicht unlögisch wird.
Ein gutes Beispiel für eine "ist-Beziehung", ist Kraftfahrzeug und PKW. Denn ein PKW kann kein Kraftfahrzeug haben (oder nur in sehr speziellen Fällen), ist aber eins. Ein Gegner kann aber ein Sprite und eine künstliche Intelligenz besitzen.

edit: Dass ein Gegner nicht zwangsläufig ein Sprite besitzen muss wird einem bei der Entwicklung eines Servers für Multiplayergames klar. Dort muss nicht gezeichnet werden, also wird kein Image benötigt das von einem Sprite entsprechend Platziert, Rotiert und Skaliert wird. Nun kann der Gegner garkein Sprite mehr sein ;)
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

valentin

Treue Seele

  • »valentin« ist der Autor dieses Themas

Beiträge: 212

Wohnort: Schweiz

Beruf: Schüler

  • Private Nachricht senden

6

11.07.2011, 21:18

Joa, mit Ai meine ich Gegner. Und der Spieler ist keine Ai, der wird ja von aussen gesteuert.

Das was du sagst/schreibst klingt eigentlich logisch. Jedoch könnte man auch sagen, dass der Gegner ein Sprite ist, welches von der Ai gesteuert wird. Das kommt wohl ganz auf die Betrachtungsweise an ;). Logischer bleibt allerdingst trotzdem deine Aussage :D.

Im Moment favorisiere ich das System von völlig unabhängigen Klassen, welche dann einfach mit der "Sprites"-Klasse synchronisiert werden. Wahrscheinlich nicht die genialste Methode, aber sie wird wohl funktionieren ;).
visit me on deviantArt!
http://v-alentin.deviantart.com/

There is no programming language, no matter how structured, that will prevent programmers from making bad programs. //Larry Flon

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

7

11.07.2011, 21:39

Wieso muss es immer "Genial" sein, wenn einfach genau so gut oder besser funktioniert?^^
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

valentin

Treue Seele

  • »valentin« ist der Autor dieses Themas

Beiträge: 212

Wohnort: Schweiz

Beruf: Schüler

  • Private Nachricht senden

8

11.07.2011, 21:42

"Genial" ist vielleicht der falsche Ausdruck... Ich wollte damit nur sagen, dass ich denke, dass es noch bessere Möglichkeiten als diese gibt, sei es wegen der Sicherheit, das Geschwindigkeit, der Komplexität etc...
visit me on deviantArt!
http://v-alentin.deviantart.com/

There is no programming language, no matter how structured, that will prevent programmers from making bad programs. //Larry Flon

Werbeanzeige