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 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
| #include "graphics.h"
void Jouer()
{
int m = 0, i, n = 0, t, min = 0, max = 1000, nbremete = 4;
SDL_Surface *ecran = NULL,*personnage = NULL,*fond = NULL, *mete1 = NULL;
struct Coordonnees
{
SDL_Rect p; // Les variables que va contenir la structure
int x;
int y;
};
typedef struct Coordonnees Coordonnees ; // Plus besoin d'écrire struct Coordonnees mais maintenant seulement Coordonnees
SDL_Rect positionpersonnage;
SDL_Rect positionfond;
SDL_Event event;
for(i=0; i<=nbremete; i++)
{
Coordonnees positionmete[i]; // Créer un tableau de type Coordonnees
positionmete[i].x = alea_int(500); // Donne la position de chaque météorite en x
positionmete[i].y = 800; // Donne la position de chaque météorite en y (grande pour pouvoir ensuite les faire tomber à différents moments)
}
positionpersonnage.x = 150;
positionpersonnage.y = 590;
positionfond.x = 0;
positionfond.y = 0;
int continuer = 1;
int tempsPrecedent = 0, tempsActuel = 0;
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode(500, 700, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_WM_SetCaption("Yanis vient de porter sa team", NULL);
fond = SDL_LoadBMP("fond.bmp");
personnage = SDL_LoadBMP("personnage.bmp");
mete1 = SDL_LoadBMP("mete1.bmp");
SDL_SetColorKey(personnage, SDL_SRCCOLORKEY, SDL_MapRGB(personnage->format, 0, 0, 255));
SDL_SetColorKey(mete1, SDL_SRCCOLORKEY, SDL_MapRGB(mete1->format, 0, 0, 255));
SDL_EnableKeyRepeat(10, 10);
while (continuer) //A CHANGER IL FAUT PAS DE BOUCLE INFINI
{
SDL_PollEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_RIGHT:
positionpersonnage.x = positionpersonnage.x+3;
break;
case SDLK_LEFT:
positionpersonnage.x = positionpersonnage.x-3;
break;
}
}
t = SDL_GetTicks();
tempsActuel = SDL_GetTicks();
if (tempsActuel-tempsPrecedent>30)
{
for(n; n<= nbremete; n++) // On écrit pas (n=0, n<5, n++) pour ne pas réinitialliser sa valeur
{
if( min <= t <= max) // On veut faire descendre les météorites une par une
{
Coordonnees positionmete[n];
positionmete[n].y = 0;
n++;
min = max;
max = max + 400;
}
}
for(i=0; i<= nbremete; i++)
{
Coordonnees positionmete[i];
positionmete[i].y = positionmete[i].y + 5; //les météorites descendent
if(positionmete[i].x<=positionpersonnage.x //boucle collision avec les météorites
&&
positionpersonnage.x<=positionmete[i].x+27
&&
positionmete[i].y<=positionpersonnage.y
&&
positionpersonnage.y<=positionmete[i].y+66)
{
m=1 ;
}
if(positionmete[i].x<=positionpersonnage.x+56
&&
positionpersonnage.x+56<=positionmete[i].x+27
&&
positionmete[i].y<=positionpersonnage.y
&&
positionpersonnage.y<=positionmete[i].y+66)
{
m=1 ;
}
if(positionmete[i].x<=positionpersonnage.x+26
&&
positionpersonnage.x+26<=positionmete[i].x+27
&&
positionmete[i].y<=positionpersonnage.y
&&
positionpersonnage.y<=positionmete[i].y+66)
{
m=1 ;
}
if(positionmete[i].x<=positionpersonnage.x+56
&&
positionpersonnage.x+56<=positionmete[i].x+27
&&
positionmete[i].y+66<=positionpersonnage.y+50
&&
positionpersonnage.y+50<=positionmete[i].y+66)
{
m=1 ;
}
if(positionmete[i].x<=positionpersonnage.x
&&
positionpersonnage.x<=positionmete[i].x+27
&&
positionmete[i].y<=positionpersonnage.y+50
&&
positionpersonnage.y+50<=positionmete[i].y+66)
{
m=1 ;
}
}
if(m==1)
{
return ;
}
tempsPrecedent = tempsActuel ;
}
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
SDL_BlitSurface(fond, NULL, ecran, &positionfond);
SDL_BlitSurface(personnage, NULL, ecran, &positionpersonnage);
for(i=0; i<= nbremete; i++)
{
Coordonnees positionmete[i];
SDL_BlitSurface(mete1, NULL, ecran, &positionmete[i]) ;
}
SDL_Flip(ecran);
}
SDL_FreeSurface(fond);
SDL_FreeSurface(personnage);
SDL_FreeSurface(mete1);
SDL_Quit();
} |
Partager