Advertisement
Felanpro

shooting algorithm

Apr 28th, 2019
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.35 KB | None | 0 0
  1. unsigned int width = 500;
  2. unsigned int height = 500;
  3. float mouseY;
  4. float mouseX;
  5. float distanceX;
  6. float distanceY;
  7. int increaser = 0;
  8. float k_value;
  9. bool shooting = false;
  10.  
  11. int main()
  12. {
  13.     sf::RenderWindow window(sf::VideoMode(width, height), "In progress");
  14.     window.setFramerateLimit(60);
  15.  
  16.     sf::RectangleShape player(sf::Vector2f(30, 30));
  17.     player.setFillColor(sf::Color::Magenta);
  18.     player.setOrigin(30 / 2, 30 / 2);
  19.     player.setPosition(width / 2, height / 2);
  20.  
  21.     sf::RectangleShape projectile(sf::Vector2f(5, 5));
  22.     projectile.setFillColor(sf::Color::Cyan);
  23.  
  24.     bool gameOver = true;
  25.     sf::Event event;
  26.     while (window.isOpen() && gameOver)
  27.     {
  28.  
  29.         while (window.pollEvent(event))
  30.         {
  31.             if (event.type == sf::Event::Closed)
  32.             {
  33.                 window.close();
  34.             }
  35.  
  36.             if (event.type == sf::Event::MouseButtonPressed)
  37.             {
  38.                 if (event.mouseButton.button == sf::Mouse::Left && shooting == false)
  39.                 {
  40.                     mouseX = event.mouseButton.x;
  41.                     mouseY = event.mouseButton.y;
  42.                     cout << "Mouse X: " << mouseX << endl;
  43.                     cout << "Mouse Y: " << mouseY << endl;
  44.  
  45.                     distanceX = mouseX - player.getPosition().x;
  46.                     distanceY = player.getPosition().y - mouseY;
  47.                     cout << "Distance X: " << distanceX << endl;
  48.                     cout << "Distance Y: " << distanceY << endl;
  49.  
  50.                     k_value = distanceY / distanceX;
  51.                     cout << k_value << endl;
  52.  
  53.                     shooting = true;
  54.                 }
  55.             }
  56.         }  
  57.  
  58.         if (shooting)
  59.         {
  60.             increaser += 5;
  61.                 if(distanceX > 0)
  62.                     projectile.setPosition(player.getPosition().x + increaser, player.getPosition().y - (increaser * k_value));
  63.                 else if(distanceX <= 0)
  64.                     projectile.setPosition(player.getPosition().x - increaser, player.getPosition().y + (increaser * k_value));
  65.  
  66.                 if (increaser > abs(distanceX))
  67.                 {
  68.                     shooting = false;
  69.                     increaser = 0;
  70.                     projectile.setPosition(-10, -10);
  71.                 }
  72.         }
  73.  
  74.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::W))
  75.             player.move(0, -3);
  76.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
  77.             player.move(-3, 0);
  78.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::S))
  79.             player.move(0, 3);
  80.         if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))
  81.             player.move(3, 0);
  82.  
  83.         window.clear(sf::Color::White); //Clear
  84.  
  85.         window.draw(player);
  86.         window.draw(projectile);
  87.  
  88.         window.display(); //Display
  89.     }
  90.  
  91.     window.draw(projectile);
  92.  
  93.     window.close();
  94.  
  95.     int pause; cin >> pause;
  96.     return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement