2017-04-12 24 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_backgroundに再びロードtexture_fireするテクスチャをロードします。それは次のようにする必要があります。

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

それはコード全体をコンパイルして実行し、私が何を意味するのか分かります。 – killer

+0

私はあなたのコードを実行しました。 https://pastebin.com/6LMtdXYZ – Jenio

+0

ジェノのおかげで私はちょうど家に帰ったImmaは本当に素早くそれを試してみよう。 – killer

関連する問題