Hello,
I can't get a bullet to shoot. When I hit the key, nothing happens. I've posted my code. It compiles fine, but nothing happens when I press the space key, which is supposed to fire the bullet.
sf::RenderWindow GameWin;
sf::Event event;
struct PLAYER
{
sf::RectangleShape shape;
sf::Vector2f Pos;
float X, Y;
};
struct BULLET
{
sf::CircleShape shape;
sf::Vector2f Pos, Vel;
float X, Y;
float Speed;
bool Visible;
};
PLAYER player;
BULLET bullet;
int main(int argc, char* argv[])
{
GameWin.create(sf::VideoMode(800, 600, 32), "");
player.X = 800 / 2;
player.Y = 600 / 2;
player.Pos = sf::Vector2f(player.X, player.Y);
player.shape.setPosition(sf::Vector2f(player.Pos));
player.shape.setSize(sf::Vector2f(30, 30));
player.shape.setFillColor(sf::Color(0, 255, 0));
bullet.X = player.X;
bullet.Y = player.Y;
bullet.Visible = false;
bullet.Speed = 0.0f;
bullet.Pos = sf::Vector2f(bullet.X, bullet.Y);
bullet.shape.setPosition(sf::Vector2f(bullet.Pos));
bullet.shape.setScale(sf::Vector2f(10, 10));
bullet.shape.setFillColor(sf::Color(255, 0, 0));
while (GameWin.isOpen())
{
while (GameWin.pollEvent(event))
{
if (event.type == sf::Event::Closed)
{
GameWin.close();
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space))
{
bullet.Visible = true;
bullet.Speed = 10.0f;
}
}
GameWin.clear();
GameWin.draw(player.shape);
if (bullet.Visible)
{
GameWin.draw(bullet.shape);
bullet.shape.move(bullet.Speed, 0);
if (bullet.X >= 800)
{
bullet.Visible = false;
}
}
GameWin.display();
}
return 0;
}