Использование кравиатуры в PascalABC, Использование клавиатуры для смены направления движения объекта |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Использование кравиатуры в PascalABC, Использование клавиатуры для смены направления движения объекта |
looogle |
17.05.2011 23:13
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: 0 |
Всем доброго времени суток!
Такая проблема: я использую цикл для смены координат объекта, то есть за один проход цикла перерисовываю круг с помощью DrawCircle на новое место с изменившейся координатой. Запускается цикл нажатием клавиши, соответствующей направлению движения. Вот кусок кода:
Программы выполняется так: Открывается окно, я нажимаю Enter, потом стрелку (вправо, влево, вверх или вниз) и круг (объект) начинает плавно перерисовываться или двигаться в одну (заданную мно стрелками) сторону. Проблема в том, что при повторном нажатии направление движение не меняется. Я понимаю, что впринципе так и должно быть. Но вот как сделать чтобы напраление менялось я не знаю. Пожалуйста, помогите. Сообщение отредактировано: looogle - 17.05.2011 23:14 |
IUnknown |
18.05.2011 1:25
Сообщение
#2
|
a.k.a. volvo877 Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: 627 |
Цитата Но вот как сделать чтобы напраление менялось я не знаю. Вот так:uses graphabc; У тебя тут событийное программирование. Отрисовка не должна происходить в обработчике KeyDown. Этот обработчик вызывается каждый раз, когда происходит событие: нажата какая-то кнопка. Вот в момент нажатия ты должен установить какой-то признак, какую-то переменную, чтоб потом в основном цикле с ней работать. |
looogle |
18.05.2011 15:05
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: 0 |
Спасибо огромное! Понял свою ошибку.
|
Гость |
26.04.2015 18:45
Сообщение
#4
|
Гость |
А как выйти из обработчика? Ну, то есть, он отработал, но после этого надо выполнить код, который находиться после точки вызова обработчика. Что только не пробовал, ничего не помогло.
|
looogle |
28.04.2015 15:43
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: 0 |
А как выйти из обработчика? Ну, то есть, он отработал, но после этого надо выполнить код, который находиться после точки вызова обработчика. Что только не пробовал, ничего не помогло. Уберите Halt;в процедуре Start;выполнение вернётся в обратно main; Сообщение отредактировано: looogle - 28.04.2015 15:44 |
Текстовая версия | 3.11.2024 12:37 |