Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2009, 20:11   #1
Эльфе
Новичок
Джуниор
 
Регистрация: 24.05.2009
Сообщений: 1
По умолчанию Ввод команды с клавиатуры во время бесконечного цикла в С

Прошу помощи у умных людей,ибо сам глуп и раздолбай(((

СУть проблемы: есть бесконечный цикл (игра "жизнь", думаю, многим известна). Каждый раз после того, как вычисляется новое поколение, нужно выводить на экран полученную карту с живыми клетками и в течение короткого промежутка времени (скажем, секунды) можно ввести команду с клавиатуры (допустим, только цифру).
Я прописал всю программу, алгоритм, сделал бесконечный цикл ( while (command!=1) и в конце Sleep (1000), дабы было время на введение команды). Всякие scanf и С++шные cin ждут ввода команды до победного конца, но требуется, чтобы они ждали только эти самые тысячу миллисекунд. Как реализовать? Помогите, плз!
Эльфе вне форума Ответить с цитированием
Старый 24.05.2009, 21:18   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

В заголовочном файле <conio.h> есть функция kbhit() возвращает 1 если нажата какая-либо клавиша и 0 если не нажато никакой.

Вот кусок программы, которая захватывает нажатие клавиши.

Код:
int c=0;
while(c!=49)
{
cout<<"Получение кода клавиши"<<endl;
if(kbhit())
{c= getch();
cout<<"Нажата клавиша с кодом "<<c<<endl;}
else{cout<<"Никакая клавиша не нажата"<<endl;}
}
Данный цикл будет идти, пока не нажмешь клавишу с кодом 49 (это цифра "1" на клавиатуре). Это так, для примера, думаю дальше ты сам сообразишь, как выход из цикла организовать.

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

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 24.05.2009 в 21:27.
ROD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выход из бесконечного цикла TilerDerton Общие вопросы Delphi 9 10.09.2010 08:48
Ввод чисел с клавиатуры SAVIK Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 19 26.05.2008 12:54
Ввод элементов массива Х с помощью цикла for: veter_s_morya Паскаль, Turbo Pascal, PascalABC.NET 4 13.05.2008 18:19
ввод данных с клавиатуры juden Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 07.05.2008 18:05
Как выйти из бесконечного цикла! Эдуард Общие вопросы C/C++ 11 02.03.2008 19:15