-
1. Знакомство со спрайтом 0
Знакомьтесь - спрайт, маленький объект, активный персонаж компьютерных игр. На этих уроках мы научимся создавать спрайты BBC micro:bit и управлять ими. Мы разработаем компьютерные игры, где спрайты будут двигаться, сталкиваться, бороться за своё существование.
-
Лекция1.1
-
Лекция1.2
-
-
Игры со спрайтами. Уровень 1 0
-
Лекция2.1
-
Лекция2.2
-
Лекция2.3
-
-
Игры со спрайтами. Уровень 2. Массивы 1
В этом разделе мы познакомимся с новым понятием - массив. Массив поможет нам разрабатывать более сложные программы, а значит - игры, которые ещё интереснее и увлекательнее, чем те, которые мы научились делать.
-
Лекция3.1
-
Лекция3.2
-
Знакомство с массивом
Возможно, вы слышали про знаменитую игру Flappy Bird, разработанную вьетнамским программистом Донгом Нгуеном в далёком 2013 году. В то время она была очень популярна. В этой игре надо управлять маленькой птичкой, обеспечивая ей безопасный полёт среди многочисленных колонн, которые так и стремятся прервать его.
Попробуем смоделировать подобную игру на нашем микро:бите?
Мы уже многое умеем, но здесь появляется новая задача, которую надо решать новыми, ещё не известными нам методами. Дело в том, что мы умеем управлять отдельными спрайтами, а в этой задаче препятствие для птички представляет собой группу спрайтов, и нам надо научиться управлять такой группой. Для этого на помощь приходят массивы.
Массив — это не простая переменная, которая может хранить только одно значение, а переменная, способная хранить целую группу значений. В нашей задаче в массиве мы будем хранить спрайты, из которых строится вертикальное препятствие для птички. Это препятствие занимает всю вертикаль экрана, кроме одной точки, через которую нам и надо провести птичку. Координата этой “пустой” точки — случайное число в диапазоне от 0 до 4. Препятствие должно двигаться справа налево и, достигнув края экрана, исчезать. В это же время справа возникает новое препятствие с новой “пустой” точкой.
Таким образом, нам надо научиться:
1. Создавать массив спрайтов в виде вертикального препятствия (стенки) для птички.
2. Перемещать массив спрайтов (стенку) справа налево так, чтобы вертикаль сохранялась.
3. Удалять спрайты из массива, когда они достигнут левого края экрана.
Оформим эти три задачи в виде функций: сделать стенку, двигать стенку, удалить стенку.
Задача 1. Создание массива спрайтов. Функция сделать стенку
- Нам понадобятся две переменные: препятствие (массив спрайтов) и пусто (простая переменная, хранит случайную координату щели в препятствии). Создайте их.
- Создайте функцию сделать стенку.
- Добавьте команду: задать и сохранить в переменной пусто случайное число в диапазоне от 0 до 4 (координата отверстия в стенке)
- Начинаем формировать массив препятствие. Вначале массив пустой, в нём ещё ничего нет. Найдите в группе Расширенные => Массивы значение “пустой массив” и добавьте команду: задать и сохранить в переменной препятствие пустой массив
- В массиве будут храниться 4 спрайта. Добавлять мы их будем в цикле со счётчиком, который отсчитает 5 повторений цикла – от 0 до 4. При каждом повторении в массив добавится новый спрайт, но только в том случае, если значение счётчика не совпадает с координатой пусто.
Значение координаты Х у всех спрайтов равно 4 (правая граница экрана), а значение координаты Y совпадает со значением счётчика. Сначала добавится спрайт с координатами 4 и 0, затем – 4 и 1 и так далее. Стенка будет расти сверху вниз. Спрайт, координата которого совпадает с пусто, в массив не заносится.
В массивах для номера элемента массива принято употреблять слово “индекс”, поэтому мы так и назовём счётчик. У нас получится такой блок:
- “Привяжите” выполнение функции сделать стенку к кнопкам A+B
и проверьте, правильно ли работает функция:- появляется ли стенка в нужном месте (с правого края экрана),
- вертикальна ли она,
- есть ли “отверстие” в стене,
- появляется ли оно в случайной позиции?
Попробовали, посмотрели и увидели, что-то тут не так. Новая стенка появляется на месте предыдущей и вместе с предыдущей. Это легко исправить. Добавьте обработку события, которое наступает при встряхивании. В этот блок внесите одну команду — сброс.
Теперь при нажатии на кнопки А+B должны формироваться разные препятствия, то есть пустая точка у них каждый раз в разных местах.
Задание
Проведите эксперименты с кодом (если какая-то задача не будет получаться, решение можно найти в конце урока, но только после активного поиска самостоятельного решения):
-
- Разместите стенку у левой границы экрана
- Разместите стенку по середине экрана
- Разместите стенку по середине экрана, но горизонтально
- Разместите стенку по диагонали, которая идёт от верхнего левого угла к нижнему правому.
- Разместите стенку по диагонали, которая идёт от верхнего правого угла к нижнему левому.
Уфф!
Задача 2. Движение стенки. Функция двигать стенку
- Верните препятствие в исходное положение — к правой границе экрана.
- Создайте функцию двигать стенку.
- Для того, чтобы стенка сдвинулась на один шаг влево, надо, чтобы все спрайты в массиве препятствие сделали шаг влево. Для массива есть специальная команда, которая позволяет перебирать все элементы массива и задавать им команду. Команду перебора элементов массива находится в группе Циклы. Посмотрим, как она работает. Соберите блок:
- “Привяжите” выполнение функции к нажатию кнопки А. Убедитесь, что при нажатии на кнопку А стенка смещается на одну позицию влево.
- Какие команды надо добавить в этот блок, чтобы стенка перемещалась от правого края экрана к левому?
Наверное, вам уже не нужна подсказка. Надо этот цикл поместить в другой – Повторить 4 раза, не забывая про паузу между последовательными перемещениями стенки:
Проверьте, как работает программа с новыми командами.
Задача 3. Удаление спрайтов из массива. Функция удалить стенку
Когда стенка-препятствие достигнет левого края (а это произойдёт после выполнения написанных команд), спрайты надо удалить. Наверное, вы и сами уже догадались, как это сделать. Например, так:
И теперь можно проверить работу всех трёх функций:
Если всё работает правильно, то можно переходить и разработке игры в целом.