F
Kann das überhaupt Funktonieren? Wenn ich es so mache bekomme ich nur einen Blauen Bildschirm.
mfg Frusciante
#include <stdlib.h>
#include <SDL.h>
#ifdef _WIN32
#undef main
#endif
int var = 0;
int vab = 1;
int main(int argc, char *argv[])
{
SDL_Surface *screen, *image, *image2, *image3;
SDL_Rect dst, dstblue;
SDL_Event event;
Uint8 *keys;
int tuxX = 50, tuxY = 50 ;
bool done = false;
if(SDL_Init(SDL_INIT_VIDEO) == -1)
{
printf("Can't init SDL: %s\n", SDL_GetError());
exit(1);
}
atexit(SDL_Quit);
screen = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 255));
if(screen == NULL)
{
printf("Can't set video mode: %s\n", SDL_GetError());
exit(1);
}
image3 = SDL_LoadBMP("Map2.bmp");
if(image3 == NULL)
{
printf("Can't load image of tux: %s\n", SDL_GetError());
exit(1);
}
image2 = SDL_LoadBMP("Map.bmp"); //LOADMAP
if(image2 == NULL)
{
printf("Can't load image of Map: %s\n", SDL_GetError());
exit(1);
} //LOADBMP
image = SDL_LoadBMP("tux.bmp");
if(image == NULL) //LOADTUX
{
printf("Can't load image of tux: %s\n", SDL_GetError());
exit(1);
} //LOADTUX
dst.w = image->w;
dst.h = image->h;
dstblue.w = image->w + 1;
dstblue.h = image->h + 1;
SDL_SetColorKey(image, SDL_SRCCOLORKEY, SDL_MapRGB(image->format, 255, 0, 255));
while(!done)
{
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT:
done = true;
break;
}
}
keys = SDL_GetKeyState(NULL);
if(keys[SDLK_UP])
{
if(tuxY > 10)
tuxY--;
}
if(keys[SDLK_DOWN])
{
if(tuxY < 470 - image->h)
tuxY++;
}
if(keys[SDLK_RIGHT])
{
if(tuxX < 630 - image->w)
tuxX++;
}
if(keys[SDLK_LEFT])
{
if(tuxX > 10)
tuxX--;
}
dst.x = tuxX;
dst.y = tuxY;
dstblue.x = tuxX - 1;
dstblue.y = tuxY - 1;
SDL_FillRect(screen, &dstblue, SDL_MapRGB(screen->format, 0, 0, 255));
}
if (var == 0)
{
SDL_BlitSurface(image2, 0, screen, 0);
SDL_BlitSurface(image, NULL, screen, &dst);
SDL_Flip(screen);
}
if (tuxX == 250, tuxY == 10)
{
var = 2;
if (var == 2)
{
if (image2 > 0)
{
SDL_FreeSurface(image2);
}
SDL_BlitSurface(image3, 0, screen, 0);
SDL_BlitSurface(image, NULL, screen, &dst);
SDL_Flip(screen);
}
}
SDL_FreeSurface(image);
return 0;
}
Noch mal so als Zwischenfrage, weiß jemand ob es daran liegt das ich das nicht vorhande Bild Freigebe? Oder an der Keyabfrage. MEin Prob ist ja das ich Tux auf dem neugeladenen Bild nur nach links und rechts bewegen kann. Wenn ich nach oben und unten drücke gibt es komische grafik Fehler oder er macht gar nichts.