Problem gelöst
PROBLEM WURDE GELÖST!
Hi,
Ich Programmiere grade ein kleines Spiel mit der SDL. Dabei habe ich schon seit Tagen ein schwerwiegenes Problem. Die ganze Spielwelt ist ein großes Hintergrundbild 3000x1200 Pixel, wovon je nachdem wo der Spieler grade ist der entsprechende 800x600 große Ausschnit angezeigt wird. Dies Funktioniert bei mir auch wunderbar ohne jegliche Fehler sowohl wenn ich mein Projekt aus der Entwiklungsumgebung Visual Studio 2008 oder aus dem Ordner direckt durch anklicken der Exe starte. Wenn ich jetzt jedoch mein Projekt kopiere und auf einem andern Rechner starte wird das Hintergrundbild nicht mehr angezeigt und man sieht nur noch einen schwarzen Bildschirm..
Hier sind die Funktionen zum Rendern/Laden und Ubdaten des Bildes bzw AUschnitt des Bildes:
Hier dann noch die Funktionen die zu ScreenRende und ScreenLoad gehören:
Ich versuche echt schon seit Tagen den Fehler zu finden und komme nicht weiter und habe die Hoffnung das hier vieleicht jemand eine Potenziele Fehlerquelle entdecken kann..
Gruß Ancd
Edit: Auf Wunsch bin ich gerne bereit weitere Informationen, Codeausschnitt oder Screenshot zu veröffentlichen, wenn das eine Hilfestellung erleichtert
PROBLEM WURDE GELÖST!
Hi,
Ich Programmiere grade ein kleines Spiel mit der SDL. Dabei habe ich schon seit Tagen ein schwerwiegenes Problem. Die ganze Spielwelt ist ein großes Hintergrundbild 3000x1200 Pixel, wovon je nachdem wo der Spieler grade ist der entsprechende 800x600 große Ausschnit angezeigt wird. Dies Funktioniert bei mir auch wunderbar ohne jegliche Fehler sowohl wenn ich mein Projekt aus der Entwiklungsumgebung Visual Studio 2008 oder aus dem Ordner direckt durch anklicken der Exe starte. Wenn ich jetzt jedoch mein Projekt kopiere und auf einem andern Rechner starte wird das Hintergrundbild nicht mehr angezeigt und man sieht nur noch einen schwarzen Bildschirm..
Hier sind die Funktionen zum Rendern/Laden und Ubdaten des Bildes bzw AUschnitt des Bildes:
Code:
#include "Backgroundmap.h"
void CBackgroundmap::ScreenLoad ()
{
//Lädt das Hintergrundbild..
m_SpriteBackground.Load_Backgroundmap(m_MapPfad, 800, 600);
}
void CBackgroundmap :: ScreenUpdate (CPlayer &Koordinaten)
{
// Bildschirmausschnitt je nach Figurbewegung berechnen
//Für X Koordinate
//Wenn Spieler am Ende der Map (Rechts) ist nicht mehr mit ziehen
if (Koordinaten.XRueckgabe () > Koordinaten.MapWidthMaxRueckgabe() -415)
{
m_MapArea.x = Koordinaten.MapWidthMaxRueckgabe() -800;
}
//Muss groeser 385 sein damit Bildschirm mit gezogen wird
else if (Koordinaten.XRueckgabe () > 385)
{
//Bild schirm wird mitgezogen allerdings reduziert um den Anfangswert
m_MapArea.x = Koordinaten.XRueckgabe ()-385;
}
else
{
m_MapArea.x = 0;
}
//Für Y Koordinate
//Wenn Y kleiner 300 ist dann nicht mit ziehen
if (Koordinaten.YRueckgabe () < 300)
{
m_MapArea.y = 0;
}
//Wenn Spieler nicht an einem Rand dann mitziehen
else if (Koordinaten.YRueckgabe () < Koordinaten.MapHeightMaxRueckgabe()-300)
{
//Bild schirm wird mitgezogen allerdings reduziert um den Anfangswert
m_MapArea.y = Koordinaten.YRueckgabe ()-300;
}
//Ansonsten Bildausschnitt bleibt ganz unten auf der Map
else
{
m_MapArea.y = Koordinaten.MapHeightMaxRueckgabe()-600;
}
}
void CBackgroundmap :: ScreenRender()
{
m_SpriteBackground.Render_BackgroundMap(m_MapArea.x, m_MapArea.y);
}
Hier dann noch die Funktionen die zu ScreenRende und ScreenLoad gehören:
Code:
// Render_BackgroundMap
//
// Aufgabe: Rendern des Spielabschnittes (Nur für Hintergrundbild)
//
void CSprite::Render_BackgroundMap (int X ,int Y )
{
m_FrameRect.x = X;
m_FrameRect.y = Y;
// Ausschnitt rendern
SDL_BlitSurface (m_pImage, &m_FrameRect, m_pScreen, &m_Rect);
}
// Load_Backgroundmap
//
// Aufgabe: Backgroundmap laden (Nur für Backgroundmap)
//
void CSprite::Load_Backgroundmap (const string sFilename,int FrameWidth, int FrameHeight)
{
// Bitmap laden
Load (sFilename);
// Rect für Animationsphase initialisieren
m_FrameWidth = FrameWidth;
m_FrameHeight = FrameHeight;
}
// Load
//
// Aufgabe: Einfaches, nicht animiertes Sprite laden
//
void CSprite::Load (const string sFilename)
{
// Bitmap laden
m_pImage = SDL_LoadBMP (sFilename.c_str());
// Prüfen, ob alles glatt ging
if (m_pImage == NULL)
{
cout << "Fehler beim Laden von: " << sFilename.c_str();
cout << endl;
cout << "Fehlermeldung: " << SDL_GetError () << endl;
// Framework herunterfahren
g_pFramework->Quit ();
// Gesamtes Spiel beenden
exit (1);
}
Ich versuche echt schon seit Tagen den Fehler zu finden und komme nicht weiter und habe die Hoffnung das hier vieleicht jemand eine Potenziele Fehlerquelle entdecken kann..
Gruß Ancd
Edit: Auf Wunsch bin ich gerne bereit weitere Informationen, Codeausschnitt oder Screenshot zu veröffentlichen, wenn das eine Hilfestellung erleichtert
Zuletzt bearbeitet: