C ++, монитор для ввода с клавиатуры - PullRequest
3 голосов
/ 03 августа 2010

Я совершенствую свои общие навыки программирования и наткнулся на загадку.Я пишу программу, которая имитирует колонию кроликов.Как только эта программа запускается, она становится автономной, однако в любой момент пользователь должен иметь возможность нажать клавишу «k», чтобы отбросить население пополам.Я не могу придумать способ сделать это, не останавливая программу для ожидания ввода пользователя.Также я не могу придумать способ сделать так, чтобы программа отвечала немедленно (программа работает в полуреальном времени с использованием команды sleep).Есть ли способ сделать это без многопоточности и многолетнего опыта?

Ответы [ 6 ]

5 голосов
/ 03 августа 2010

Думаю, эта статья приближается к тому, что вы хотите делать без использования ncurses.

0 голосов
/ 03 августа 2010

Попробуйте ncurses это довольно стандартно в среде UNIX. Он имеет специальные функции для ожидания ввода пользователя с таймаутом, если никто не нажимает какую-либо клавишу.

0 голосов
/ 03 августа 2010

Библиотека типа Qt может вам немного помочь.Вы должны создать объект «application», полученный из QCoreApplication.В переопределении QCoreAPplication::event(Event*) вы обрабатываете событие, если оно QKeyEvent содержит Qt::Key_K.Это переносимо для Windows, Mac и Linux.

0 голосов
/ 03 августа 2010

Я не уверен, является ли это стандартным C ++, но вы можете использовать функцию C, которая проверяет, доступен ли ключ:

#include <conio.h>

int wmain()
{
    if(_kbhit())
    {
        char ch = _getch();
    }
}

EDIT: как упоминал Zan Lynx, это не стандартный C ++или даже стандартный C, поэтому заголовка нет.Он прекрасно работает в компиляторах Visual C ++ или DOS C ++.

0 голосов
/ 03 августа 2010

Взгляните на GetAsyncKeyState Вызов Windows API. Вы должны быть в состоянии найти подходящее место, чтобы вставить это в свой код, чтобы обнаружить нажатие клавиши.

0 голосов
/ 03 августа 2010

C ++ ничего не знает о клавиатурах, поэтому любой ответ на этот вопрос зависит от вашей операционной системы и ее библиотек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...