0 / 0 / 0
Регистрация: 02.06.2011
Сообщений: 7
|
||||||
1 | ||||||
Прерывание бесконечного цикла с возвратом значения нажатой клавиши в main()23.03.2012, 20:10. Показов 4348. Ответов 6
Метки нет (Все метки)
Вкратце, в функции main() есть некий объект класса - scene, также есть бесконечно работающий цикл while(1), в котором вызывается функция-член типа char того же класса: char ch=scene.start(), она должна возвращать значение нажатой клавиши, для дальнейшей работы с этим значением в операторе switch().
Тело функции char THandler::start() тоже должно содержать бесконечно работающий цикл:
0
|
23.03.2012, 20:10 | |
Ответы с готовыми решениями:
6
Прерывание бесконечного цикла нажатием горячей клавиши Прерывание бесконечного цикла Прерывание бесконечного цикла по кнопке Выход из бесконечного цикла по нажатию клавиши |
12 / 12 / 1
Регистрация: 22.03.2012
Сообщений: 42
|
|
23.03.2012, 21:10 | 2 |
К примеру, так:
Код
char cMyChar = getchar(); // в переменной cMyChar хранятся нажатые клавиши if(cMyChar == 'w') // если нажали w, то цикл остановлен break;
0
|
5 / 5 / 0
Регистрация: 01.12.2010
Сообщений: 109
|
|
23.03.2012, 21:31 | 3 |
0
|
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
|
|
23.03.2012, 21:32 | 4 |
kbhit()
0
|
0 / 0 / 0
Регистрация: 02.06.2011
Сообщений: 7
|
||||||
23.03.2012, 22:08 [ТС] | 5 | |||||
верно, поэтому такой вариант не подходит для непрерывной работы программы, которая управляет данными по таймеру в зависимости от нажатых клавиш.
скажем, в цикле while(1) использовался:
Поэтому в main() вызывается scene.start() в бесконечном цикле while(1), а из неё передается код для вызова определенных методов в switch(), который в свою очередь обрабатывает данные и на 2м шаге опять вызывает scene.start()... kbhit() возвращает не ноль в случае нажатия клавиши клавиатуры и ноль в противном случае, а надо char или (int)char.
0
|
0 / 0 / 0
Регистрация: 02.06.2011
Сообщений: 7
|
||||||
24.03.2012, 02:23 [ТС] | 6 | |||||
В общем после небольших экспериментов, получилось что-то более-менее приемлемое с частотой обновления кадров ~20/сек...
0
|
0 / 0 / 0
Регистрация: 27.03.2015
Сообщений: 10
|
|
31.03.2016, 05:21 | 7 |
Сработало как часики большое спасибо
0
|
31.03.2016, 05:21 | |
31.03.2016, 05:21 | |
Помогаю со студенческими работами здесь
7
Есть ли возможность реализовать прерывание цикла консольного приложения нажатием клавиши? Возврат значения нажатой клавиши Опрос кода клавиши для остановки бесконечного цикла Выход из бесконечного цикла в GraphABC при нажатии клавиши (любой) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |