Balle.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #include "Balle.h"
  2. Balle::Balle(int rayon, Uint32 couleur, Level* niveau,
  3. int xSpawn,int ySpawn,float resistance,float gravite,int xBut,int yBut)
  4. :m_puissance(1.1),m_resistance(resistance),m_attraction(0,gravite),
  5. m_position(0.0,0.0),m_resultante(0.0,-6.0),m_traction(0.0,0.0),
  6. m_spawn((xSpawn+0.5)*LG_BLOC,(ySpawn+0.5)*LG_BLOC),
  7. m_arrivee(xBut+NB_BLOC_HORIZON/2,yBut+NB_BLOC_VERTI/2),m_point(0),
  8. m_niveau(niveau)
  9. {
  10. m_point = createPoint(rayon,couleur);
  11. m_position=m_spawn;
  12. }///Constructeur
  13. Balle::~Balle()
  14. {
  15. SDL_FreeSurface(m_point);
  16. }///Destructeur
  17. void Balle::demarrage(short dx, short dy)
  18. {
  19. Vecteur ajout(dx*m_puissance,dy*m_puissance);
  20. m_traction+=ajout;
  21. }///demarrage
  22. void Balle::arret(short dx, short dy)
  23. {
  24. Vecteur ajout(dx*m_puissance,dy*m_puissance);
  25. m_traction-=ajout;
  26. }///arret
  27. void Balle::calculMouvement()
  28. {
  29. /// [1] Calcul de la resultante
  30. m_resultante=m_resultante+m_traction+m_attraction;
  31. m_resultante*=m_resistance;
  32. /// [2] Collisions terrain
  33. bool encore(true);
  34. // [2.1] Vecteur parcoureur
  35. Vecteur aller,norme,posTest;
  36. norme=m_resultante;
  37. norme.normaliser();
  38. posTest=m_position;
  39. // [2.2] Avancée testeuse
  40. while ()
  41. {
  42. //On grandit le vecteur aller avec le norme tant qu'il est plus petit que resultante ou BOUM !
  43. }//WHILE progression
  44. /// [3] Attribution
  45. m_position+=m_resultante;
  46. }///calculMouvement
  47. void Balle::dessiner(SDL_Surface* support)
  48. {
  49. SDL_Rect position={(Sint16)(m_position.getX()-7),(Sint16)(m_position.getY()-7),0,0};
  50. SDL_BlitSurface(m_point,0,support,&position);
  51. }///dessiner
  52. void Balle::statutConsole()
  53. {
  54. std::cout << "Position ("<<m_position.getX()<<";"<<m_position.getY()<<")."<<std::endl;
  55. std::cout << "Resultante ("<<m_resultante.getX()<<";"<<m_resultante.getY()<<")."<<std::endl;
  56. std::cout << "Traction ("<<m_traction.getX()<<";"<<m_traction.getY()<<")."<<std::endl;
  57. std::cout << "Spawn ("<<m_spawn.getX()<<";"<<m_spawn.getY()<<")."<<std::endl;
  58. std::cout << "Arrivée ("<<m_arrivee.getX()<<";"<<m_arrivee.getY()<<")."<<std::endl;
  59. std::cout << std::endl;
  60. }///statutConsole
  61. void Balle::respawn()
  62. {
  63. m_position=m_spawn;
  64. m_resultante.setX(0.0);
  65. m_resultante.setY(-6.0);
  66. }///respawn
  67. /***===================={ Fonctions indépendantes }====================***/
  68. Balle* haveBall(Level* niveau)
  69. {
  70. // [1] Création des paramètres
  71. int xSpawn, ySpawn, xBut, yBut;
  72. float resistance, gravite;
  73. // [2] Acquisition des paramètres
  74. niveau->lireParametres(xSpawn,ySpawn,resistance,gravite,xBut,yBut);
  75. // [3] Création de la balle
  76. Balle* perso(0);
  77. perso=new Balle(7, 64512, niveau,//64 512 = orange en 16 bits
  78. xSpawn,ySpawn,resistance,gravite,xBut,yBut);
  79. // [4] Renvoi
  80. return perso;
  81. }///haveBall