Advertisement
TermSpar

Bullet Classes

Jul 4th, 2016
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.16 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include <SFML\Graphics.hpp>
  4.  
  5. class Player {
  6. public:
  7.     Player(std::string directory) {
  8.         if (!playerTexture.loadFromFile(directory)) {
  9.             std::cerr << "Error\n";
  10.         }
  11.         playerSprite.setTexture(playerTexture);
  12.     }
  13.  
  14.     void movePlayer(sf::Vector2f distance) {
  15.         playerSprite.move(distance);
  16.     }
  17.  
  18.     void drawPlayer(sf::RenderWindow &window) {
  19.         window.draw(playerSprite);
  20.     }
  21.  
  22.     int getX() {
  23.         return playerSprite.getPosition().x;
  24.     }
  25.  
  26.     int getY() {
  27.         return playerSprite.getPosition().y;
  28.     }
  29.  
  30.     void setPos(sf::Vector2f newPos) {
  31.         playerSprite.setPosition(newPos);
  32.     }
  33.  
  34. private:
  35.     sf::Texture playerTexture;
  36.     sf::Sprite playerSprite;
  37. };
  38.  
  39.  
  40. #pragma once
  41.  
  42. #include <SFML\Graphics.hpp>
  43.  
  44. class Enemy {
  45. public:
  46.     Enemy(sf::Vector2f size) {
  47.         enemy.setSize(size);
  48.         enemy.setFillColor(sf::Color::Red);
  49.     }
  50.  
  51.     void drawEnemy(sf::RenderWindow &window) {
  52.         window.draw(enemy);
  53.     }
  54.  
  55.     void setPos(sf::Vector2f newPos) {
  56.         enemy.setPosition(newPos);
  57.     }
  58.  
  59.     int getLeft() {
  60.         return enemy.getPosition().x;
  61.     }
  62.  
  63.     int getBottom() {
  64.         return enemy.getPosition().y + enemy.getSize().y;
  65.     }
  66.  
  67.     bool getDestroyed() {
  68.         return isDestroyed;
  69.     }
  70.  
  71.     void getColl() {
  72.         bottom = enemy.getPosition().y + enemy.getSize().y;
  73.         left = enemy.getPosition().x;
  74.         right = enemy.getPosition().x + enemy.getSize().x;
  75.         top = enemy.getPosition().y;
  76.     }
  77.  
  78.     void checkCollision(Bullet bullet) {
  79.         if(enemy.getGlobalBounds().intersects(bullet.bounds())){
  80.             isDestroyed = true;
  81.             enemy.setPosition({ 143332, 23432 });
  82.             bullet.setDestroyed(true);
  83.         }
  84.     }
  85. private:
  86.     sf::RectangleShape enemy;
  87.     bool isDestroyed = false;
  88.     float bottom;
  89.     float left;
  90.     float right;
  91.     float top;
  92. };
  93.  
  94. #pragma once
  95.  
  96. #include <SFML\Graphics.hpp>
  97.  
  98. class Bullet {
  99. public:
  100.     Bullet() {
  101.         //Default  
  102.     }
  103.  
  104.     Bullet(sf::Vector2f size, char nDirection) {
  105.         direction = nDirection;
  106.         bullet.setFillColor(sf::Color::Blue);
  107.         bullet.setSize(size);
  108.     }
  109.  
  110.     void setDirection(char nDir) {
  111.         direction = nDir;
  112.     }
  113.  
  114.     void setPos(sf::Vector2f newPos) {
  115.         bullet.setPosition(newPos);
  116.     }
  117.  
  118.     void fire(float moveSpeed) {
  119.         if (direction == 'l') {
  120.             bullet.move(-moveSpeed, 0);
  121.         } else if (direction == 'r'){
  122.             bullet.move(moveSpeed, 0);
  123.         } else if (direction == 'u'){
  124.             bullet.move(0, -moveSpeed);
  125.         }
  126.     }
  127.  
  128.     int getRight() {
  129.         return bullet.getPosition().x + bullet.getSize().x;
  130.     }
  131.  
  132.     int getLeft() {
  133.         return bullet.getPosition().x;
  134.     }
  135.  
  136.     int getTop() {
  137.         return bullet.getPosition().y;
  138.     }
  139.  
  140.     int getBottom() {
  141.         return bullet.getPosition().y + bullet.getSize().y;
  142.     }
  143.  
  144.     void draw(sf::RenderWindow &window) {
  145.         window.draw(bullet);
  146.     }
  147.  
  148.     void setDestroyed(bool value) {
  149.         isDestroyed = value;
  150.     }
  151.  
  152.     bool getDestroyed() {
  153.         return isDestroyed;
  154.     }
  155.  
  156.     sf::FloatRect bounds(){
  157.         return bullet.getGlobalBounds();
  158.     }
  159.  
  160.     ~Bullet() {
  161.        
  162.     }
  163.  
  164. private:
  165.     sf::RectangleShape bullet;
  166.     char direction;
  167.     bool isDestroyed = false;
  168. };
  169.  
  170.  
  171. #include <iostream>
  172. #include <SFML/Graphics.hpp>
  173. #include "Bullet.h"
  174. #include "Enemy.h"
  175. #include "Player.h"
  176. #include <vector>
  177.  
  178. int main() {
  179.     sf::RenderWindow window;
  180.  
  181.     sf::Vector2i centerWindow((sf::VideoMode::getDesktopMode().width / 2) - 955, (sf::VideoMode::getDesktopMode().height / 2) - 540);
  182.  
  183.     window.create(sf::VideoMode(1900, 1000), "SFML Project", sf::Style::Titlebar | sf::Style::Close);
  184.     window.setPosition(centerWindow);
  185.  
  186.     //Player Object:
  187.     Player player("tank.png");
  188.     player.setPos(sf::Vector2f(700, 500));
  189.  
  190.     //Bullet vector:
  191.     std::vector<Bullet> bulletVec;
  192.  
  193.     //Enemy Objects:
  194.  
  195.     bool isFiring = false;
  196.     char direction = 'r';
  197.  
  198.     bool drawEnemy = true;
  199.    
  200.     //Main Loop:
  201.     while (window.isOpen()) {
  202.  
  203.         static float moveSpeed = 0.2;
  204.  
  205.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::A)) {
  206.             player.movePlayer(sf::Vector2f(-moveSpeed, 0));
  207.             direction = 'l';
  208.         } else if (sf::Keyboard::isKeyPressed(sf::Keyboard::D)) {
  209.             player.movePlayer(sf::Vector2f(moveSpeed, 0));
  210.             direction = 'r';
  211.         } else if (sf::Keyboard::isKeyPressed(sf::Keyboard::W)){
  212.             player.movePlayer(sf::Vector2f(0, -moveSpeed));
  213.         } else if (sf::Keyboard::isKeyPressed(sf::Keyboard::S)){
  214.             player.movePlayer(sf::Vector2f(0, moveSpeed));
  215.         }
  216.  
  217.         //Handle firing bullets:
  218.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space)) {
  219.             static int i = 0;
  220.             i++;
  221.             if (i <= 3) {
  222.                 isFiring = true;
  223.             } else {
  224.                 isFiring = false;
  225.                 i = 0;
  226.             }
  227.             moveSpeed = 1;
  228.         }
  229.  
  230.         sf::Event Event;
  231.  
  232.         //Event Loop:
  233.         while (window.pollEvent(Event)) {
  234.             switch (Event.type) {
  235.  
  236.             case sf::Event::Closed:
  237.                 window.close();
  238.  
  239.             case sf::Event::KeyReleased:
  240.                 if (Event.key.code == sf::Keyboard::Space) {
  241.                     isFiring = false;
  242.                 }
  243.             }
  244.         }
  245.  
  246.         window.clear();
  247.        
  248.         //Create bullet and add it to vector:
  249.         if (isFiring == true) {
  250.             Bullet newBullet(sf::Vector2f(50, 10), direction);
  251.             newBullet.setPos(sf::Vector2f(player.getX() + 90, player.getY() + 40));
  252.             bulletVec.push_back(newBullet);
  253.             isFiring = false;
  254.             sf::sleep;
  255.         }
  256.        
  257.         //Draw and fire bullet:
  258.         for (int i = 0; i < bulletVec.size(); i++) {
  259.             bulletVec[i].draw(window);
  260.             bulletVec[i].fire(40);
  261.         }
  262.  
  263.  
  264.         //Drawings:
  265.         player.drawPlayer(window);
  266.         window.display();
  267.     }
  268. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement