Frage

Aus irgendeinem Grund verweigert SDL ein Bild zu machen. Ich sehe nicht, warum und es ist wirklich meine Fortschritte auf einem 2D-Spiel bogging Ich entwickle. Alles ist richtig und so verknüpft. Hier ist mein Code:

//main.cpp
#include "main.h"

void game::createWindow(const int SCREEN_W, const int SCREEN_H, const char* SCREEN_NAME)
{
 buffer = SDL_SetVideoMode(SCREEN_W, SCREEN_H, 0, NULL);
 SDL_WM_SetCaption(SCREEN_NAME, NULL);
}

void game::enterLoop()
{
 while(Running == true)
 {
  SDL_BlitSurface(zombie, NULL, buffer, NULL);
  SDL_Flip(buffer);

  while(SDL_PollEvent(&gameEvent))
  {
   if(gameEvent.type == SDL_QUIT)
   {
    Running = false;
   }
  }
 }
}

void game::loadContent()
{
 zombie = SDL_LoadBMP("zombie.bmp");
}

int main(int argc, char* argv[])
{
 game gameObj;

 SDL_Init(SDL_INIT_EVERYTHING);
 gameObj.createWindow(960, 600, "uShootZombies");
 gameObj.loadContent();
 gameObj.enterLoop();

 SDL_Quit();

 return 0;
}

//main.h
#include <SDL.h>
#include <fstream>
#include <string>

using namespace std;

class game
{
 public:
 void createWindow(const int SCREEN_W, const int SCREEN_H, const char* SCREEN_NAME);
 void enterLoop();
 void loadContent();

 game()
 {
  Running = true;
 }

 ~game()
 {
  SDL_FreeSurface(buffer);

  SDL_FreeSurface(background);
  SDL_FreeSurface(player);
  SDL_FreeSurface(zombie);
 }

 private:
 SDL_Surface* buffer;

 SDL_Surface* background;
 SDL_Surface* player;
 SDL_Surface* zombie;

 SDL_Event gameEvent;
 bool Running;
};NU
War es hilfreich?

Lösung

ich alle Ihre Code nur kopiert in Code verwenden :: Blöcke und es funktioniert gut. Natürlich war ich mit meiner eigenen BMP-Datei, die ich „zombie.bmp“ genannt

Sind Sie sicher, dass Ihre .bmp-Datei in Ordnung ist?

Beachten Sie, dass, wenn Sie ursprünglich speichert es als JPEG-Datei oder so etwas, dann ist es einfach umbenannt in .bmp, es wird nicht funktionieren (Und es wird nicht einen Fehler aus, entweder)

Es muss ursprünglich als bmp gespeichert werden.

Das ist alles, was ich mir vorstellen kann.

Andere Tipps

Es scheint, dass Sour Lemon bereits Ihr Problem gelöst, aber ich dachte, noch würde es sich lohnen, darauf hinweisen, dass der obige Code führt keine Kontrollen, um sicherzustellen, dass Ihr Zombie-Bild tatsächlich korrekt geladen wurde.

Sie sollten so etwas wie dies tun:

void game::loadContent()
{
    zombie = SDL_LoadBMP("zombie.bmp");
    if (zombie == NULL) {
        ReportError(SDL_GetError());
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top