Возникли проблемы в управлении спрайтом. Коды клавиш управления храню в (int keyLeft, keyRight), они могут изменяться. Появляется системная задержка винды перед непрерывным вводом клавиши. Если цикл while закрываю после строки window.close(), спрайт движется постоянно влево или вправо после однократного нажатия клавиши.
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
if (sf::Event::KeyPressed) {
if(event.key.code==keyLeft) ball.x-=15+platSpeed/2,0;
else if(event.key.code==keyRight) ball.x+=15+platSpeed/2,0;
else if(event.key.code==27) menu(window, text);
}
}
Попробуйте использовать sf::Keyboard::isKeyPressed(), вместо Event. Также цикл проверки события "Closed" лучше делать отдельно от обработки. Например вот так:
struct Keys {
sf::Keyboard::Key keyLeft = sf::Keyboard::A;
sf::Keyboard::Key keyRight = sf::Keyboard::D;
sf::Keyboard::Key keyMenu = sf::Keyboard::F;
} keys;
while (window.isOpen()) {
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
}
if(sf::Keyboard::isKeyPressed(keys.keyLeft))
ball.x-=15+platSpeed/2,0;
if(sf::Keyboard::isKeyPressed(keys.keyLeft))
ball.x+=15+platSpeed/2,0;
if(sf::Keyboard::isKeyPressed(keys.keyMenu))
menu(window, text);
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники