#include "Helico.h" Helico::Helico(SDL_Surface* ecran) : Ennemy(0,ecran),m_vitesse(5+takeRand(5)) { m_helico = SDL_LoadBMP("Images/Helicopter.bmp"); SDL_SetColorKey(m_helico,SDL_SRCCOLORKEY,SDL_MapRGB(m_helico->format,255,255,255));//On met le fond (blanc) en invisible ! m_positionHelico.x=takeRand(620); m_positionHelico.y=40+takeRand(350); } Helico::Helico(SDL_Surface* ecran,int vie) : Ennemy(0,ecran,vie),m_vitesse(5+takeRand(5)) { m_helico=SDL_LoadBMP("Images/Helicopter.bmp"); SDL_SetColorKey(m_helico,SDL_SRCCOLORKEY,SDL_MapRGB(m_helico->format,255,255,255));//On met le fond (blanc) en invisible ! } Helico::Helico(SDL_Surface* ecran, int vie, int antiLatence) : Ennemy(0,ecran,vie),m_vitesse(5+takeRand(5,antiLatence)) { m_helico = SDL_LoadBMP("Images/Helicopter.bmp"); SDL_SetColorKey(m_helico,SDL_SRCCOLORKEY,SDL_MapRGB(m_helico->format,255,255,255));//On met le fond (blanc) en invisible ! m_positionHelico.x=takeRand(620,antiLatence); m_positionHelico.y=40+takeRand(350,antiLatence); } Helico::~Helico() { SDL_FreeSurface(m_helico); } void Helico::afficher() { if (m_positionHelico.x<640) { m_positionHelico.x=m_positionHelico.x+=m_vitesse; } else { m_positionHelico.x=0; } SDL_BlitSurface(m_helico,NULL,m_ecran,&m_positionHelico); if (m_tempsFire==0) { if (m_positionHelico.x+64>m_xFire&&m_xFire>m_positionHelico.x && m_positionHelico.y+32>m_yFire&&m_yFire>m_positionHelico.y) { switch(m_typeFire) { case 0: this->recevoirDegats(11); break; case 1: this->recevoirDegats(5); break; case 2: this->recevoirDegats(3); break; }//Switch }//Verification position }//Si tir } /////////////////////////////////////////////////////////////////////////////////////////////////// BossOne::BossOne(SDL_Surface* ecran,Joueur* cible) : Ennemy(cible,ecran,100) { m_bossOne=SDL_LoadBMP("Images/HelicopterBossUn.bmp"); m_tir=SDL_LoadBMP("Images/HelicopterBossUnTir.bmp"); SDL_SetColorKey(m_bossOne,SDL_SRCCOLORKEY,SDL_MapRGB(m_bossOne->format,255,255,255)); SDL_SetColorKey(m_tir,SDL_SRCCOLORKEY,SDL_MapRGB(m_tir->format,255,255,255)); m_positionBoss.x=100; m_positionBoss.y=50; m_vaVersLeBas=true; m_vaVersLaDroite=true; m_armeCycle=100; } BossOne::~BossOne() { SDL_FreeSurface(m_bossOne); } void BossOne::afficher() { //Deplacement if (m_vaVersLeBas) { m_positionBoss.y++; if (m_positionBoss.y>324)//480-76-80 { m_vaVersLeBas=false; } } else { m_positionBoss.y--; if (m_positionBoss.y<0) { m_vaVersLeBas=true; } } if (m_vaVersLaDroite) { m_positionBoss.x++; if (m_positionBoss.x>512) { m_vaVersLaDroite=false; } } else { m_positionBoss.x--; if (m_positionBoss.x<0) { m_vaVersLaDroite=true; } } //Collage SDL_BlitSurface(m_bossOne,NULL,m_ecran,&m_positionBoss); //Gestion des tirs du joueur if (m_tempsFire==0) { if (m_positionBoss.x+128>m_xFire&&m_xFire>m_positionBoss.x && m_positionBoss.y+80>m_yFire&&m_yFire>m_positionBoss.y) { this->recevoirDegats(10); } } //Gestion des tirs d'helico if (!takeRand(50,m_armeCycle)) { m_armeCycle=0; m_cible->recevoirDegats(1); } if (m_armeCycle<5) { SDL_Rect positionTir; positionTir.x=m_positionBoss.x+m_bossOne->w/2-m_tir->w/2; positionTir.y=m_positionBoss.y+m_bossOne->h/2-m_tir->h/2; SDL_BlitSurface(m_tir,NULL,m_ecran,&positionTir); } m_armeCycle++; }