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

11

23.03.2009, 17:49

Wie wärs mit RectPlayer.w/Framezahl (in diesem fall 10)

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

12

23.03.2009, 18:05

Ich bin gerade dabei das Kpaitel nochmal Schritt für Schriftt durchen zugehen. Dann schau ich mal weiter^^

Toxic

Frischling

Beiträge: 53

Wohnort: Niedersachsen

Beruf: Ingenieur

  • Private Nachricht senden

13

23.03.2009, 19:48

Zitat

Wie wärs mit RectPlayer.w/Framezahl (in diesem fall 10)

Ja das wäre eine Möglichkeit, ich glaube ich mache das erstmal so :D

Aber die Fehlerursache liegt ja darin das die Breite der gesamten Framedarstellung des Spielerraumschiffes verwendet wird.
Ich bin da auch noch auf etwas gestossen, ich habe festgestellt das der erste Asteroid immer von selber verschwindet ohne das wirklich eine Kollision mit Raumschiff oder Schuss stattfindet.

Das ganze ist darauf zurückzuführen das der erste Asteroid die Abmessungen 128 mal 640 hat, klar das der überall gegen kommt. Die nachfolgenden Asteroiden haben dann ganz normal 64x64.

Wer es nachprüfen möchte, die nachfolgenden Zeilen direkt nach der Kollionsabfrage hinter SetAlive reinkopieren und den Fullscreen auf false setzen damit man die Konsole sehen kann.

C-/C++-Quelltext

1
2
cout << "RectA.h: " << RectAsteroid.h << endl; 
cout << "RectA.w: " << RectAsteroid.w << endl; 


Wäre cool wenn jemand die Ursache findet, ich muss jetzt erst mal zur Arbeit. :D
Wenn Architekten ihre Häuser so bauen würden wie Programmierer ihre Programme, könnte ein einziger Specht ganze Städte zerstören !

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

14

23.03.2009, 22:40

Diesen Bug habe ich jetzt bereits zwei mal behoben, vergesse aber immer wieder, woran das lag ^^
Realisier einfach mal die Kollision zwischen Asteroiden und Spieler, dann behebt sich der Fehler von alleine, weil dir dann auffällt, was falsch ist. So war es jedenfalls bei mir jetzt zwei mal :)

Toxic

Frischling

Beiträge: 53

Wohnort: Niedersachsen

Beruf: Ingenieur

  • Private Nachricht senden

15

23.03.2009, 22:46

Das ist gut zu hören das es anderen auch so ergangen ist :D
Die Kollision zwischen Spieler und Asteroiden läuft schon, daran habe ich übrigens auch festgestellt das es diesen Bug überhaupt gibt.
Das Raumschiff ist auf einmal ohne Kollision einfach so in die mitte gesprungen, nanu :shock: :?:

Ich werde mich da heute nicht mehr ransetzen, wird sonst wieder so spät...
Aber wenn ich weiss woran es liegt poste ich es hier, so lange natürlich nicht jemand schneller ist als ich :D

EDIT: Bevor ich im Bett liege und nicht schlafen kann deswegen, habe ich es mir lieber noch mal eben angeguckt ;)
Ich habe den Bug gefunden, in der Datei sprite.hpp wird in der Funktion GetRect() der Wert mRect als Rückgabewert verwendet.
So muss es geändert werden:

C-/C++-Quelltext

1
SDL_Rect GetRect () {return m_FrameRect;}
Wenn Architekten ihre Häuser so bauen würden wie Programmierer ihre Programme, könnte ein einziger Specht ganze Städte zerstören !

physX

Treue Seele

Beiträge: 119

Wohnort: Dresden

  • Private Nachricht senden

16

28.03.2009, 14:24

Danke für die BugSuche... hattte das gleiche Problem und hab mich totgesucht. Allerdings versteh ich jetzt immer noch nicht weshalb es bei den Asteroidsprites funktioniert hat, bei den Playersprites aber nicht. (???) Das hätte doch bei beiden und insbesondere bereits bei den Shotssprites Probleme machen müssen... oder hab ich da jetzt einen Denkfehler drin (offensichtlich, sonst haette es ja nicht schon funktioniert ;) )

gruss

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

17

28.03.2009, 15:19

Was mir da gerade einfällt..

Bei mir lag es damals daran, dass das Player-Rect nicht aktualisiert wird. Im Originalcode ist das nicht drin, und so fehlen die zwei Zeilen:

C-/C++-Quelltext

1
2
    m_Rect.y = static_cast<int>(m_fYPos);
    m_Rect.x = static_cast<int>(m_fXPos);


Vielleicht hilft das einigen, die das Problem auch haben.

Werbeanzeige