2017-04-12 3 views
0

Also verwende ich SFML und C++, um ein einfaches Weltraumspiel zu erstellen. Für das Leben von kann keine Kugel zum Laichen bekommen. Das ist meine Quelle ... Ich versuche nur zu lernen, wie man neue Sprites in ein Spiel bringt.SFML Bullet nicht spawnen

`` `

#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

Besser bekommen mehr Details oder es ist schwer, Ihnen zu helfen. – xhg

Antwort

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

Statt Laden Textur texture_fire Sie wieder zu texture_background laden. Es sollte sein:

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

Das ist der ganze Code kompilieren und ausführen und youll sehen, was ich meine – killer

+0

Ich habe Ihren Code ausgeführt und mit dieser kleinen Korrektur funktioniert es ganz gut. https://pastebin.com/6LMtdXYZ – Jenio

+0

Jeno danke Ich bin gerade nach Hause gekommen Imma versuche es wirklich schnell – killer