Итак, я работаю над игрой в C ++, используя SFML, но по какой -то причине, когда я закрываю окно с побегом (это полноэкранная программа), она просто вновь откроет его, и я не знаю, почему это делает это. Мне нужно сценарии, которые являются player_logic.cpp и main.cpp, поэтому я надеюсь, что кто -то может помочь мне с этим.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>
Это Player_logic, где я имитирую Evryhting, который мне нужен в отношении персонажа, подобного движению и параметрам. < /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
Подробнее здесь: https://stackoverflow.com/questions/797 ... er-closing
SFML открывает окно после закрытия ⇐ C++
Программы на C++. Форум разработчиков
1755216055
Anonymous
Итак, я работаю над игрой в C ++, используя SFML, но по какой -то причине, когда я закрываю окно с побегом (это полноэкранная программа), она просто вновь откроет его, и я не знаю, почему это делает это. Мне нужно сценарии, которые являются player_logic.cpp и main.cpp, поэтому я надеюсь, что кто -то может помочь мне с этим.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>
Это Player_logic, где я имитирую Evryhting, который мне нужен в отношении персонажа, подобного движению и параметрам. < /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
Подробнее здесь: [url]https://stackoverflow.com/questions/79735913/sfml-reopens-window-after-closing[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия