2017-04-12 120 views
0

所以我使用SFML和C++來創建一個簡單的空間遊戲。爲了生命不能得到子彈產卵。這是我的來源...我只是想學習如何去產生新的精靈進入遊戲。SFML Bullet不產卵

```

#include <SFML/Graphics.hpp> 
#include <SFML/Window.hpp> 
#include <iostream> 
#include <string> 

int main() 
{ 
// Create the main window 
sf::RenderWindow app(sf::VideoMode(800, 600), "SFML window"); 

// Load a sprite to display 
sf::Texture texture_sprite; 
if (!texture_sprite.loadFromFile("cb.bmp")) 
    return EXIT_FAILURE; 
sf::Sprite sprite(texture_sprite); 

sf::Texture texture_background; 
if (!texture_background.loadFromFile("space.png")) 
    return EXIT_FAILURE; 
sf::Sprite background(texture_background); 

sf::Texture texture_fire; 
if (!texture_background.loadFromFile("fire_1.png")) 
    return EXIT_FAILURE; 
sf::Sprite fire_sprite(texture_fire); 
fire_sprite.setScale(4.0f, 1.6f); 


std::string direction = ""; 
bool fire = false; 

// Start the game loop 
while (app.isOpen()) 
{ 
    // Process events 
    sf::Event event; 
    while (app.pollEvent(event)) 
    { 
     if (event.type == sf::Event::Closed) 
     { 
      app.close(); 
     } 
     else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left) && sprite.getPosition().x > -20) 
      { 
      sprite.move(-10,0); 
      std::cout << "X = " << sprite.getPosition().x << std::endl; 
      std::cout << "Y = " << sprite.getPosition().y << std::endl; 
      direction = "Left"; 
      } 
     else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right) && sprite.getPosition().x < 670) 
      { 
      sprite.move(10,0); 
      std::cout << "X = " << sprite.getPosition().x << std::endl; 
      std::cout << "Y = " << sprite.getPosition().y << std::endl; 
      direction = "Right"; 
      } 
     else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up) && sprite.getPosition().y > 0) 
      { 
      sprite.move(0,-10); 
      std::cout << "X = " << sprite.getPosition().x << std::endl; 
      std::cout << "Y = " << sprite.getPosition().y << std::endl; 
      direction = "Up"; 
      } 
     else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down) && sprite.getPosition().y < 480) 
      { 
      sprite.move(0,10); 
      std::cout << "X = " << sprite.getPosition().x << std::endl; 
      std::cout << "Y = " << sprite.getPosition().y << std::endl; 
      direction = "Down"; 
      } 
     else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Space)) 
      { 
      fire = true; 

      } 
     else if (event.type == sf::Event::KeyReleased && event.key.code == sf::Keyboard::Space) 
      { 
      fire = false; 
      } 
      if(fire == true) 
    { 
     std::cout << "FIRE!!!" << std::endl; 
     fire_sprite.setPosition((sprite.getPosition())); 

     std::cout << "Fire positions is " <<fire_sprite.getPosition().x << " " << fire_sprite.getPosition().y << "The direction is " << direction <<std::endl; 
    } 

    } 

    app.clear(); 

    // Draw the sprite 

    app.draw(background); 
    app.draw(sprite); 
    app.draw(fire_sprite); 
    // Update the window 
    app.display(); 


} 

return EXIT_SUCCESS; 
} 

```

+0

更好地獲得更多的細節或它很難幫助你。 – xhg

回答

0
sf::Texture texture_fire; 
if (!texture_background.loadFromFile("fire_1.png")) 

,而不是加載的紋理來texture_fire你再次加載到texture_background。它應該是:

if (!texture_fire.loadFromFile("fire_1.png")) 
+0

這就是整個代碼編譯和運行它,你會看到我的意思 – killer

+0

我沒有運行你的代碼,並通過這個小的修正它工作得很好。 https://pastebin.com/6LMtdXYZ – Jenio

+0

Jeno謝謝我剛到家Imma快速地嘗試它 – killer