#include "Raquette.h" Raquette::Raquette(int identifiant, int nbJoueursTotal, Uint32 couleur): m_identifiant(identifiant),m_centre(COTE/2,COTE/2), m_angleOrigine(0,COTE/2-COTE/36),m_angleEcartMax(180/nbJoueursTotal-(asin((float)RAYON_RQT/RAYON_TERRAIN)*180/M_PI)) { m_angleOrigine.rotate(360.0/nbJoueursTotal*identifiant); m_angleActuel = m_angleOrigine; m_pixel = SDL_CreateRGBSurface(SDL_HWSURFACE, 1, 1, 32, 0, 0, 0, 0); SDL_FillRect(m_pixel,0,couleur); m_position = m_centre+m_angleActuel; }///Constructeur Raquette::~Raquette() { SDL_FreeSurface(m_pixel); }///Destructeur void Raquette::afficher(SDL_Surface* screen) { // [1] Balayage des positions SDL_Rect pos; float distanceCentre; for(int y(-RAYON_RQT);y RAYON_TERRAIN && x*x+y*y < (RAYON_RQT)*(RAYON_RQT)) SDL_BlitSurface(m_pixel, 0, screen, &pos); } }///afficher void Raquette::deplacer(bool droite) { // [1] Teste si la raquette a le droit de bouger bool ecart = m_angleActuel.scalair(m_angleOrigine)<=m_angleEcartMax; // [2] On bouge //[2.1] Vers la droite if(droite && ecart) { //[2.1.1]Mouvement m_angleActuel.rotate(VITESSE); //[2.1.2]Pas trop loin ! if (m_angleActuel.scalair(m_angleOrigine)>m_angleEcartMax) { Vecteur tmp(m_angleOrigine); tmp.rotate(m_angleEcartMax-0.05); m_angleActuel = tmp; } } //[2.2] Ou vers la gauche else if (ecart) { m_angleActuel.rotate(-VITESSE); if (m_angleActuel.scalair(m_angleOrigine)>m_angleEcartMax) { Vecteur tmp(m_angleOrigine); tmp.rotate(-m_angleEcartMax+0.05); m_angleActuel = tmp; } } else { Vecteur tmp(m_angleOrigine); tmp.rotate(-m_angleEcartMax); m_angleActuel = tmp; } // [END] m_position = m_centre+m_angleActuel; }///deplacer Vecteur Raquette::getAngleActuel() { return m_angleActuel; }///getAngleActuel