Условие задания:

0 Б.
Создадим проект, в котором объект, управляемый кнопками нарисованного пульта, будет двигаться по лабиринту.
 
Видео \(1\). Движение по лабиринту
 
Если объект наткнётся на стену лабиринта, то игра будет окончена. В этом случае подразумевается, что объект вышел из строя и продолжать движение не может.
 
Видео \(2\). Проигрыш
 
Позже добавим в проект возможность собирать какие-то другие объекты и получать за это бонусы.
Определимся с действующими спрайтами:
• поле с лабиринтом и кнопками для управления объектом;
• жук: он и будет двигаться по лабиринту.

На поле изобразим лабиринт. Мы выбрали простой лабиринт, но можно нарисовать любой, для реализации важен только цвет стен, так как в проекте предусмотрена реакция объекта-жука на цвет стен лабиринта.
 
лабиринт.png
Рис. \(1\). Лабиринт
 
Пульт управления — \(4\) спрайта со стрелками.

\(4\) спрайта со стрелочками образуют нарисованный пульт для управления.
 
Как связать движение жука с нажатием на спрайт стрелочку? Ответ — через сообщение. Нажатие на спрайт стрелочку передаёт спрайту жуку соответствующее сообщение.
 
влево.png
Рис. \(2\). Связь жука и стрелки
 
Спрайт жука

Жук, получив сообщение, присваивает переменной «Ход» значение вверх, вниз, вправо или влево и в зависимости от значение переменной «Ход» поворачивается в указанную сторону и выполняет несколько шагов.
Начальное значение переменной «Ход» — пустая строка, для начала движения жук ждёт любого значения переменной «Ход», кроме пустого.

Движение жука могут быть дискретными («Идти \(10\) шагов») или непрерывными. Для непрерывных движений составим алгоритм, выполняющий движение вперёд при нажатой кнопке мыши.
 
ход_дискретный.pngход_при_нажатой_мыши.png
Рис. \(3\). Движение по нажатой кнопке

Остаётся только реализовать реакцию на касание стенок лабиринта и завершение движения.
 
ИП.png
По нажатию на зелёный флажок жук занимает исходное положение
повторять_до.png
Повторяет действия до того, пока не коснётся цвета выхода из лабиринта
ждать_до_не_ход.png
Ждёт значения переменной «Ход». Значение переменной передаёт нажатие на кнопки со стрелкой
Игра_проиграна.png
Если жук касается цвета стен лабиринта, блок «Говорить...» объявляет «Игра проиграна!», и в программу передаётся сообщение «Стоп». После сообщения «Стоп» заканчивается игра, и жук возвращается в начальное положение
Игра_победа.png
Такое же сообщение, но с объявлением «Игра закончена с победой», будет получено, если жук коснётся черты окончания лабиринта

По нажатию на зелёный флажок жук занимает исходное положение.

Усложним проект возможностью собирать, например, «звёздочки».

Добавим два спрайта: «звёздочку» и «кнопку».

Спрайт звёздочки и спрайт кнопки

«Звёздочку» разместим где-нибудь в стороне от лабиринта и спрячем.
При нажатии на кнопку создаётся несколько клонов «звёздочки», каждый из которых появится в случайном месте. Это можно сделать с помощью цикла «Повторить… раз». Посмотрим программу, когда звёздочка начинает как клон.
 
звездочка_клон.png
Она показывается
случайное_для_звездочки.png
Переходит в случайное положение, положение «звёздочки» ограничивается границами лабиринта
удалить_звездочку.png
Ждёт касания с скриптом «жук», и клон удаляется
 
Подсказки
Проверь, что в твоём проекте есть следующие спрайты.
 
спрайты.png
Рис. \(4\). Спрайты
 
Убедись, что написаны и работают следующие программы: 
• для спрайта «Жук» — программа «Когда нажат зелёный флажок», \(4\) программы «Когда я получу вверх (влево, вправо, вниз)» от кнопок со стрелочками; \(1\) программа — «Когда я получу стоп»;
• для каждой из \(4\) кнопок «Когда спрайт нажат» — передать вверх (влево, вправо, вниз);
• для «звёздочки»: «Когда нажат зелёный флажок» — спрятаться; «Когда я начинаю как клон» — описано в таблице выше;
• для кнопки: «Когда спрайт нажат», «Повторить… раз», «Создать клон "звёздочки"».
 
Продолжая работу над проектом, ты можешь реализовать подсчёт баллов за каждый собранный объект, добавить другие объекты, которые будут не добавлять баллы, а уменьшать их. Также ты можешь ограничить время прохождения лабиринта, добавить уровни игры и ботов, которые будут препятствовать выполнению задачи.
Вы должны авторизоваться, чтобы ответить на задание. Пожалуйста, войдите в свой профиль на сайте или зарегистрируйтесь.