Eine Raumschiffklasse, SDL_GFX und ein unergründbarer Absturz



  • Hallo!

    Ich schreibe zurzeit an einem horizontalen 2D Shooter, in dem ich eine Klasse habe, welche raumschiff heißt. Diese Raumschiffe haben einen Konstruktor, welcher der vollständigkeit halber hier ist: http://nopaste.info/adc147f6ba.html. Darin ist aber soweit ich weiß kein Fehler enthalten, und er läd auch einwandfrei die Bilddatei und so weiter. Dann habe ich eine Prozedur, die einen schusstyp zurückliefert(diverse Informationen, wie x und y koordinate eines ev. schusses), und in dieser wird auch mittels SDL_GFX berechnet, wie das Raumschiff gerade aussehen muss, je nach Drehwinkel.
    Und bei der Anzeige gibt es einen Absturz
    Hier der betreffende Code:http://nopaste.info/c4681e4948.html
    (der Winkel ist standartmäßig 0, deshalb wird das SDL_GFX Zeug nicht aufgerufen, aber wenn es aufgerufen wird, gibt es auch einen Absturz).
    Und der gesammte Code der Prozedur, falls das wichtig ist: http://nopaste.info/522eed9245.html
    Kann mir bitte jemand sagen, wieso das abstürz, ohne den Text anzuzeigen, der angezeigt werden sollte, wenn ein Bild NULL ist?



  • Ich vermute mal, weil du zwar abfragst ob im Bild NULL steht, dann aber nicht aus der Methode springst, sondern lustig mit dem Nullpointer rumhampelst.
    Ansonsten solltest du schon mal sagen wo und mit welcher Meldung er abstürzt.


  • Mod

    wo genau bleibt er im debugger stehen und mit welcher meldung?



  • Danke für eure Antworten.

    Ich vermute mal, weil du zwar abfragst ob im Bild NULL steht, dann aber nicht aus der Methode springst, sondern lustig mit dem Nullpointer rumhampelst.
    Ansonsten solltest du schon mal sagen wo und mit welcher Meldung er abstürzt.

    Ja, ich hample, wenn ein Nullpointer entstehen sollte, lustig mit ihm rum, jedoch kann es daran nicht liegen, denn, angenommen, es gibt einen NullPointer, wird mir das ja angezeigt, das wird es aber nicht.

    Zum Debugger: wenn ich das ganze mit dem Debugger laufen lasse, bleibt es einfach beim zweiten mal des Raumschifftextes stehen, und das Programm reagiert nicht, es kommt jedoch keine Meldung.

    Er stürzt in dieser Zeile ab:

    anz_bmp(rs_x, rs_y, bildanz);
    

    Jedoch eben erst beim zweiten mal.
    Anz_bmp ist hier: http://nopaste.info/a47bbd8a9f.html. Es stürzt genau vorm Blitsurface ab(ich hab schon gerade ein wenig mit rumexperimentiert und die rechtecke verändert und so, konnte aber leider nichst erreichen).

    [edit]
    Habe mal weiter rumexperimentiert, diese 3 Zeilen reingemacht:

    char buffer[30];    
         sprintf(buffer, "X: %i Y: %i h: %i w: %i", x, y, ub_bildanz->h, ub_bildanz->w);
         anz_txt(100,100,buffer);SDL_Delay(1000);SDL_Flip(bildschirm);
    

    Ergebniss: es stürzt bei anz_txt ba. 😮 Total komisch. Denn in der Klasse kann ich ja auf die lokalen Variablen zugreifen.

    [edit²]
    So, weiter rum experimentiert, und anz_bmp in die Prozedur integiert, so dass der Code jetzt so aussieht: http://nopaste.info/b052b6099b.html. Nun stürzt der Code beim Zugriff auf Lokale Variablen ab, oder genauer, in der zeile, wo steht rechteck.x=rs_x;. Seltsamerweise stürzt das ganze auch ab, wenn ich schreibe rechteck.x=1;, und zwar an der selben stelle. 😕


Anmelden zum Antworten