Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
MATTHEW SLUG 0.5 - Bullet.cpp

Bullet.cpp

Caricato da: Matthew
Scarica il programma completo

  1. /*
  2.  * Bullet.cpp
  3.  *
  4.  *  Created on: 12-Oct-2009
  5.  *      Author: matthew
  6.  */
  7.  
  8. #include "Bullet.h"
  9. #include "Character.h"
  10. #include "Enemy.h"
  11. #include "mylib.h"
  12. using namespace std;
  13.  
  14. vector<BITMAP *>Bullet::bsprite;
  15.  
  16. Bullet::Bullet(int x, int y, int speed, int _level):Object()
  17. {
  18.         setX(x);
  19.         setY(y);
  20.         setSpeedX(speed);
  21.         level = _level;
  22.         setW(8);
  23.         setH(7);
  24.         setSpriteN(0);
  25.         dead = false;
  26.         setGravity(0);
  27.         //TODO:pass with and height
  28.  
  29. }
  30.  
  31.  
  32. Bullet::~Bullet()
  33. {
  34. }
  35.  
  36.     bool Bullet::getDead()
  37.     {
  38.         return dead;
  39.     }
  40.     void Bullet::move(vector<Object> &object,vector<Enemy> &enemy, Character *character)
  41.     {
  42.         setSpeedY(getSpeedY()+getGravity());
  43.         setY(getY() + (int)getSpeedY());
  44.         setX(getX()+(int)getSpeedX());
  45.  
  46.         if(getX() < 0)
  47.         {
  48.            //If it goes beyond the left border, destroy it
  49.                 dead=true;
  50.         }
  51.         else if(getX() >800-getW())
  52.         {
  53.            //If it goes beyond the right border, destroy it
  54.                 dead=true;
  55.         }
  56.  
  57.         //If collide with a enemy
  58.                 for(unsigned int i=0; i<enemy.size(); i++)
  59.                 {
  60.                         if((collide_x(getX(),getW(),enemy[i].getX(),enemy[i].getW()))&&(collide_y(getY(),getH(),enemy[i].getY(),enemy[i].getH())))
  61.                         {
  62.                                 enemy[i].lessLife();
  63.  
  64.                                 //Push back the enemy
  65.                                 if(getSpeedX()>0)enemy[i].setX(enemy[i].getX()+5);
  66.                                 else enemy[i].setX(enemy[i].getX()-5);
  67.  
  68.                                 //Kill the enemy if out of life
  69.                                 if(enemy[i].getLife()<=0)enemy.erase(enemy.begin()+i);
  70.                                 {
  71.                                         //Destroy the bullet
  72.                                         dead=true;
  73.                                         break; //cannot kill more than one
  74.                                  }
  75.                          }
  76.                 }
  77.                 //If collide with the character
  78.                 if((collide_x(getX(),getW(),character->getX(),character->getW()))&&(collide_y(getY(),getH(),character->getY(),character->getH())))
  79.                 {
  80.                         character->lessLife();
  81.  
  82.                         //Push back the character
  83.                         if(getSpeedX()>0)character->setX(character->getX()+5);
  84.                         else character->setX(character->getX()-5);
  85.                         //Destroy the bullet
  86.                         dead=true;
  87.                  }
  88.  
  89.                  else
  90.                  {
  91.                          for(unsigned int i=0; i<object.size(); i++)
  92.                          {
  93.                                  //If the bullet collided with an object, move it to the character border
  94.                                  if((collide_x(getX(),getW(),object[i].getX(),object[i].getW()))&&(collide_y(getY(),getH(),object[i].getY(),object[i].getH())))
  95.                                  {
  96.                                          if(getSpeedX()>0)
  97.                                          {
  98.                                                  setX(object[i].getX()-getW());
  99.                                          }
  100.                                          else
  101.                                          {
  102.                                                  setX(object[i].getX()+object[i].getW());
  103.                                          }
  104.                                          //Destroy it next turn
  105.                                          dead=true;
  106.                                  }
  107.                          }
  108.                  }
  109.  
  110.  
  111.     }
  112.  
  113. BITMAP *Bullet::getSprite()
  114. {
  115.         return Bullet::bsprite[getSpriteN()];
  116. }