00001 00002 // Shoot(r) 00009 00010 #include "entite.h" 00011 #include "ctrl_fenetre.h" 00012 00013 CEntite::CEntite () 00014 { 00015 m_Timer.Init (); 00016 } 00017 00018 // Mise à jour de la position de l'entité, à l'aide des équations de mouvement uniformément accéléré 00019 // x(t) = 1/2*a*(t-to)² + v(t)*(t-to) + x0 00020 // v(t) = a(t)*(t-to) + v0 00021 // a(t) = a0 (constante) 00022 void CEntite::Update () 00023 { 00024 // Détermine une durée c'est à dire la différence entre le temps initiale et le temps finale (t - to) 00025 float fTemps = m_Timer.GetTime (); 00026 // Détermine la vitesse : v(t) = a(t)*(t-to) + v0 00027 m_VitesseF = m_Acceleration * fTemps + m_VitesseI; 00028 // Détermine la position : x(t) = 1/2*a*(t-to)² + v(t)*(t-to) + x0 00029 m_PositionF = m_Acceleration * 0.5 * SQR(fTemps) + m_VitesseF * fTemps + m_PositionI; 00030 } 00031 00032 void CEntite::AddDommage (int iDommage) 00033 { 00034 m_iBouclier -= iDommage; 00035 } 00036 00037 // Détermine si un objet rond centrée sur Position est dans l'écran 00038 bool CEntite::EstDansEcran (CVecteur Position, float fRayon) const 00039 { 00040 if (Position (gtl::X) < 0 - fRayon) 00041 return false; 00042 if (Position (gtl::X) > FENETRE_LARGEUR + fRayon) 00043 return false; 00044 if (Position (gtl::Y) < 0 - fRayon) 00045 return false; 00046 if (Position (gtl::Y) > FENETRE_HAUTEUR + fRayon) 00047 return false; 00048 return true; 00049 }
1.3.8