1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| #include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
SDL_Surface *Init();
SDL_Surface *Surface1 = NULL;
SDL_Surface *Surface2 = NULL;
SDL_Surface *ecran = NULL;
Uint32 bleuElectrique;
Uint32 roseBonbon;
Uint32 vertPomme;
int continuer = 1;
SDL_Rect coord;
SDL_Rect coord2;
SDL_Event event;
int main(int argc, char *argv[])
{
ecran = Init();
bleuElectrique = SDL_MapRGB(ecran->format, 22, 167, 255);
roseBonbon = SDL_MapRGB(ecran->format, 255, 32, 222);
vertPomme = SDL_MapRGB(ecran->format, 0, 170, 0);
Surface1 = SDL_CreateRGBSurface(SDL_HWSURFACE, 220, 220, 32, 0, 0, 0, 0);
Surface2 = SDL_CreateRGBSurface(SDL_HWSURFACE, 110, 110, 32, 0, 0, 0, 0);
SDL_WM_SetCaption("SDL Test", NULL);
SDL_FillRect(Surface2, NULL, bleuElectrique);
SDL_FillRect(Surface1, NULL, vertPomme);
SDL_FillRect(ecran, NULL, roseBonbon);
coord.x = ((640 / 2) - (220 / 2));
coord.y = ((480 / 2) - (220 / 2));
coord2.x = 0;
coord2.y = 0;
SDL_EnableKeyRepeat(10, 1);
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_KEYDOWN:
if((event.key.keysym.sym == SDLK_UP) && ((((coord2.x + 110) < coord.x ) || ((coord2.x > (coord.x + 220)))) || (coord2.y > (coord.y + 220))))
{
coord2.y--;
}
else if((event.key.keysym.sym == SDLK_DOWN) && ((((coord2.x + 110) < coord.x ) || ((coord2.x > (coord.x + 220)))) || ((coord2.y + 110) < coord.y)))
{
coord2.y++;
}
else if((event.key.keysym.sym == SDLK_RIGHT) && ((((coord2.y + 110) < coord.y ) || ((coord2.y > (coord.y + 220)))) || ((coord2.x + 110) < coord.x)))
{
coord2.x++;
}
else if((event.key.keysym.sym == SDLK_LEFT) && ((((coord2.y + 110) < coord.y ) || ((coord2.y > (coord.y + 220)))) || (coord2.x > (coord.x + 220))))
{
coord2.x--;
}
break;
case SDL_QUIT:
continuer = 0;
break;
}
SDL_BlitSurface(Surface2, NULL, ecran, &coord2);
SDL_BlitSurface(Surface1, NULL, ecran, &coord);
SDL_Flip(ecran);
}
SDL_FreeSurface(Surface1);
SDL_FreeSurface(Surface2);
SDL_Quit();
return EXIT_SUCCESS;
}
SDL_Surface *Init()
{
SDL_Surface *ecran = NULL;
if (SDL_Init(SDL_INIT_VIDEO) == -1)
{
fprintf(stderr, "Erreur d'initialisation de la SDL");
exit(EXIT_FAILURE);
}
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
if (ecran == NULL)
{
fprintf(stderr, "Impossible de charger le mode vidéo : %d\n",! SDL_GetError());
exit(EXIT_FAILURE);
}
return ecran;
} |
Partager