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 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
#include <stdio.h>
#include <sdl.h>
#include <stdlib.h>
SDL_Rect updatePalet(SDL_Surface* screen, SDL_Surface* palet, SDL_Event event)
{
//On actualise la position du palet
SDL_Rect newPosition;
newPosition.x = event.motion.x;
newPosition.y = 450;
SDL_BlitSurface(palet,NULL,screen,&newPosition);
return newPosition;
}
int*** loadBrique() //Charge les briques à partir d'un fichier
{
int ***tabBrique;
//On construit la tableau
//Allocation dynamique
tabBrique = malloc(sizeof(int)*110);
*tabBrique[0][0] = 1; //On chargera dans un fichier après
*tabBrique[0][1] = 1;
*tabBrique[0][2] = 1;
*tabBrique[0][3] = 1;
*tabBrique[0][4] = 1;
*tabBrique[0][5] = 1;
*tabBrique[0][6] = 1;
*tabBrique[0][7] = 1;
*tabBrique[0][8] = 1;
*tabBrique[0][9] = 1;
return tabBrique;
}
void afficheBrique(int*** tabBrique, SDL_Surface* ecran, SDL_Surface* brique) //Affiche les brique a partir d'un tableau
{
int i,j;
SDL_Rect positionBrique;
int TAILLE_BRIQUE = 31;
for (i=1;i<=10;i++) //Les colonnes
{
for (j=1;j<=10;j++) //Les lignes
{
if (*tabBrique[0][j] == 1) //Si on a une brique
{
positionBrique.x = j * TAILLE_BRIQUE;
positionBrique.y = 0;
SDL_BlitSurface(brique,NULL,ecran,&positionBrique);
}
}
}
}
int main(int argc, char* argv[])
{
SDL_Surface* ecran;
ecran = SDL_SetVideoMode(640,480,32,SDL_DOUBLEBUF | SDL_HWSURFACE);
SDL_Event event;
SDL_WM_SetCaption("Mine Breaker",NULL);
SDL_ShowCursor(0);
SDL_Surface* palet = SDL_LoadBMP("palet.bmp");
SDL_Rect positionPalet;
SDL_Surface* brique = SDL_LoadBMP("brique.bmp");
int ***tabBrique;
tabBrique = malloc(sizeof(int)*110);
tabBrique = loadBrique();
//Boucle des évenements
while (1)
{
SDL_PollEvent(&event);
SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0)); //Efface l'écran
afficheBrique(tabBrique,ecran,brique);
if (event.type == SDL_QUIT)
{
break;
}
if (event.type == SDL_MOUSEMOTION)
{
positionPalet = updatePalet(ecran,palet,event);
}
SDL_Flip(ecran);
}
SDL_FreeSurface(ecran);
SDL_Quit();
return 0;
} |
Partager