123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- #include "Balle.h"
- Balle::Balle(int rayon, Uint32 couleur, Level* niveau,
- int xSpawn,int ySpawn,float resistance,float gravite,int xBut,int yBut)
- :m_puissance(1.1),m_resistance(resistance),m_attraction(0,gravite),
- m_position(0.0,0.0),m_resultante(0.0,-6.0),m_traction(0.0,0.0),
- m_spawn((xSpawn+0.5)*LG_BLOC,(ySpawn+0.5)*LG_BLOC),
- m_arrivee(xBut+NB_BLOC_HORIZON/2,yBut+NB_BLOC_VERTI/2),m_point(0),
- m_niveau(niveau)
- {
- m_point = createPoint(rayon,couleur);
- m_position=m_spawn;
- }///Constructeur
- Balle::~Balle()
- {
- SDL_FreeSurface(m_point);
- }///Destructeur
- void Balle::demarrage(short dx, short dy)
- {
- Vecteur ajout(dx*m_puissance,dy*m_puissance);
- m_traction+=ajout;
- }///demarrage
- void Balle::arret(short dx, short dy)
- {
- Vecteur ajout(dx*m_puissance,dy*m_puissance);
- m_traction-=ajout;
- }///arret
- void Balle::calculMouvement()
- {
- /// [1] Calcul de la resultante
- m_resultante=m_resultante+m_traction+m_attraction;
- m_resultante*=m_resistance;
- /// [2] Collisions terrain
- bool encore(true);
- // [2.1] Vecteur parcoureur
- Vecteur aller,norme,posTest;
- norme=m_resultante;
- norme.normaliser();
- posTest=m_position;
- // [2.2] Avancée testeuse
- while ()
- {
- //On grandit le vecteur aller avec le norme tant qu'il est plus petit que resultante ou BOUM !
- }//WHILE progression
- /// [3] Attribution
- m_position+=m_resultante;
- }///calculMouvement
- void Balle::dessiner(SDL_Surface* support)
- {
- SDL_Rect position={(Sint16)(m_position.getX()-7),(Sint16)(m_position.getY()-7),0,0};
- SDL_BlitSurface(m_point,0,support,&position);
- }///dessiner
- void Balle::statutConsole()
- {
- std::cout << "Position ("<<m_position.getX()<<";"<<m_position.getY()<<")."<<std::endl;
- std::cout << "Resultante ("<<m_resultante.getX()<<";"<<m_resultante.getY()<<")."<<std::endl;
- std::cout << "Traction ("<<m_traction.getX()<<";"<<m_traction.getY()<<")."<<std::endl;
- std::cout << "Spawn ("<<m_spawn.getX()<<";"<<m_spawn.getY()<<")."<<std::endl;
- std::cout << "Arrivée ("<<m_arrivee.getX()<<";"<<m_arrivee.getY()<<")."<<std::endl;
- std::cout << std::endl;
- }///statutConsole
- void Balle::respawn()
- {
- m_position=m_spawn;
- m_resultante.setX(0.0);
- m_resultante.setY(-6.0);
- }///respawn
- /***===================={ Fonctions indépendantes }====================***/
- Balle* haveBall(Level* niveau)
- {
- // [1] Création des paramètres
- int xSpawn, ySpawn, xBut, yBut;
- float resistance, gravite;
- // [2] Acquisition des paramètres
- niveau->lireParametres(xSpawn,ySpawn,resistance,gravite,xBut,yBut);
- // [3] Création de la balle
- Balle* perso(0);
- perso=new Balle(7, 64512, niveau,//64 512 = orange en 16 bits
- xSpawn,ySpawn,resistance,gravite,xBut,yBut);
- // [4] Renvoi
- return perso;
- }///haveBall
|