| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > [C/C++]Движение: управляемое и неуправляемое |
| Автор: DevilHell 9.2.2009, 18:41 | ||
| Задана задача. Тренажер теннесиста. 3 стены в форме буквы "П". теннесист подает мячи и отбивает их. считать сколько отбил, сколько пропустил. А проблема вот в чем. Стены сделал. Сделал теннесиста (подобие - как выглядет не важно). Сделал движение теннеста. (лево-право, больше не надо). Теннесист движется от нажатий кнопок лево-право через функцию getch(). Но как сделать движение мяча? через getch() программа ждет нажания клавиши. А мне надо что бы мяч двигался не зависимо от теннесиста. А теннесиста двигать по мере надобности. Как это организовать? Среда С++ под ДОС Код если надо. (Мяча нет)
|
| Автор: Earnest 9.2.2009, 18:47 |
| Насколько я помню, в досе есть какая-то функция, которая опрашивает клавиатуру и сразу возвращает управление. Второй вариант - прерывание. Имя функции и номер прерывания - не помню, но найти в документации, думаю, сможешь. Если будешь использовать функцию, то нужно организовать код как цикл перемещения мяча + опрос клавиатуры и если надо, перемещение игрока. Если прерывание - то перемещение игрока отдельно пишешь. |
| Автор: GoldFinch 9.2.2009, 18:48 |
| я хз как это в С++ но тебе надо функцию ДОС которая не ждет символ с клавиатуры, а возвращает его наличие в буфере клавиатуры наверное такая библиотечная функция есть, а если нет - юзай функции ДОС Добавлено через 39 секунд Earnest, почти синхронно |
| Автор: Earnest 9.2.2009, 18:52 |
| Есть, точно, я использовала, но так давно, что как будто в другой жизни. И прерывания тоже... Ах как это все просто в Досе было... возможностей кот наплакал, зато все под контролем... |
| Автор: Sartorius 9.2.2009, 19:11 |
| kbhit() |
| Автор: DevilHell 9.2.2009, 22:00 |
| Большое всем спасибо. Очень помогли. |
| Автор: DevilHell 9.2.2009, 23:01 |
| Начал пробывать делать. kbhit() - работает не так как надо. она действительно возращает нажатые клавиши. Но не все. Клавиши со стрелками не сканируются. Может еще есть какие функции? Или как можно сделать через прерывания? (На С++ начал писать 2 месяца назад) |
| Автор: Sartorius 10.2.2009, 11:37 |
При нажатии стрелки в буффер попадает два символа 0x00 и код стрелки. Проверяй на 0 и читай буффер еще раз. |
| Автор: DevilHell 10.2.2009, 14:04 | ||
| А можно пример? я не знаю как это сделать и как мне получить код клавиши для дальнейшего использования. Использую такой пример. Что надо поменять?
|
| Автор: w1zard350 4.5.2009, 17:28 | ||
Пример:
Сейчас занимаюсь тем же - управление с клавы под досом и тема для меня очень актуальна. Никак не могу найти в инете решения. Вот здесь прочитал про прерывания, я не шарю что это и как с этим работать, но видимо пришел момент к изучению |
| Автор: zim22 4.5.2009, 19:34 |
ответ http://forum.vingrad.ru/forum/topic-256303.html |
| Автор: w1zard350 6.5.2009, 10:02 |
| Это не то, что мне надо. Мне нужно реализовать, чтобы можно было работать сразу с многими клавишами, т.е. "зажатыми". Ответ нашел здесь: dklab.ru/doc/keyboard.html |
| Автор: DevilHell 6.5.2009, 22:05 | ||
я реализовал вот так.
правда тут получилось одно "НО". Kod принимает код клавиши только на 2-м цикле. Но для меня например это не существенно. |