JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=e8a262c26886a7f80d62fce81d958c71Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Buch Kapitel 25 (JLI_ASTEROIDS)

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Exigo
Mini JLI'ler



Anmeldedatum: 02.05.2008
Beiträge: 5

Medaillen: Keine

BeitragVerfasst am: 02.05.2008, 14:59    Titel: Buch Kapitel 25 (JLI_ASTEROIDS) Antworten mit Zitat

Hi erstmal Smile

Hab mir vor kurzem das Buch (DirectX 9 und Visual C++) aus unserer Schulbibliothek ausgeborgt.
Mittlerweile bin ich beim Kapitel 25 angelangt und hab da so meine probleme mit dem Beispiel.

Das Spiel startet ganz normal raumschiff + 2 Asteroiden werden dargstellt
und die Asteroiden bewegen sich auch schön. Spieler bewegung funktioniert auch (beschleunigen/verlansamen/richtungsändern)

Nur wenn man jetzt einen Schuss abfeuert und dieser aus dem Spielfeld geht oder einen Asteroiden trifft oder man selbst von einem Asteroiden getroffen wird hängt sich das Spiel mit folgener Fehlermedlung auf:

Code:
Debug Assertion Failed!
.....
Expression: list iterator not incrementable


Debuggen lässt sich das ganze gar nicht richtig da mit dem Spiel auch der Compiler hängt.

Ich verwende Visual Studio 2008 unter XP

Der Code ist 1:1 von der Beispiel CD

Ich hoff ihr könnt mir helfen

mfg Exigo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 02.05.2008, 15:26    Titel: Antworten mit Zitat

sinnvoll debuggen kann man eigentlich am besten im windowed mode, da sonst beim taskswitch das ding hängt wegen device lost usw. Also in den Fenstermodus wechseln, und dann debuggen. Sonst setzt du vorher break points. Wichtig ist auf jeden fall, dass du die Zeile und den Code drumherum, wos kracht, kennst. Das kannst du ja dann mal posten.

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Exigo
Mini JLI'ler



Anmeldedatum: 02.05.2008
Beiträge: 5

Medaillen: Keine

BeitragVerfasst am: 02.05.2008, 21:37    Titel: Antworten mit Zitat

So danke erstmal für deinen Tipp! im Fenstermodus geht nun das debuggen endlich Wink
nur bringt mich das leider nicht weiter den immer wenn ich mich der Stelle nähere (mit einzelschritten) kommt folgender fehler:

"Für die aktuelle Position ist kein Quellcode verfügbar."

sehr verwirrend Oo
Was mir allerdings aufgefallen ist, es gibt 4 Fälle wo die Anwendung mit dem selben fehler crashed:

-Raumschiff kolidiert mit Asteroiden
-Schuss trifft Asteroiden
-Schuss verlässt das Spielfeld
-man beendet mit ESC

immer der fehler
"Expression: list iterator not incrementable"

Den Quellcode zu posten würde den Beitrag sprengen also wenn einer ne vermutung hat bzw. das problem kennt (Ich hoffe doch das dieses Beispiel programm schon mehrere ausprobiert haben auch wenn es schon ein bisschen alt ist) dann sage mir dieser bitte welcher Codeteiletwas bringt.

Muss dazu sagen das ich in der DirektX programmierung noch relativ unbewandert bin.

würde mich sehr freuen wenn jemand nen Rat weiß Smile

mfg Exigo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 02.05.2008, 22:29    Titel: Antworten mit Zitat

Ich vermute, es hat damit zu tun, dass VC2008 Listen anderes behandelt. Ich habe leider (noch) keine VC2008 da, so dass ich den Fehler nicht nachvollziehen kann.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Exigo
Mini JLI'ler



Anmeldedatum: 02.05.2008
Beiträge: 5

Medaillen: Keine

BeitragVerfasst am: 03.05.2008, 09:55    Titel: Geschafft Antworten mit Zitat

So danke nochmal an alle.
Alls du gesagt hast das die Listen anders durchgegangen werden
hab ich da mal genau alles unter die Lupe genommen.
Und bin auch fündig geworden Smile

Damit andere die das problem haben auch geholfen ist:

Der Fehler lag beim durchgehen der Listen in denen etwas gelöscht wird.
als Beispiel:

Code:

for(it=m_ExplosionList.begin();it!=m_ExplosionList.end();it++)
{
    (*it)->Move();
    (*it)->Animate();

    int x = (*it)->GetPosition().x;
    int y = (*it)->GetPosition().y;

    if((*it)->PlayedAnimation())
    {
        delete *it;
        it = m_ExplosionList.erase(it);           
    } 
}


Ka Ahnung wieso VS 2008 es so nicht mag aber anscheinend kann der Fall auftreten das "it" erhöht wird obwohl schon das Listenende erreicht wurde.
Darum einfach ein bisschen umbasteln und darauf achten das dies nicht mehr passieren kann:

Code:
   
for(it=m_ExplosionList.begin();it!=m_ExplosionList.end();)
{
    (*it)->Move();
    (*it)->Animate();

    int x = (*it)->GetPosition().x;
    int y = (*it)->GetPosition().y;

    if((*it)->PlayedAnimation())
    {
        delete *it;
        it = m_ExplosionList.erase(it);           
    } 
    if(it != m_ExplosionList.end()) { it++; }
}


Also "it" aus wirklich nur dann erhöhen wenn Listenende nicht erreicht ist.
Das müsst ihr dann noch bei allen auftretenden Listen machen.

Danke nochmal für die Hilfe!

mfg Exigo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 03.05.2008, 15:43    Titel: Antworten mit Zitat

Das Problem mit dem löschen stand btw. auch schon in der FAQ Wink
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Exigo
Mini JLI'ler



Anmeldedatum: 02.05.2008
Beiträge: 5

Medaillen: Keine

BeitragVerfasst am: 03.05.2008, 17:20    Titel: Antworten mit Zitat

Jetzt wo dus sagst Rolling Eyes

Naja bin ja nochmal selber draufgekommen^^

Danke trotzdem
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 03.05.2008, 18:11    Titel: Antworten mit Zitat

Exigo hat Folgendes geschrieben:

Naja bin ja nochmal selber draufgekommen^^

Was das Wichtigste beim ganzen Lernprozess ist
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum