2017-04-12 3 views
0

Donc j'utilise SFML et C++ pour créer un jeu d'espace simple. Pour la vie de ne peut pas obtenir une balle pour se reproduire. C'est ma source ... J'essaie juste d'apprendre comment lancer de nouveaux sprites dans un jeu.SFML Bullet ne se reproduit pas

`` `

#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

Mieux obtenir plus de détails ou il est difficile de vous aider. – xhg

Répondre

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

lieu de texture de chargement pour vous texture_fire charger à nouveau texture_background. Il devrait être:

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

C'est tout le code compiler et exécutez-le et vous verrez ce que je veux dire – killer

+0

J'ai exécuté votre code et avec cette petite correction cela fonctionne très bien. https://pastebin.com/6LMtdXYZ – Jenio

+0

Jeno merci je viens de rentrer à la maison Imma l'essayer vraiment rapide – killer