Bonjour a tous
je viens de créer un petit programme, j'ai:
-mob1(qui est le personnage que je contrôle)
-mob2(qui est l'ennemie)
quand mob1 est a droite de mob2, donc quand ses coordonné en x sont supérieurs, le mob2 doit tout simplement se déplacer vers la droite.
je veut utiliser une class, voici mon code:
- include <stdlib.h>
- include <stdio.h>
- include <SDL/SDL.h>
class IA
{
public:
void bouge(){
if (posPers>posIa){
posIa++;
}
}
void prendAxes(int Mob,int Pers){
posIa=Mob;
posPers=Pers;
}
private:
int posIa;
int posPers;
};
void pause();
int main(int argc, char *argv[])
{
int continuer=1;
SDL_Event event;
SDL_Surface *ecran=NULL,*mob1=NULL,*mob2=NULL;
SDL_Init(SDL_INIT_VIDEO); // Initialisation de la SDL
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE || SDL_DOUBLEBUF); // Ouverture de la fenêtre
SDL_EnableKeyRepeat(10, 10);// pour ne pas répéter les touche
SDL_Rect positionMob1;
positionMob1.x=0;
positionMob1.y=0;
SDL_Rect positionMob2;
positionMob2.x=100;
positionMob2.y=0;
mob1=SDL_CreateRGBSurface(SDL_HWSURFACE,50,50,32,0
,0,0,0);
mob2=SDL_CreateRGBSurface(SDL_HWSURFACE,50,50,32,0
,0,0,0);
SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0
,0,255));//couleur de fond
SDL_FillRect(mob1,NULL,SDL_MapRGB(mob1->format,0,2
55,240)); // je colorie le mob1
SDL_FillRect(mob2,NULL,SDL_MapRGB(mob2->format,255
,0,0)); // je colorie le mob2
SDL_BlitSurface(mob1,NULL,ecran,&positionMob1);
SDL_BlitSurface(mob2,NULL,ecran,&positionMob2);
SDL_Flip(ecran);
SDL_Flip(mob1);
SDL_Flip(mob2);
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_KEYDOWN:
switch (event.key.keysym.sym)
{
case SDLK_LEFT:
positionMob1.x --; // Fermeture du programme
break;
case SDLK_RIGHT:
positionMob1.x++;
break;
case SDLK_DOWN:
positionMob1.y ++;
break;
case SDLK_UP:
positionMob1.y--;
break;
}
break;
}
IA A;
A.prendAxes(positionMob2.x,positionMob1.x);
A.bouge();
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
SDL_BlitSurface(mob1,NULL,ecran,&positionMob1);
SDL_BlitSurface(mob2,NULL,ecran,&positionMob2);
SDL_Flip(mob1);
SDL_Flip(mob2);
SDL_Flip(ecran);
}
pause(); // Mise en pause du programme
SDL_FreeSurface(mob1);//je libére la mémoire
SDL_FreeSurface(mob2);
SDL_Quit(); // Arrêt de la SDL
return EXIT_SUCCESS; // Fermeture du programme
}
void pause()
{
int continuer = 1;
SDL_Event event;
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
}
}
}
tout se compile parfaitement bien, mais quand je déplace mob1 a droite de mob2, rien ne se passe,pourquoi? 