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
| typedef struct bille bille;
struct bille
{
double accel;
double vx;
};
void CreationBille (bille *uneBille, int posInitX, int posInitY);
void DeplacerBille(bille *uneBille, bille *adTabBille, indexBille);
int main(int argc, char *argv[])
{
...
int i = 0, max_billes = 10;
bille billes[max_billes];
for(i = 0; i < max_billes; i++){
CreationBille(&(billes[i]));
}
int tempsPrecedent = 0, tempsActuel = 0;
int continuer = 1;
while (continuer)
{
SDL_Event event;
while (SDL_PollEvent(&event))
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYDOWN:
switch (event.key.keysym.sym)
{
case SDLK_ESCAPE:
continuer = 0;
break;
default:
break;
}
break;
}
tempsActuel = SDL_GetTicks();
if (1000 / FPS < tempsActuel - tempsPrecedent) //timer
{
for(i = 0; i < max_billes; i++){
DeplacerBille(&(billes[i]), &(billes), i);
}
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 105, 105, 105));
SDL_BlitSurface(vaisseau1.image, NULL, ecran, &(vaisseau1.position));
for(i = 0; i < max_billes; i++){
SDL_BlitSurface(billes[i].image, NULL, ecran, &(billes[i].position));
}
SDL_Flip(ecran);
tempsPrecedent = tempsActuel;
}else /* Si ça fait moins de 1000/FPS depuis le dernier tour de boucle, on endort le programme le temps qu'il faut */
{
SDL_Delay(1000/FPS - (tempsActuel - tempsPrecedent));
}
}
for(i = 0; i < max_billes; i++){
DestructionBille (&(billes[i]));
}
SDL_Quit();
return EXIT_SUCCESS;
}
void CreationBille (bille *uneBille)
{
uneBille->vmax = 5;
uneBille->vx = uneBille->vmax;
SDL_Surface *temporaire = SDL_LoadBMP("truc.jpg");
if (temporaire == NULL)
{
printf("Echec lors du chargement de l'image d'une bille dans InitialiserBille : %s\n", SDL_GetError());
exit(EXIT_FAILURE);
}
uneBille->image = SDL_DisplayFormat(temporaire);
SDL_FreeSurface(temporaire); //mémoire libérée
SDL_SetColorKey(uneBille->image, SDL_SRCCOLORKEY, SDL_MapRGB(uneBille->image->format, 105, 105, 105)); //rend transparent l'arrière-plan de la bille
uneBille->position.x = 50;
uneBille->position.y = 50;
}
void DeplacerBille(bille *uneBille, bille *adTabBille, indexBille) //, vaisseau unVaisseau
{
int i = 0;
} |
Partager