Управление с ожиданием
Практическая работа № 37 «Управление в режиме ожидания»
Практическая работа № 38 «Управление по требованию»
Сначала научимся управлять каким-то объектом, например изображением шарика (см. предыдущий параграф), в режиме ожидания. Это значит, что программа ждёт нажатия клавиши-стрелки, определяет её код и после этого перемещает шарик на экране в нужную сторону.
Основной цикл программы можно написать так:
нц пока да
Шарик (х, у, желтый)
с:=код клав
Шарик (х, у, синий)
| переместить шарик
кц
Здесь используется цикл с условием нц пока да, причём условие (да) всегда истинно, поэтому цикл будет работать бесконечно, пока мы не остановим программу.
Вспомните, что означают два вызова процедуры Шарик в предыдущей программе.
В строке программы
с:=код клав
мы сказали, что исполнителю нужно:
1) ждать, пока не будет нажата какая-нибудь клавиша;
2) когда клавиша нажата, сохранить её код в переменной с.
Найдите и исправьте логическую ошибку в программе:
нц пока да
Шарик (х, у, жёлтый)
Шарик (х, у, синий)
с:=код клав
| переместить шарик
кц
Что произойдёт, если использовать именно этот вариант?
Какие величины, связанные с шариком, нужно изменить в программе для того, чтобы сдвинуть его влево? Вправо? Вверх? Вниз?
Для перемещения шарика нужно изменить его координаты — значения переменных х и y. Причём эти изменения будут зависеть от того, какую клавишу нажал пользователь.
Например, можно написать четыре условных оператора:
если c=KЛ_BJIEBO то х:=х-5 все
если с=КЛ_ВПРАВО то х:=х+5 все
если с=КЛ_ВВЕРХ то у:=у-5 все
если с=КЛ_ВНИЗ то у:=у+5 все
В итоге получается такая основная программа:
использовать Рисователь
алг Управление клавишами
нач
новый лист(200, 200, синий)
цел х=100, у=100, с
перо (1, прозрачный)
нц пока да
Шарик(х, у, жёлтый)
с:=код клав
Шарик(х, у, синий)
если c=KЛ_BJIEBO то х:=х-5 все
если с=КЛ_ВПРАВО то х:=х+5 все
если с=КЛ_ВВЕРХ то у:=у-5 все
если с=КЛ_ВНИЗ то у:=у+5 все
кц
кон
После неё нужно поместить процедуру Шарик из предыдущего параграфа.
Следующая страница Управление по требованию