2017-04-12 1 views
0

그래서 간단한 공간 게임을 만들기 위해 SFML과 C++을 사용하고 있습니다. 생명의 탄생을 위해서는 총알을 얻을 수 없습니다. 이것은 내 소스입니다 ... 난 그냥 게임에 새로운 스프라이트를 산란하는 방법에 대해 배우려고 노력하고 있습니다.SFML 글 머리 기호가 생성되지 않습니다.

```대신로드 질감의

#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

Jeno 덕택에 방금 집에 와서 Imma가 진짜 빨리 시험해 보겠습니다. – killer

관련 문제