by Anonymous » 18 Aug 2025, 18:31
Ich arbeite an einem Spiel in C ++ mit SFML, aber aus irgendeinem Grund, wenn ich das Fenster mit Escape (es ein Vollbildprogramm) schließe, wird es einfach wieder geöffnet und ich weiß nicht, warum es das tut. Ich muss Skripte, die Player_logic.cpp und main.cpp < /p>
sind
Code: Select all
int main() {
sf::RenderWindow window(
sf::VideoMode(windowWidth, windowHeight),
"Zombie Game",
sf::Style::None
);
window.setFramerateLimit(60);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}
if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape) {
window.close();
}
}
window.clear(sf::Color::Black);
createPlayer(window, windowWidth, windowHeight);
window.display();
}
return 0;
}
< /code>
Dies ist Player_logic, in dem ich das Evryhing simuliere, das ich über den Characther -ähnlichen Bewegung und Paramatern brauche. < /p>
#include
#include
void createPlayer(sf::RenderWindow& window, int windowWidth, int windowHeight) {
static float playerPosX = windowWidth / 2.f;
static float playerPosY = windowHeight / 2.f;
static float stamina = 100.f;
float playerRadius = 30.f;
float speed = 3.f;
// Sprinting
if (sf::Keyboard::isKeyPressed(sf::Keyboard::LShift) || sf::Keyboard::isKeyPressed(sf::Keyboard::RShift)) {
if (stamina > 0.f) {
speed = 5.f;
stamina -= 0.333f;
} else {
speed = 3.f;
}
}
// Movement
if (sf::Keyboard::isKeyPressed(sf::Keyboard::A)) playerPosX -= speed;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::D)) playerPosX += speed;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::W)) playerPosY -= speed;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::S)) playerPosY += speed;
// Optional: regenerate stamina slowly
if (!sf::Keyboard::isKeyPressed(sf::Keyboard::LShift) && !sf::Keyboard::isKeyPressed(sf::Keyboard::RShift)) {
stamina += 0.2f;
if (stamina > 100.f) stamina = 100.f;
}
sf::CircleShape player(playerRadius);
player.setFillColor(sf::Color::Green);
player.setOrigin(playerRadius, playerRadius);
player.setPosition(playerPosX, playerPosY);
window.draw(player);
std::cout
Ich arbeite an einem Spiel in C ++ mit SFML, aber aus irgendeinem Grund, wenn ich das Fenster mit Escape (es ein Vollbildprogramm) schließe, wird es einfach wieder geöffnet und ich weiß nicht, warum es das tut. Ich muss Skripte, die Player_logic.cpp und main.cpp < /p>
sind[code]int main() {
sf::RenderWindow window(
sf::VideoMode(windowWidth, windowHeight),
"Zombie Game",
sf::Style::None
);
window.setFramerateLimit(60);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}
if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape) {
window.close();
}
}
window.clear(sf::Color::Black);
createPlayer(window, windowWidth, windowHeight);
window.display();
}
return 0;
}
< /code>
Dies ist Player_logic, in dem ich das Evryhing simuliere, das ich über den Characther -ähnlichen Bewegung und Paramatern brauche. < /p>
#include
#include
void createPlayer(sf::RenderWindow& window, int windowWidth, int windowHeight) {
static float playerPosX = windowWidth / 2.f;
static float playerPosY = windowHeight / 2.f;
static float stamina = 100.f;
float playerRadius = 30.f;
float speed = 3.f;
// Sprinting
if (sf::Keyboard::isKeyPressed(sf::Keyboard::LShift) || sf::Keyboard::isKeyPressed(sf::Keyboard::RShift)) {
if (stamina > 0.f) {
speed = 5.f;
stamina -= 0.333f;
} else {
speed = 3.f;
}
}
// Movement
if (sf::Keyboard::isKeyPressed(sf::Keyboard::A)) playerPosX -= speed;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::D)) playerPosX += speed;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::W)) playerPosY -= speed;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::S)) playerPosY += speed;
// Optional: regenerate stamina slowly
if (!sf::Keyboard::isKeyPressed(sf::Keyboard::LShift) && !sf::Keyboard::isKeyPressed(sf::Keyboard::RShift)) {
stamina += 0.2f;
if (stamina > 100.f) stamina = 100.f;
}
sf::CircleShape player(playerRadius);
player.setFillColor(sf::Color::Green);
player.setOrigin(playerRadius, playerRadius);
player.setPosition(playerPosX, playerPosY);
window.draw(player);
std::cout