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

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

1

01.12.2005, 18:37

Objekt Orientiertes Game Design

Hi,

ich programmier gerade einen PacMan Clone in 3D. Ich hab die Klassen jetzt aber erst mal in einem WordDoc zusammen gefasst.
Das Problem ist, das mir auffält das ich fast jede Klasse als Singleton deklarieren kann da ich sowiso nur eine Instanz brauch. Hier mal meine

Globalen Klassen:
[list]
CPacmanObject (abstrakt)
sVertexStruct
[/list]
Globale Klassen die Singleltones sind:
[list]
[edit]
CGameStateManager : public CPacmanObject
[/edit]
CPacman3D : public CPacmanObject
CINIReader
[/list]
Klassen für den GameState Menü:
[list]
CMenu : public CPacmanObject
CHighscore : public CPacmanObject
COptions : public CPacmanObject (abstract)
[/list]
CHighscore könnte eigentlich auch Singleton sein, da ich da auch nur eine brauche.

Hab ich irgendwas falsch verstanden was die Singletons angeht oder das Objekt Orientierte Porgrammieren??

Wenn jemand sich das Doc ankucken will:
Volle Kanne Hoschie - Pacman3D
Account: Gast
kein Passwort
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

leo

Frischling

  • Private Nachricht senden

2

01.12.2005, 19:40

Wofür leitest du denn alle Objekte von CPacmanObject ab :o?

Für mich machen Singletons eigentlich nur Sinn, wenn die Klasse von
überall aus erreichbar sein soll - das ist hier aber überhaupt nicht der Fall.

Es reicht doch wenn einmal im gamestate Manager die Instanz des
aktuellen gamestates erzeugt wird, da werden keine Singletons gebraucht.

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

3

02.12.2005, 10:07

Zitat von »"leo"«

Wofür leitest du denn alle Objekte von CPacmanObject ab :o?

Das alle Klassen die bei einem Restore neugeladen werden müssen eine LoadFunktion implementiert haben

Zitat von »"leo"«

Für mich machen Singletons eigentlich nur Sinn, wenn die Klasse von
überall aus erreichbar sein soll - das ist hier aber überhaupt nicht der Fall.

Mir ist gerade aufgefallen das ich den GameStateManager nicht von überall brauche, aber was ist mit der Highscore Klasse?

Zitat von »"leo"«

Es reicht doch wenn einmal im gamestate Manager die Instanz des aktuellen gamestates erzeugt wird, da werden keine Singletons gebraucht.

Wenn ich vom Gamestate Menü (CMenu) als Singleton machen würde, wäre sie ja in der Liste unter Singletons aufgeführt.

Also mach ich nur die Klassen die ich von überall erreichen muss als Singletons. Die Klassen die ich nur einmal brauch mach ich dann static oder einfach nur eine Instanz und gut ist's?
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

Anonymous

unregistriert

4

02.12.2005, 13:50

bassdscho
Also ich finde Du solltest alles nochmal überdenken. Alles von CPacmanObject (Ich hasse das C, das brennt in den Augen!) abzuleiten nur wegen "restore" ist nicht das wahre.

www.germangamedev.de << Tutorials << FunnyBreak.

Außerdem: Was hat ein Manager mit einem PacmanObjekt zu tun? Ist der Manager eine Pille, Ein Gegner oder der Pacman selbst? Nö.

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

5

02.12.2005, 14:10

Dein Tut hab ich mir schon angekuckt, hat mit leider net weiter geholfen. was stört dich an dem C ?
Ich find das ableiten besser wie die GameState Factory von dir (Meine Meinung).

Zitat von »"Patrick"«

Außerdem: Was hat ein Manager mit einem PacmanObjekt zu tun? Ist der Manager eine Pille, Ein Gegner oder der Pacman selbst? Nö.

Stimmt. Dann nenn ich die Klasse CRestoreObject.
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

6

02.12.2005, 14:10

@nix da
muss dir zustimmen. Ich schreib auch grad nen Pacman 3D (scheinen viele zu machen). Und ich hatte am Anfang auch son blödes Objekt, von dem alles erbt. ist aber überflüssig denn wenn du nich gerade alles in ner liste speicherst musst du die load methode sowieso per hand aufrufen und dann musst du se auch nich vererben....

ansonsten was die gamestates angeht kann ich das design aus funny break nur empfehlen, ich finds klasse.

aber gegen das 'C' kann man meiner meinung nach nix sagen
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

7

02.12.2005, 14:17

@lemming
die vererbung erleichtet keine Arbeit (das soll sie auch nicht). Sie beugt nur fehlern vor. Der Kompilier schmeißt ne Fehlermeldung wenn keine Load Funktion implementiert wurde.
Ich hatte mir auch überlegt die Mauern transparent zu machen, hab das Problem aber mit einer individuellen Kameraführung und kleineren Mauern gelößt ;p

Pacman ist wahrscheinlich so beliebt, weil man keine großen Anforderungen im Modell Design hat und jedem das Spielprinzip bekannt ist.
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

Anonymous

unregistriert

8

02.12.2005, 14:38

Lemming
Wegen dem 'C': Das C stammt noch aus den Urzeiten von C++ wo es noch keine namespaces gab. C als Präfix ist genau so schwachsinnig in C++ wie die Ungarische Notation --> Überflüssig und sieht ugly aus.

bassdscho
Das nennt man das Factorypattern und das wurd genau für sowas entwickelt. Aber muss jeder selber wissen.

Ob das was Du da fabrizierst wirklich Fehlern vorbeugt wage ich zu bezweifeln. Für mich sieht das nach extremen Designfehlern aus.

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

9

02.12.2005, 14:47

@ nix da
ich würd sagen das ist einfach geschmackssache.
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

10

02.12.2005, 14:53

Was haben namespaces mit der ungarischen notation zu tun?? Das muss wohl an mir vorbei gegangen sein.
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

Werbeanzeige