Laufzeitfehler, denn ich nicht finde



  • Hallo zusammen

    Ich habe bei meinem Spiel einen Laufzeitfehler programmiert, denn ich nun allerdings nicht finde. Ich habe bereits den Debugger verwendet, aber ich
    fand den Fehler trotzdem nciht.

    Könnt ihr mir weiterhelfen?

    Hier ist ein Teil meines Spiels indem denke ich ist der Fehler:

    // Optionen.h
    //
    
    #ifndef _OPTIONEN_H__
    #define _OPTIONEN_H__
    
    // Include-Dateien
    //
    
    #include "Button.h"
    
    // Klasse
    //
    class COptionen
    {
    public:
    
    	// Memberfunktionen
    	//
    	// Konstruktor
    	//
    	COptionen ();
    
    	void Init ();
    	void Quit ();
    	void Reset ();
    	void Update ();
    	void Render ();
    
    private:
    
    	CButton * m_pButton;
    	CButton * m_pButton2;
    	float m_fXPos;
    	float m_fYPos;
    	float m_fXPosR;
    	float m_fYPosR;
    };
    
    #endif
    
    // Optionen.cpp
    //
    
    // Include-Dateien
    //
    #include "Optionen.h"
    
    COptionen::COptionen()
    {
    	m_pButton = NULL;
    	m_pButton2 = NULL;
    }
    
    void COptionen::Init()
    {
    	// Button (Sprite) erstellen
    	//
    	m_pButton = new CButton;
    	m_pButton2 = new CButton;
    
    	// Bild (Taste1) laden und ColorKey angeben
    	//
    	m_pButton->Load ("Taste-Links.bmp");
    	m_pButton->SetColorKey (255, 0, 255);
    
    	m_pButton->Load ("Taste-Rechts.bmp");
    	m_pButton2->SetColorKey (255, 0, 255);
    }
    
    void COptionen::Quit()
    {
    	// Ist der Button bereits gelöscht, wenn noch nicht dann jetzt
    	//
    	if (m_pButton != NULL)
    	{
    		delete (m_pButton);
    		m_pButton = NULL;
    	}
    
    	if (m_pButton2 != NULL)
    	{
    		delete (m_pButton2);
    		m_pButton2 = NULL;
    	}
    }
    
    void COptionen::Reset()
    {
    	// Die Position des Buttons einstellen
    	//
    	m_fXPos = 20.0f;
    	m_fYPos = 250.0f;
    
    	m_fXPosR = 20.0f;
    	m_fYPosR = 300.0f;
    }
    
    void COptionen::Render()
    {
    	// Die Position übergeben und das Bild (Taste-Links) rendern
    	//
    	m_pButton->SetPos (m_fXPos, m_fYPos);
    	m_pButton->Render ();
    
    	// Die Position übergeben und das Bild (Taste-Rechts) rendern
    	//
    	m_pButton2->SetPos (m_fXPosR, m_fYPosR);
    	m_pButton2->Render ();
    }
    
    void COptionen::Update()
    {
    	// nichts
    }
    
    // Game.h
    //
    
    #ifndef _GAME_H__
    #define _GAME_H__
    
    // Include-Dateien
    //
    
    #include "Player.h"
    #include "Menue.h"
    #include "Optionen.h"
    
    // Klasse
    //
    class CGame
    {
    public:
    
    	// Memberfunktionen
    	//
    	// Konstruktor
    	//
    	CGame ();
    
    	void Init ();
    	void Run ();
    	void Quit ();
    
    private:
    
    	// Memberfunktionen
    	//
    	void ProcessEvents ();
    
    	// Membervariablen
    	//
    	CPlayer		* m_pPlayer;
    	CSprite		* m_pBackground;
    	CMenue		* m_pMenue;
    	COptionen	* m_pOptionen;
    	bool m_bRun;
    	bool m_bGameRun;
    	bool m_bMenueRun;
    	bool m_bOptionenRun;
    };
    
    #endif
    
    // Game.cpp
    //
    
    //Include-Dateien
    //
    
    #include "Game.h"
    
    CGame::CGame()
    {
    	m_pPlayer = NULL;
    	m_pBackground = NULL;
    	m_pMenue = NULL;
    	m_pOptionen = NULL;
    }
    
    void CGame::Init()
    {
    	// Neuen Spieler initialisieren
    	//
    	m_pPlayer = new CPlayer;
    	m_pPlayer->Init ();
    	m_pPlayer->Reset ();
    
    	// Hintergrundbild (Sprite) laden
    	//
    	m_pBackground = new CSprite;
    	m_pBackground->Load ("Background.bmp");
    
    	// Menue initialisieren
    	//
    	m_pMenue = new CMenue;
    	m_pMenue->Init ();
    	m_pMenue->Reset ();
    
    	// Optionen initialisieren
    	//
    	m_pOptionen = new COptionen;
    	m_pOptionen->Init ();
    	m_pOptionen->Reset ();
    
    	// Run läuft
    	//
    	m_bRun = true;
    
    	// Menue läuft
    	//
    	m_bMenueRun = true;
    
    	// Option läuft
    	//
    	m_bOptionenRun = true;
    
    	// Spiel läuft 
    	//
    	m_bGameRun = true;
    
    } // Init
    
    void CGame::Quit()
    {
    	// Spieler freigeben
    	//
    	if (m_pPlayer != NULL)
    	{
    		delete (m_pPlayer);
    		m_pPlayer = NULL;
    	}
    
    	if (m_pBackground != NULL)
    	{
    		delete (m_pBackground);
    		m_pBackground = NULL;
    	}
    
    	if (m_pMenue != NULL)
    	{
    		delete (m_pMenue);
    		m_pMenue = NULL;
    	}
    
    	if (m_pOptionen != NULL)
    	{
    		delete (m_pOptionen);
    		m_pOptionen = NULL;
    	}
    } // Quit
    
    void CGame::Run()
    {
    	while (m_bRun == true)
    	{
    		while (m_bMenueRun == true)
    		{
    			// Events bearbeiten
    			//
    			ProcessEvents ();
    
    			// Framework updaten und Buffer löschen
    			//
    			g_pFramework->Update ();
    			g_pFramework->Clear ();
    
    			// Hintergrundbild rendern
    			//
    			m_pBackground->Render ();
    
    			// Menue updaten und rendern
    			//
    			m_pMenue->Render ();
    
    			// Buffer flippen
    			//
    			g_pFramework->Flip ();
    		}	
    
    		while (m_bOptionenRun == true)
    		{
    			// Events bearbeiten
    			//
    			ProcessEvents ();
    
    			// Framework updaten und Buffer löschen
    			//
    			g_pFramework->Update ();
    			g_pFramework->Clear ();
    
    			// Hintergrundbild rendern
    			//
    			m_pBackground->Render ();
    
    			// Optionen updaten und rendern
    			//
    			m_pOptionen->Render ();
    
    			// Buffer flippen
    			//
    			g_pFramework->Flip ();
    		} 
    
    		// Hauptschleife des Spiels durchlaufen
    		//
    		while (m_bGameRun == true)
    		{
    			// Events bearbeiten
    			//
    			ProcessEvents ();
    
    			// Framework updaten und Buffer löschen
    			//
    			g_pFramework->Update ();
    			g_pFramework->Clear ();
    
    			// Hintergrundbild rendern
    			//
    			m_pBackground->Render ();
    
    			// Spieler updaten und rendern
    			//
    			m_pPlayer->Update ();
    			m_pPlayer->Render ();
    
    			// Buffer flippen
    			//
    			g_pFramework->Flip ();
    		}
    	} // while (m_bRun)
    } // Run
    
    void CGame::ProcessEvents()
    {
    	SDL_Event Event;
    
    	// Gab es ein Event?
    	//
    	if (SDL_PollEvent (&Event))
    	{
    		// Ja, also schauen welches
    		//
    		switch (Event.type)
    		{
    			// Beenden?
    			//
    		case (SDL_QUIT):
    			{
    				// Spiel beenden
    				//
    				m_bRun = false;
    			} break;
    
    			// Wurde eine Taste gedrückt?
    			//
    		case (SDL_KEYDOWN):
    			{
    				switch (Event.key.keysym.sym)
    				{
    				case (SDLK_ESCAPE):
    					{
    						// Ja, also Spiel beenden
    						//
    						m_bRun = false;
    					} break;
    
    				case (SDLK_s):
    					{
    						// Wenn S für (Spielen) gedrückt wird, wird das Menue und die Optionen beendet
    						//
    						m_bMenueRun = false;
    						m_bOptionenRun = false;
    					} break;
    
    				case (SDLK_o):
    					{
    						// Wenn o für (Optionen) gedrückt wird, wird das Menue und das Spiel beendet.
    						//
    						m_bMenueRun = false;
    						m_bGameRun = false;
    					} break;
    				}
    			} break;
    		}
    	}
    } // ProcessEvents
    

    Gruss Eglifisch1



  • zomfgroflmaololknub 🙄

    Und nun? Dein Ernst?



  • Hallo

    zomfgroflmaololknub was heisst das.

    Ja, das ist mein ernst!!!

    pmb!!!



  • "oh my f***ing good rolling on the floor laughing my ass off laughing out load kack newbie"

    Das 'z' am Anfang hierbei dient nur zur zusätlichen Unterstreichung des Ausgedrückten.

    On Topic: Die genau Fehlermeldung wäre interessant.



  • Hallo

    Ich habe keine Fehlermeldung, den es ist ein Laufzeitfehler!!!

    Kann mir jemand sagen was ich falsch geschrieben habe?

    Ja ich denke es ist bestimmt ein Anfängerfehler.

    Also, wenn ich das Spiel starte, dann kommt zu beginn gleich eine "nicht Senden" Nachricht. Und somit wird das Spiel sofort wieder beendet.

    Gruss Eglifisch1 🙂



  • Was hast du denn mit dem Debugger schon so ausprobiert?



  • Hallo

    Kann mir jemand sagen, wie ihr solche Fehler mit dem Debugger finden könnt.

    Um den Debugger zu starten benutze ich die F5 Taste. Danach startet zuerst das Programm, und was muss ich danach machen um den Debugger richtig anwenden zu können?

    Gruss Eglifisch1



  • Was kommt denn dann, wenn du das Programm mit F5 startest? Btw, welchen Compiler und welche IDE nutzt du so?

    edit: Bei mir kommt mit dem Visual Studio beim Debugger (wenn halt ein Speicherfehler ist oder was weiß ich) ein Fenster mit "Abbrechen, Wiederholen, Ignorieren" und etwas Text. Weiß es grad nicht, im Text steht welchen der Knöpfe du drücken musst, um an die entsprechende Stelle zu springen.



  • Hallo zusammen

    Also, inzwieschen habe ich den Fehler bereits gefunden. Doch ich habe den Debugger nicht benötigt, um den Fehler zu suchen.
    Trotzdem will ich gerne noch wiesen wieder der Debugger funktioniert.

    Als das Prgoramm noch einen Laufzeitfehler enthielt, war es so:

    Wenn ich das Programm mit F5 startete, dan kam zu beginn gleich der FullScreen
    Modus. Das Bild war nur schwarz. Und es rührte sich nichts mehr. Ich ging mit der Windows Tast auf die Taskleist unten am Bildschirm. Soviel ich weiss konnte ich nicht einmal Visual C++ anklicken, sondern musste das Spiel mit der rechten Maustaste mit dem Menue Eintage Gruppe schliessen beenden.

    Leider weiss ich nicht wo ich die Debugger oder die IDE Informationen finde.

    Kann mir jemand sagen wo ich diese Informationen finde.

    Gruss Eglifisch1



  • Die Informationen gibt es hier: http://www.google.de/search?q=visual+studio+debugger+tutorial

    und hier:
    http://msdn.microsoft.com/en-us/library/ms235426.aspx

    Und als Startseite solltest du dir http://www.gidf.de einrichten. Wie du das benutztest, wird hier erklärt: http://www.rheinformat.com/google_tutorial.html



  • GDB ftw, mehr sage ich nicht, paste uns mal deine Stackframes alias Backtrace. Ach ja, leg' dir Linux zu, oder schick mir deinen "kompletten" Source, ich debugge das eben. 🙂


Anmelden zum Antworten