Как вызвать функцию без нажатия кнопки

У меня есть домашнее задание по созданию игры. Поэтому я создал игру, которая генерирует случайные числа, отображает их, затем через несколько секунд числа исчезают, и пользователь должен вводить их в порядке убывания. Игра работает нормально, и весь вывод правильный... но проблема в том, что я создал разные функции для создания чисел, их упорядочивания, принятия... и мне приходится нажимать клавишу ввода несколько раз каждый раз, когда приходит вызов функции.

Есть ли способ, с помощью которого эти функции вызываются без нажатия какой-либо клавиши, чтобы программа работала без нажатия клавиши ввода?


person user1937928    schedule 30.12.2012    source источник
comment
Вы создали игру? Есть ли какой-нибудь пример кода, которым вы хотели бы поделиться с нами? Потому что, говоря, что вы создали игру, вы на самом деле мало что сказали.   -  person Darin Dimitrov    schedule 30.12.2012
comment
Я добавил тег sleep к вашему вопросу, вы должны просмотреть предыдущие вопросы с этим тегом для некоторых подсказок   -  person Jonathan Wakely    schedule 30.12.2012
comment
Скорее всего, вы организовали свой код таким образом, что он ожидает ввода данных пользователем (несколько раз), прежде чем перейти к следующему этапу.   -  person Bart van Ingen Schenau    schedule 30.12.2012


Ответы (1)


Извлечено из Захват символов из стандартного ввод, не дожидаясь нажатия клавиши ввода

Это невозможно переносимо в чистом С++, потому что это слишком сильно зависит от используемого терминала, который может быть подключен к стандартному вводу (обычно они буферизуются строкой). Однако вы можете использовать для этого библиотеку:

  1. conio доступен с компиляторами Windows. Используйте функцию _getch(), чтобы получить символ, не дожидаясь нажатия клавиши ввода. Я не часто разрабатываю Windows, но я видел, как мои одноклассники просто включали conio.h и использовали его. См. conio.h в Википедии. В нем указан getch, объявленный устаревшим в Visual C++.
  2. curses доступны для Linux, совместимые реализации curses также доступны для Windows. Он также имеет функцию получения. (попробуйте man getch, чтобы просмотреть его справочную страницу). См. Проклятия в Википедии.

Я бы порекомендовал вам использовать curses, если вы стремитесь к кросс-платформенной совместимости. Тем не менее, я уверен, что есть функции, которые вы можете использовать для отключения буферизации строк (я полагаю, что это называется «сырой режим», в отличие от «приготовленного режима» (посмотрите на man stty)). Проклятия справятся с этим для вас портативным способом, если я не ошибаюсь.

person Syntactic Fructose    schedule 30.12.2012