2010-08-02 3 views
2

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

+0

'Я пишу программу, которая имитирует колонию bunnys. Как только эта программа запускается, она является автономной. --- Что вы должны делать с первым кроликом, чтобы запустить программу? –

+0

конструктор для колонии семена его с 5 кроликами случайным образом мужчина или женщина – Laharah

+0

Возможный дубликат: http://stackoverflow.com/questions/448944 - хотя абстракции C++ нет. Также проверьте http://rabbit.eng.miami.edu/info/functions/asynchkbd.html – jweyrich

ответ

-1

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

+0

любую идею, где я должен начать искать? – Laharah

+0

Сообщите нам, какие операционные системы вы хотите, чтобы этот код работал. – tpdi

+4

Этот ответ должен быть комментарием. – Anthony

0

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

+0

Regardint tpdis comment - абсолютно правильно - я предполагаю Windows. –

+0

знать что-нибудь для * nix систем? – Laharah

0

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

#include <conio.h> 

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

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

+0

Это не стандарт, это только Windows. –

5

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

0

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

0

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

Смежные вопросы