![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| DevilHell |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 9.2.2009 Репутация: нет Всего: нет |
Задана задача. Тренажер теннесиста. 3 стены в форме буквы "П". теннесист подает мячи и отбивает их. считать сколько отбил, сколько пропустил.
А проблема вот в чем. Стены сделал. Сделал теннесиста (подобие - как выглядет не важно). Сделал движение теннеста. (лево-право, больше не надо). Теннесист движется от нажатий кнопок лево-право через функцию getch(). Но как сделать движение мяча? через getch() программа ждет нажания клавиши. А мне надо что бы мяч двигался не зависимо от теннесиста. А теннесиста двигать по мере надобности. Как это организовать? Среда С++ под ДОС Код если надо. (Мяча нет)
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Насколько я помню, в досе есть какая-то функция, которая опрашивает клавиатуру и сразу возвращает управление. Второй вариант - прерывание. Имя функции и номер прерывания - не помню, но найти в документации, думаю, сможешь.
Если будешь использовать функцию, то нужно организовать код как цикл перемещения мяча + опрос клавиатуры и если надо, перемещение игрока. Если прерывание - то перемещение игрока отдельно пишешь. -------------------- ... |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
я хз как это в С++ но тебе надо функцию ДОС которая не ждет символ с клавиатуры, а возвращает его наличие в буфере клавиатуры
наверное такая библиотечная функция есть, а если нет - юзай функции ДОС Добавлено через 39 секунд Earnest, почти синхронно |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Есть, точно, я использовала, но так давно, что как будто в другой жизни. И прерывания тоже...
Ах как это все просто в Досе было... возможностей кот наплакал, зато все под контролем... -------------------- ... |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 8 Всего: 37 |
kbhit()
|
|||
|
||||
| DevilHell |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 9.2.2009 Репутация: нет Всего: нет |
Большое всем спасибо. Очень помогли.
|
|||
|
||||
| DevilHell |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 9.2.2009 Репутация: нет Всего: нет |
Начал пробывать делать.
kbhit() - работает не так как надо. она действительно возращает нажатые клавиши. Но не все. Клавиши со стрелками не сканируются. Может еще есть какие функции? Или как можно сделать через прерывания? (На С++ начал писать 2 месяца назад) |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 8 Всего: 37 |
||||
|
||||
| DevilHell |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 9.2.2009 Репутация: нет Всего: нет |
А можно пример? я не знаю как это сделать и как мне получить код клавиши для дальнейшего использования.
Использую такой пример. Что надо поменять?
|
|||
|
||||
| w1zard350 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 4.5.2009 Репутация: нет Всего: нет |
Пример:
Сейчас занимаюсь тем же - управление с клавы под досом и тема для меня очень актуальна. Никак не могу найти в инете решения. Вот здесь прочитал про прерывания, я не шарю что это и как с этим работать, но видимо пришел момент к изучению |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
||||
|
||||
| w1zard350 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 4.5.2009 Репутация: нет Всего: нет |
Это не то, что мне надо. Мне нужно реализовать, чтобы можно было работать сразу с многими клавишами, т.е. "зажатыми". Ответ нашел здесь: dklab.ru/doc/keyboard.html
|
|||
|
||||
| DevilHell |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 9.2.2009 Репутация: нет Всего: нет |
я реализовал вот так.
правда тут получилось одно "НО". Kod принимает код клавиши только на 2-м цикле. Но для меня например это не существенно. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |