-
1. Знакомство со спрайтом 0
Знакомьтесь - спрайт, маленький объект, активный персонаж компьютерных игр. На этих уроках мы научимся создавать спрайты BBC micro:bit и управлять ими. Мы разработаем компьютерные игры, где спрайты будут двигаться, сталкиваться, бороться за своё существование.
-
Лекция1.1
-
Лекция1.2
-
-
Игры со спрайтами. Уровень 1 0
-
Лекция2.1
-
Лекция2.2
-
Лекция2.3
-
-
Игры со спрайтами. Уровень 2. Массивы 1
В этом разделе мы познакомимся с новым понятием - массив. Массив поможет нам разрабатывать более сложные программы, а значит - игры, которые ещё интереснее и увлекательнее, чем те, которые мы научились делать.
-
Лекция3.1
-
Лекция3.2
-
3. Ловец фруктов
Постановка задачи
Наша вторая игра, сохраняя общий замысел предыдущей, имеет существенные усложнения, а это означает, что игра становится более увлекательной.
Как и в предыдущей игре, игроку необходимо «поймать» спрайт в «корзину», но спрайт, в этой игре назовём его «яблоко», падает вниз ― с верхней строки дисплея до нижней, при этом скорость падения увеличивается по мере накопления очков игроком.
Итак, условие задачи: вам надо разработать и запрограммировать игру, в которой выполняется следующее.
- Пока игра не окончена (постоянно, до завершения игры командой «Игра окончена») в случайной точке верхней строки дисплея появляется точка-спрайт (яблоко), которая падает вниз.
- Игрок, управляя спрайтом (корзиной) с помощью кнопок A и B, пытается поймать яблоко в момент его «падения на землю». Корзина может перемещаться только горизонтально в нижней строке дисплея. «Падение на землю» означает, что яблоко достигло нижней строчки дисплея.
- Скорость падения яблока увеличивается с каждым выигранным очком.
- Если яблоко упало на землю, игра заканчивается.
Решение поставленной задачи
Предварительно, продумав план игры и её участников, задаём три переменные:
- яблоко (спрайт)
- корзина (спрайт)
- пауза (увеличение скорости падения будем регулировать уменьшением паузы между шагами
движения яблока)
Вначале игры:
- Разместить спрайт игрока «корзину» в нижней строке дисплея, посередине (почему в примере указаны именно такие координаты?).
- Задать ему направление ― 90 градусов (спрайт должен двигаться в горизонтальном направлении).
- Задать начальное значение переменной «пауза», например, 1000 мс (1 секунда).
Управление
- Используем кнопку A платы BBC micro:bit для перемещения спрайта «корзина» влево. Для этого можно использовать команду переместить на -1. Но если корзина находится в крайней точке экрана, то двигаться ей уже некуда. Поэтому движение надо выполнять только тогда, когда координата ещё больше 0.
- Используем кнопку B платы BBC micro:bit для перемещения спрайта «корзина» вправо. Здесь также, как и при движении влево, перемещать корзину можно только до края дисплея. Здесь тоже необходимо использовать ветвление: если координата X спрайта корзина меньше 4, то переместить спрайт на 1 шаг.
С этой частью кода вам надо справиться самостоятельно. Все подсказки для успешной работы у вас есть.
- Постоянно (пока игра не окончена) повторять:
- В случайной точке верхней строки дисплея разместить спрайт «яблоко».
Какая вторая координата у спрайта в верхней точке дисплея? Не забыли? Она равна 0.
В команде, по которой спрайт яблоко появляется в программе, первая координата – случайное число от 0 до 4, а вторая равна 0. Направление спрайта – вниз (180 градусов):
- Продолжаем блок Постоянно
Пока координата Y спрайта «яблоко» больше 0 (спрайт ещё не достиг нижней границы дисплея), спрайт перемещать на 1 шаг, делать паузу (без паузы не будет никакой возможности поймать спрайт – проверьте) .
Вспомните, что мы ввели переменную пауза для того, чтобы можно было менять скорость падения “яблока” и тем самым усложнять задачу игрока.
После выхода из цикла «Пока» проверить: - Если «яблоко» коснулось «корзины», то:
- увеличить счёт на 1,
- удалить спрайт яблоко (он сформируется вновь, при повторении цикла игры)
- уменьшить паузу (при этом скорость падения увеличится), например, на 1/10 от её предыдущего значения:
Обратите внимание на запись этой команды! В ней должен быть правильный порядок действий: сначала значение переменной пауза нужно разделить на 10, а затем уже полученный результат вычесть из значения переменной пауза. В блоках редактора это плохо видно, но результаты выражения (1) и выражения (2) будут разными.
(1) пауза – (пауза : 10)
(2) (пауза – пауза) : 10
В редакторе эти выражения будут неразличимы.
Арифметическое выражение надо записать по частям:
- Иначе игра останавливается.
- В случайной точке верхней строки дисплея разместить спрайт «яблоко».
- Конец цикла «постоянно»
Теперь у вас есть всё необходимое, чтобы справится с задачей.
После того как вы убедитесь, что всё работает так, как запланировано, можно подумать о развитии идеи.
Развитие проекта
- Запрограммируйте управление спрайтом корзина наклонами BBC micro:bit.
- Подарите игроку вначале несколько жизней и заканчивайте игру только тогда, когда жизни закончились.
Удачи!