Advertisement
Guest User

Untitled

a guest
Aug 13th, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.64 KB | None | 0 0
  1. Player.h
  2.  
  3. #pragma once
  4. #include <string>
  5. #include <vector>
  6.  
  7. #include "Sprite.h"
  8.  
  9. class Player
  10. {
  11. public:
  12.     Player(SDL_Renderer *renderer, int x, int y);
  13.     ~Player();
  14.  
  15.     void Draw(SDL_Renderer *renderer);
  16.     void Update();
  17.  
  18.     void StartMove();
  19.     void StopMove();
  20.     void ResetMove();
  21.  
  22.     void Jump();
  23.     void StartJump(int value);
  24.     void resetJump();
  25.  
  26.     void MoveAnimation();
  27.  
  28.     void UpdatePosX(int moveSpeed);
  29.     void UpdatePosY(int moveSpeed);
  30.  
  31.     bool getMove();
  32.  
  33.     bool getChangeDirection();
  34.     void setChangeDirection();
  35.  
  36.     void setMoveDirection(bool value);
  37.     bool getMoveDirection();
  38.  
  39.     int getMoveSpeed();
  40. private:
  41.  
  42.     std::vector<Sprite*> p;
  43.     int spriteID;
  44.     unsigned int moveAnimationTime;
  45.  
  46.     float posX, posY;
  47.     int numOfLives;
  48.     int health;
  49.  
  50. //----------move-------------
  51.     bool moveDir;
  52.     bool Move;
  53.     bool changeMoveDir;
  54.     bool newMoveDir;
  55.  
  56.     static const int maxMoveSpeed = 4;
  57.     int currentMoveSpeed;
  58.     int moveSpeed;
  59.     unsigned int passedTime;
  60. //---------------------------
  61. //----------Jump-------------
  62.     int jumpState;
  63.  
  64.     float startJumpSpeed;
  65.     float currentJumpSpeed;
  66.     float jumpDistance;
  67.     float currentJumpDistance;
  68.  
  69.     float currentFallingSpeed;
  70.  
  71.     bool springJump;
  72. //---------------------------
  73.  
  74.     void movePlayer();
  75.     void setSpriteID(int id);
  76. };
  77.  
  78. ///////////////////////////////////////////////////////////////////
  79. player.cpp
  80.  
  81. #include "Player.h"
  82.  
  83. Player::Player(SDL_Renderer *renderer, int x, int y)
  84. {
  85.     this->posX = x;
  86.     this->posY = y;
  87.     this->numOfLives = 3;
  88.     this->health = 100;
  89.     this->moveAnimationTime = 0;
  90.  
  91.     this->spriteID = 0;
  92.  
  93.     this->moveDir = true;
  94.     this->Move = false;
  95.     this->changeMoveDir = false;
  96.  
  97.     this->currentMoveSpeed = 4;
  98.     this->moveSpeed = 0;
  99.     this->passedTime = SDL_GetTicks();
  100.  
  101.     this->jumpState = 0;
  102.     this->startJumpSpeed = 8;
  103.  
  104.     this->currentFallingSpeed = 3;
  105.  
  106.     this->springJump = false;
  107.  
  108.     std::vector<std::string> tempS;
  109.     std::vector<unsigned int> tempI;
  110. //------------------ 1 ------------------------
  111.     tempS.push_back("Player/playerRight1");
  112.     tempI.push_back(0);
  113.     p.push_back(new Sprite(tempS, tempI, renderer));
  114.     tempS.clear();
  115. //------------------ 2 ------------------------
  116.     tempS.push_back("Player/playerRight2");
  117.     tempI.push_back(0);
  118.     p.push_back(new Sprite(tempS, tempI, renderer));
  119.     tempS.clear();
  120. //------------------ 3 ------------------------
  121.     tempS.push_back("Player/playerRight3");
  122.     tempI.push_back(0);
  123.     p.push_back(new Sprite(tempS, tempI, renderer));
  124.     tempS.clear();
  125. //------------------ 4 ------------------------
  126.     tempS.push_back("Player/playerLeft1");
  127.     tempI.push_back(0);
  128.     p.push_back(new Sprite(tempS, tempI, renderer));
  129.     tempS.clear();
  130. //------------------ 5 ------------------------
  131.     tempS.push_back("Player/playerLeft2");
  132.     tempI.push_back(0);
  133.     p.push_back(new Sprite(tempS, tempI, renderer));
  134.     tempS.clear();
  135. //------------------ 6 ------------------------
  136.     tempS.push_back("Player/playerLeft3");
  137.     tempI.push_back(0);
  138.     p.push_back(new Sprite(tempS, tempI, renderer));
  139.     tempS.clear();
  140.  
  141. }
  142.  
  143. Player::~Player()
  144. {
  145.     for (std::vector<Sprite*>::iterator i = p.begin(); i != p.end(); i++)
  146.     {
  147.         delete (*i);
  148.     }
  149. }
  150.  
  151. void Player::Draw(SDL_Renderer *renderer)
  152. {
  153.     p[spriteID]->getTexture()->Draw(posX, posY, renderer);
  154. }
  155.  
  156. void Player::Update()
  157. {
  158.     movePlayer();
  159. }
  160.  
  161. void Player::movePlayer()
  162. {
  163.     if (Move && !changeMoveDir)
  164.     {
  165.         if (moveSpeed > currentMoveSpeed)
  166.         {
  167.             --moveSpeed;
  168.         }
  169.         else if (SDL_GetTicks() - moveSpeed >= passedTime && moveSpeed < currentMoveSpeed)
  170.         {
  171.             ++moveSpeed;
  172.             passedTime = SDL_GetTicks();
  173.         }
  174.         else if (moveSpeed == 0)
  175.         {
  176.             moveSpeed = 1;
  177.         }
  178.     }
  179.     else
  180.     {
  181.         if (changeMoveDir && moveSpeed <= 1)
  182.         {
  183.             moveDir = newMoveDir;
  184.             changeMoveDir = false;
  185.             Move = true;
  186.         }
  187.     }
  188.  
  189.     if (moveSpeed > 0)
  190.     {
  191.         if (moveDir)
  192.         {
  193.             UpdatePosX(moveSpeed);
  194.         }
  195.         else
  196.         {
  197.             UpdatePosX(-moveSpeed);
  198.         }
  199.  
  200.         if (!changeMoveDir && jumpState == 0 && Move)
  201.         {
  202.             MoveAnimation();
  203.         }
  204.     }
  205.     else if (jumpState == 0)
  206.     {
  207.         setSpriteID(0);
  208.         UpdatePosX(0);
  209.     }
  210.     else
  211.     {
  212.         UpdatePosX(0);
  213.     }
  214. }
  215. void Player::StartMove()
  216. {
  217.     moveAnimationTime = SDL_GetTicks();
  218.     passedTime = SDL_GetTicks();
  219.     moveSpeed = 1;
  220.     Move = true;
  221. }
  222. void Player::StopMove()
  223. {
  224.     moveSpeed = 0;
  225.     Move = false;
  226.     changeMoveDir = false;
  227.     setSpriteID(0);
  228. }
  229. void Player::ResetMove()
  230. {
  231.     moveSpeed--;
  232.     Move = false;
  233. }
  234.  
  235. void Player::Jump()
  236. {
  237.     if (jumpState == 0)
  238.     {
  239.         StartJump(5);
  240.     }
  241. }
  242. void Player::StartJump(int value)
  243. {
  244.     currentJumpSpeed = startJumpSpeed;
  245.     jumpDistance = 32 * value;
  246.     currentJumpDistance = 0;
  247.     setSpriteID(0);
  248.  
  249.     jumpState = 1;
  250. }
  251. void Player::resetJump()
  252. {
  253.     jumpState = 0;
  254.     jumpDistance = 0;
  255.     currentJumpDistance = 0;
  256.     currentJumpSpeed = 3;
  257. }
  258.  
  259. void Player::UpdatePosX(int moveSpeed)
  260. {
  261.     if (moveSpeed > 0)
  262.     {
  263.         posX += moveSpeed;
  264.     }
  265.     else if (moveSpeed<0)
  266.     {
  267.         posX += moveSpeed;
  268.     }
  269. }
  270. void Player::UpdatePosY(int moveSpeed)
  271. {
  272.     if (moveSpeed > 0)
  273.     {
  274.         posY += moveSpeed;
  275.     }
  276.     else if (moveSpeed < 0)
  277.     {
  278.         posY += moveSpeed;
  279.     }
  280. }
  281.  
  282. void Player::MoveAnimation()
  283. {
  284.     if (SDL_GetTicks() + moveSpeed > moveAnimationTime)
  285.     {
  286.         moveAnimationTime = SDL_GetTicks();
  287.         if (spriteID >= 2)
  288.         {
  289.             setSpriteID(2);
  290.         }
  291.         else
  292.         {
  293.             ++spriteID;
  294.         }
  295.     }
  296. }
  297.  
  298. void Player::setSpriteID(int id)
  299. {
  300.     spriteID = id;
  301. }
  302.  
  303. bool Player::getMove()
  304. {
  305.     return Move;
  306. }
  307. bool Player::getChangeDirection()
  308. {
  309.     return changeMoveDir;
  310. }
  311. void Player::setChangeDirection()
  312. {
  313.     changeMoveDir = true;
  314.     this->newMoveDir = !moveDir;
  315. }
  316. void Player::setMoveDirection(bool value)
  317. {
  318.     this->moveDir = value;
  319. }
  320. bool Player::getMoveDirection()
  321. {
  322.     return moveDir;
  323. }
  324. int Player::getMoveSpeed()
  325. {
  326.     return moveSpeed;
  327. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement