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

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

1

29.05.2011, 18:47

Rect - initialisierungsproblem

Halli hallo,
Ich habe nun das Buch von Heiko Kalista (C++ für Spieleprogrammierer) durchgelesen und wollte mich gleich daran machen, das kleine Spiel zum Ende hin zu erweitern...
Dabei wollte ich erstmal, dass das Raumschiff zerstört wird, wenn es gegen einen Asteroiden kommt... Und dafür brauche ich ja die Rects...

Meine Frage: WIE initialisiere ich die Rects für den Spieler??????? Ich komme echt überhaupt nicht weiter, weil ich gar keinen Ansatzpunkt habe! Und nochwas: Wenn ich dass durch die IF Bedingung prüfe, ob es eine Collision zwischen Spieler und Asteroid gab, dann wird ja aig. der Asteroid so gelöscht: ItAsteroid->SetAlive (false); ABER wie ist das bei dem Spieler? Den kann ich ja nicht so löschen, weil der keinen Iterator hat!

Ich hoffe ihr könnt mir helfen... Ich blicke durch dieses Gewirr aus Vererbung, Zeigern usw. gar nicht mehr durch :(

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

29.05.2011, 18:49

Dann würde ich mir diese Abschnitte nochmal genau durchlesen und verstehen lernen bevor du an dem Spiel weiter machst.
Mit was eig., SDL, SFML?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

3

29.05.2011, 18:52

Mit SDL... Ja, aber genau das ist mein Problem: Ich habe mich bereits hingesetzt und bin alles mit Stift und Papier nochmal genau durchgegangen... Und ich verstehe es schon, nur hab ich halt keinen Ansatzpunkt für die initialisierung eines Rect... Danke übrigens für die schnelle Antwort ;)

Phalax

Frischling

Beiträge: 82

Beruf: Student Media Systems

  • Private Nachricht senden

4

29.05.2011, 18:57

Du Deklarierst ein SDL_Rect in deiner Spieler-Klasse und updatest dieses in der Update-Methode des Spielers? Die Initialisierung eines Rects ist doch z.B. in der Asteroid-Klasse in der Init-Methode zu finden. Den Spieler brauchst du nicht löschen. Du gibst ihm z.B. einfach einen boolean ob er getroffen wurde und zeichnest den Spieler nur, wenn getroffen == false. Für die Kollision gehst du einfach in einer Schleife alle Schüsse durch und prüfst auf eine Kollision mit dem Spieler.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Phalax« (29.05.2011, 19:08)


Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

5

29.05.2011, 19:01

Ja okay... und wieso wird das beim Spieler in der Update Funktion gemacht und nicht wie beim Asteroiden in der Init?? Und wie Update ich die Rects in der Spieler klasse? Ich muss die doch erstmal in der Spieler.Init initialisieren oder nicht???

Phalax

Frischling

Beiträge: 82

Beruf: Student Media Systems

  • Private Nachricht senden

6

29.05.2011, 19:05

Das rect wird natürlich auch in der Init-Methode des Spielers initialisiert, nur muss es ja nach jeder Bewegung des Spielers aktualisiert werden. Sonst würde das Rect ja gar nicht auf dem Spielersprite sein. Guck z.B. mal in Asteroid->Update: Da wird ja m_fYPos vergrößert, damit sich der Asteroid nach unten bewegt. Damit das Rect für eine Kollisionserkennung von nutzen ist muss es dann aktualisiert weden, also seine Position auf die Position des Asteroiden gesetzt werden. Das passiert ja direkt in der nächsten Zeile von Update().

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

7

29.05.2011, 19:16

okay. Danke für den Tipp!!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

29.05.2011, 20:01

Eventuell wäre dieser Link auch noch interessant.
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]

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

9

29.05.2011, 20:19

ja, danke... Soo ich habe jetzt das Rect erfolgreich initialisiert... Nur leider meckert jetzt der Compiler, dass er keine 0 Argumente akzeptiert (also da, wo ich die Init () aufrufe)

Aber wenn ich als Parameter: CSprite *pSpritePlayer, float m_fXPos, float m_fYPos dann ist ihm das auch nicht recht und er gibt an: nichtdeklarierter Bezeichner. Was soll ich denn sonst als Parameter übergeben... Ich meine es geht ja auch ohne...

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

29.05.2011, 20:33

Vielleicht solltest Du Dich noch mal mit den Kapiteln Syntax, Variablen und Parameter befassen. Vielleicht gibt das den nötigen Lichtblick :)
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