@IliaNeverov

Как реализовать реакцию на комбинации клавиш?

Как в SFML для двух одновременно зажатых клавиш выполнить действие , так чтобы действия для каждой из клавиш по отдельности не выполнялись?

Например:
if (sf::Keyboard::isKeyPressed(sf::Keyboard::S)) {
	function1();
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::D)) {
	function2();
}

Как вызвать функцию 3 когда зажаты s и d ,но так чтобы не вызывались функция 1 и функция 2?
  • Вопрос задан
  • 131 просмотр
Решения вопроса 3
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
if (S && D) {
  functino3();
} else if (S) {
  function1();
} else if (D) {
  function2();
}
Ответ написан
Комментировать
@Spartanec33
Самое простое, что можно сделать, так это дописать условия для первых двух функций. Например, чтобы первая функция выполнялась только тогда, когда зажата S и не зажата D. Со второй аналогично. Третья функция будет вызываться при одновременном зажатии.
Ответ написан
Комментировать
maaGames
@maaGames
Погроммирую программы
Если реакция может быть на S, D и S+D, то никак. Одновременно две клавиши человек никогда не нажмёт. Поэтому надо собирать стек из нажатых клавиш и анализировать либо в момент отпускания кнопки, либо реагировать на кнопки с задержкой. Успел в течении 100миллисекунд нажать две кнопки, то делать действие для комбинации. Не успел - это два последовательных независимых нажатия.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы