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

1

04.01.2012, 22:34

Kapitel 12 - Asteroid soll Position vom Spieler kennen

Huhu Leute, das Spiel aus dem letzten Kapitel soll so verändert werden, dass sich die Asteroiden auf den Spieler zubewegen. Allerdings braucht der Asteroid dafür die Position, die die Spielerinstanz hat. Diese Instanz ist aber nur CGame bekannt, da ise dort erzeugt wird.
Jetzt wüsste ich gerne, wie Asteroid.cpp an die Instanz vom Pkayer aus game.cpp kommt.

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

2

04.01.2012, 23:10

Welchen Sinn macht die Aufgabe, wenn du dir eine Lösung geben lässt?!

Es gibt so viele Möglichkeiten, wie du dein Problem lösen kannst. Davon musst du dir eben eine aussuchen. Poste diese hier und wir können dich weiter beraten. Aber eine solche Frage ohne jegliche Eigeninitiative ist ein wenig dreist.

3

05.01.2012, 11:38

Ok, so wie ich es dargestellt habe, möchte man tatsächlich meinen, ich hätte eine Idee und wollte die Lösung von euch. Dem ist natürlich nicht so, allerdings befand ich mich wohl in der irrigen Annahme, das Problem sei mit einem einfachen Trick gelöst, aber es gibt glücklicherweise wohl zu viele Möglichkeiten dafür.

Nun gut, der Ansatz wäre gewesen, in der Player.hpp zwei "GetPosition"-Funktionen einzufügen, die dann die x/y-Position zurückgeben. Asteroid.hpp sollte einen weiteren Member bekommen, der ein Zeiger auf die Spielerinstanz Player ist (CPlayer* Player). Außerdem wird in Asteroid.hpp die Player.hpp included. Jetzt könnte man in der Asteroid.cpp über Player->GetPosition auf die Koordinaten zugriefen, allerdings zeigt der Zeiger wohl auf irgendetwas, nur nicht die Player-Speicherstelle, denn das Spiel stürzt auf diese Weise direkt zu Beginn ab.
Irgendwo in dieser Überlegung muss also ein Fehler liegen, und ich hoffe, diesmal ist es nicht dreist, nach diesem zu fragen. Über Antworten würde ich mich außerordentlich freuen.

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

4

05.01.2012, 11:53

Gut, dein Ansatz ist schon der Richtige. Ich vermut mal, dass du einen Fehler bei der Verwendung dieses Zeigers machst. Poste bitte mal den Code, in dem du dem Zeiger die Adresse des Spielers zuweist und die Codestücke, in denen du den Zeiger benutzt.

5

05.01.2012, 16:11

Ok, hier der Link, ich hoffe, das ist alles, was ihr braucht.

http://ideone.com/dnSrZ

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

6

05.01.2012, 16:24

Es fehlt noch, was du mit CAsteroid::Player machst. Wo weist du ihm eine Adresse zu, auf die er zeigen soll?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

05.01.2012, 16:47

Vermutlich liegt auch genau da das Problem ;) Es wird nie zugewiesen.
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]

8

05.01.2012, 17:42

Vielleicht könntet ihr mir da weiterhelfen? Das ist nämlich eines der Probleme, ich weis nicht, was ich hinschreiben soll, damit er auf die Player-Instanz aus CGame zeigt.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

9

05.01.2012, 17:50

Du musst im Konstruktor des Asteroiden einen Zeiger auf den Spieler übergeben (möglicherweise wäre hier sogar eine Referenz besser; je nachdem ob du den zugewiesenen Spieler noch ändern möchtest oder nicht).

10

05.01.2012, 20:50

---
Only God can judge me.

Werbeanzeige