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

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

21

25.10.2015, 18:47

Ich finde die Strukturierung /das Design nicht so berauschend außer dein Spiel heißt "Asteroid" ^^

Auf was beziehst du das? Auf den Namen des Spiels oder auf das Codedesign?

22

25.10.2015, 18:48

Das "std::make_..." steht unter den #include`s, also wird das doch nicht jedes mal erstellt

Nee, in dem Fall nicht! Ich dachte du erstellst den in irgendeiner Methode.

Gibt es in Playstate ebenfalls eine Player Instanz?
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

23

25.10.2015, 18:50

Gibt es in Playstate ebenfalls eine Player Instanz?

Ja. Auf die habe ich in einem Beitrag schon geschrieben, dass ich auf diese zugegriffen habe, aber es gab keine Änderung.

24

25.10.2015, 18:56

Hab ich mir schon fast gedacht.

Du solltest dringend an deinem Design arbeiten!

Ja. Auf die habe ich in einem Beitrag schon geschrieben, dass ich auf diese zugegriffen habe, aber es gab keine Änderung.


Kannst du das Projekt mal irgendwo hochladen, sonst geht das wieder Seitenweise soweiter ;)
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

25

25.10.2015, 19:08

Hier sollte es gehen.

26

25.10.2015, 20:28

Also...

In PlayState wird der Player nicht erstellt (Ist der in Asteroid.cpp gelandet wegen debuggen?), husch husch zurück damit in PlayState!

Dann empfehle ich dir, den Konstruktor einer Klasse zu nutzen und auf Init Methoden zu verzichten.
Da könntest du dann nämlich dem Asteroiden mitgeben um welchen x Wert er spawnen soll.

C-/C++-Quelltext

1
Asteroid(int playerPositionX)


Bei deinem Aktuellem Design musst du den X Wert des Players entweder beim erstellen des Asteroiden speichern (in der Asteroiden Klasse) was aus meiner Sicht blödsinn ist (bei anderem/besserem Design).
Oder der InitMethode und dann der loadAsteroid den X Wert des Players mitgeben.

C-/C++-Quelltext

1
2
void Init(Game &game, int playerPositionX);
void loadAsteroid(Game &game, int playerPositionX);


Noch paar tips zu Design.
  • Konstruktor nutzen statt Init-Methode
  • Klassenmember private halten (Datenkapselung)
  • ChangeState Methode dringend überarbeiten, du erstellts immer einen ganz neuen State anstatt wie die Methode vermuten lassen würde ihn zu wechseln.
  • gibt noch andere Sachen aber bin zu Faul das jetzt alles nieder zu schreiben
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

27

25.10.2015, 20:51

Danke für die ausführliche Antwort. Ich werde morgen mal genauer hineinschauen. Wenn es für dich kein Problem ist, kannst du mir noch ein paar Tipps zum Codedesign geben?

28

25.10.2015, 21:43

Wenn es für dich kein Problem ist, kannst du mir noch ein paar Tipps zum Codedesign geben?

Na wenn du schon so nett Fragst, sicherlich.
  • Du hast zwar Konstanten wie z.B. const float m_fMaxX = 935.f; nutzt sie aber gar nicht (macht den Code besser lesbar)
  • Stichwort Const Correctness
  • Wenn du in Klasse A, Klasse B hast und in Klasse B, Klasse C hast ist es in den meisten Fällen wohl ein Zeichen für schlechts Design wenn Klasse C wissen muss das es Klasse A gibt (gilt auch für Klasse B, die brauch auch nichts wissen über A).

Gibt bestimmt noch paar Sachen die man beachten könnte, aber mehr ist mir jetzt nicht aufgefallen bei durchschauen von deinem Code.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

29

26.10.2015, 16:13

Veieln Dank für die Antworten :thumbsup:. Nun klappt alles, so wie es sollte. Mein derzeitiges Codedesign (muss ich persönlich zugeben) ist der reinste Dreck :fie:. Ich werde die Tipps in zukünftigen Projekten mal anwenden.
Ich wollte sowieso immer schoneinmal eine "Code-Designe-Review", aber wollte extra deshalb kein neues Thema erstellen :)

Werbeanzeige