Планирование уроков на учебный год (по учебнику К.Ю. Полякова, Е.А. Еремина, углубленный уровень)



Уроки 58 - 59
§45. Управление с помощью клавиатуры


Содержание урока


Работа с клавиатурой

Управление с ожиданием

Управление по требованию

Выводы. Интеллект-карта

Вопросы и задания

Практическая работа № 37 «Управление в режиме ожидания»

Практическая работа № 38 «Управление по требованию»


Управление по требованию



Что происходило в предыдущей программе, если пользователь не нажимал никакую клавишу? Всегда ли такой вариант подходит для программирования игр?

Во многих случаях нужен другой режим: события развиваются независимо от того, нажал игрок какую-либо клавишу или нет. Он вмешивается тогда, когда считает нужным. Это управление по требованию. Для того чтобы использовать такое управление, надо определить момент, когда пользователь нажимает клавишу, и реагировать на это нажатие.

Основной цикл программы можно записать так:

нц пока да

| если нажата клавиша, изменить направление движения

| нарисовать шарик

| ждать 20 мс

| стереть шарик

| переместить шарик

кц


В предыдущем пункте этого параграфа найдите, как можно определить, что пользователь нажал какую-то клавишу.

Мы напишем программу, в которой шарик постоянно движется, изменяя свое направление при нажатии клавиш-стрелок. Если нажать на пробел (обозначение этой клавиши — КЛ_ПРОБЕЛ), шарик останавливается. Часть программы, где при нажатии клавиш изменяется направление движения, выглядит так:

если сигнал клав то

с:=код клав

| изменить направление движения

все


Что произойдёт, если команда сигнал клав вернёт значение нет (никакая клавиша не нажата)?
Как изменяются координаты шарика при движении в каждом из четырёх направлений?

Поскольку величины, на которые изменяются координаты, тоже изменяются, мы введём новые переменные:

dx — изменение х-координаты за один шаг;
dy — изменение у-координаты за один шаг.

Каждая переменная (независимо от другой) может быть положительной, отрицательной или равной нулю. Следующие строчки задают перемещение шарика:

х:=x+dx

у:=y+dy


Куда именно передвинется шарик, зависит от значений dx и dy. Поэтому для изменения направления движения при нажатии клавиши достаточно изменить dx и dy:

если c=KЛ_BЛEBO то dx:=-5; dy:=0 все

если с=КЛ_ВПРАВО то dx:=5; dy:=0 все

если с=КЛ_ВВЕРХ то dx:=0; dy:=-5 все

если с=КЛ_ВНИЗ то dx:=0; dy:=5 все

если с=КЛ_ПРОБЕЛ то dx:=0; dy:=0 все


В последней строке мы останавливаем шарик при нажатии клавиши пробела. Эти команды нужно поставить в основной цикл вместо комментария «изменить направление движения». Полную программу вы можете собрать самостоятельно.

Следующая страница Выводы. Интеллект-карта



Cкачать материалы урока







Наверх