Сделаем игру про двух котов. В неё можно будет играть вдвоём. На поле высыпаются 20 яблочек. Размер поля больше экрана, поэтому видны не все яблоки. Сначала, в течение 20 секунд яблоки собирает первый игрок, он старается собрать как можно больше, потом, яблоки рассыпаются снова, и к сбору урожая приступает второй кот. Кто больше соберёт, тот скажет: «Я выиграл!». В процессе игры Коты стоят неподвижно, а экран с яблоками и цветочками под ним прокручивается по вертикали и по горизонтали. Этот эффект называется вертикальный и горизонтальный скроллинг.
Сперва нарисуем фон и все спрайты. Фон просто зальём зелёным цветом с небольшим градиентом. Потом раскрасим и запрограммируем первого кота — Ваську. Потом сделаем второго кота — Рыжика, его раскрашивать не надо — он и так рыжий! После этого нарисуем и запрограммируем яблоко. Да-да, у нас будет только одно яблоко, а то, что вы видите на экране — это его клоны, о них потом поговорим подробнее. Когда яблоко будет готово, из него с помощью дублирования сделаем цветочки. Они будут расти на поле для красоты. С ними движение котов будет выглядеть реалистичней.
Начинаем с зелёного фона. Залейте фон зелёным цветом с небольшим градиентом.
Сцене сделайте маленькую программу по обнулению переменных. Создайте две переменные «очки 1» и «очки 2». Эти переменные будут считать количество собранных яблок.
Получились две переменные.
Сделайте для сцены такую программу.
Теперь приступаем к программированию поведения кота Васьки. Переименуйте Sprite1 в Ваську.
Сделайте ему простенькую программу из двух скриптов. Первый скрипт.
Не забудьте создать новое сообщение.
Назовите новое сообщение «рассыпать яблоки».
Создав первое событие, прикрепите к скрипту блок «передать «рассыпать яблоки». Второе событие создавайте только после того, как прикрепите первое событие с скрипту.
Когда первый скрипт будет готов, сделайте второй. Он будет работать в конце игры, при получении сообщения «очки». Если Васька наберёт больше яблок, чем Рыжик, то переменная «очки 1» будет больше переменной «очки 2», и Васька на весь двор объявит: «Я выиграл!». После этого работа программы будет остановлена блоком «стоп всё».
Первый котик готов. Дублируйте его и назовите Рыжиком.
Сейчас программа Рыжика такая же, как и у Васьки. Надо немного её изменить. Сначала удалите первый скрипт.
Вместо него создайте два маленьких скриптика. Первый скриптик скрывает Рыжика в начале игры, так как сначала очередь Васьки. Через двадцать секунд, когда миссия Васьки будет завершена, Рыжик получит сообщение «Очередь Рыжика» и приступит к сбору урожая. Ему тоже отведено двадцать секунд. После этого он передаёт сообщение «очки» и происходит подсчёт очков. Котик, который собрал больше яблок, скажет победные слова.
Третий скрипт Рыжика очень похож на такой же скрипт Васьки, только переменные надо переставить местами, и выкинуть блок «показать», ведь при подсчёте очков Рыжик и так виден.
Он только недавно закончил собирать яблоки, и ещё не успел никуда удрать.
Коты к соревнованию готовы. Осталось сделать яблочко и цветочек. Начнём с яблока, потом его дублируем, и переделаем в цветочек. Программы-то у них почти одинаковые. Добавьте из библиотеки спрайтов яблоко.
Дважды кликните по яблоку.
Переименуйте Apple в Яблоко.
Программа у яблока очень сложная. В ней шесть скриптов, и ни один из них не начинается с блока с зелёным флагом. Сначала нам необходимо создать две локальные переменные «Х яблока», и «Y яблока».
Эти переменные будут видны только самому яблоку и его клонам. Коты и цветочек не будут знать о существовании этих переменных, и никак не смогут их изменить.
Чтобы создать локальную переменную, надо поставить точку «Только для этого спрайта».
Создайте вторую переменную.
Локальные переменные готовы. Можете зайти в любого кота, и убедиться, что у него эти переменные не отображаются. Их видит только Яблоко. Глобальные переменные «очки 1» и «очки 2» видны всем спрайтам.
Переменные готовы, можно делать программу для Яблока. Создайте первый скрипт, он начинает работать, когда получит сообщение «рассыпать яблоки». Скрипт задаёт случайные координаты Х и Y, перемещает туда яблоко, и создаёт в этом месте его клон. Клон — это точная копия спрайта Яблоко.
Скрипты, управляющие клонами, всегда начинаются с блока «когда я начинаю как клон». Таких скриптов у яблока четыре штуки. Первый из них служит для организации скроллинга. При нажатии на стрелки клоны будут смещаться. Да-да, все клоны будут одновременно выполнять одно и то же действие, этот скрипт управляет сразу всеми клонами Яблока. Если Вы нажмёте стрелку вверх, то все клоны Яблока поедут вниз, Y изменится на минус три. Здесь нет ошибки, стрелка вверх - Y изменится на минус. Благодаря этому всеобщему движению яблок вниз, будет казаться, что кот идёт вверх! Коты на протяжении всей игры будут находиться на одном и том же месте экрана. Васька в левой части экрана, Рыжик в правой части экрана, но, несмотря на это, игроку будет казаться, что коты, как сумасшедшие, носятся по огороду, и собирают яблоки.
Следующий скрипт позволяет яблокам, доплывшим до края экрана спрятаться, как будто они просто скрылись из вида за пределами экрана. Если этот скрипт не сделать, то при движении котов много яблок будет скапливаться у границы экрана. После создания игры попробуйте «выключить» этот скрипт, оторвав от него первый блок «когда я начинаю как клон». Размер экрана в Scratch, как Вы помните, от -240 до 240 по горизонтали, и от -180 до 180 по вертикали, однако в следующем скрипте числа на десять меньше. Это сделано для того, чтобы движения клонов были более плавными.
Следующие два скрипта считают количество собранных яблок. Этот скрипт считает, сколько яблок собрал Васька. Каждый раз при касании очередного клона Яблока Васькой, переменная «очки 1» увеличится на единицу, клон скроется, и, через десятую долю секунды, удалится.
Этот скрипт считает, сколько яблок собрал Рыжик. Работает он, так же, как и предыдущий.
Шестой скрипт Яблока, при получении сообщения о том, что теперь настала очередь Рыжика собирать яблоки, удаляет клоны яблока, которые не успел собрать Васька. Чтобы лучше понять, зачем здесь этот блок, попробуйте удалить его, и запустить игру без него. Увидите, что будет.
Скрипты яблока готовы. Можете немного поиграть. Коты ходят, и собирают яблоки, а когда яблоки кончаются, то коты гуляют по пустому полю. Когда поле пустое, яблок нет, и ничего не движется, то эффект скроллинга пропадает. Несмотря на то, что Вы нажимаете стрелки, кажется, что кот стоит на месте. Для того, чтобы эффект скроллинга никогда не пропадал, надо чтобы на поле были объекты, которые кот собирать не будет. Перемещение этих объектов будет делать движение по полю реалистичным даже при отсутствии яблок. Этим дополнительным предметом сделаем цветочек. В результате, кот будет гулять по саду, заросшему цветами, и собирать яблоки. Дублируйте яблоко, будем превращать его в цветочек.
Зайдите в текстовый редактор. Нарисуйте второй костюм
Перейдите в векторный режим рисования.
Увеличьте масштаб.
Выберите инструмент «Карандаш».
Зелёным цветом нарисуйте стебелёк.
Выберите инструмент «Эллипс».
Нарисуйте жёлтый центр цветка — цветоложе.
Тем же инструментом «Эллипс» нарисуем красные лепесточки.
Сначала нарисуйте один лепесток.
Пока лепесток выделен, нажмите на клавиатуре сочетание клавиш Ctrl-C, а потом Ctrl-V. Включится инструмент «дублировать».
Удерживая нажатой клавишу Shift (в Scratch эта клавиша ошибочно переведена как Сдвиг), отпечатайте необходимое количество копий первого лепестка.
Инструментом выбора выберите цветок без стебля.
Нажмите на клавиатуре сочетание клавиш Ctrl-C, а потом Ctrl-V. Включится инструмент «дублировать». Скопируйте цветок на второй стебель, и в серединку.
Цветочек готов. Сейчас у него такие же скрипты, как и у яблока, и такие же локальные переменные. Локальные переменные заново создавать не нужно, их нужно переименовать. Кликните правой кнопкой в переменную «Х яблока», и выберите «переименовать переменную».
Переименуйте следующую переменную.
После того, как мы переименовали переменные, они повыпрыгивали из своих мест. Теперь, каждую переменную надо аккуратно положить на место.
Скрипты цветочка надо немного изменить, чтобы коты на них не реагировали. Удалите у цветочка скрипты, отвечающие за взаимодействие с котами. Эти скрипты содержат блок «если касается Васька» и «если касается Рыжик».
Должны остаться только четыре скрипта. Скрипт, размещающий цветочки на поле.
Скрипт управления движением.
Скрипт ухода за границу экрана.
И скрипт, удаляющий клонов.
Игра почти готова. Мне не нравится, что коты у нас получились какими-то одинаковыми. Разве бывают в одном доме одинаковые коты? Давайте перекрасим Ваську в серый цвет, и изменим ему ушки. Он будет шотландской вислоухой породы. Выберите Ваську и зайдите в графический редактор. Выберите серый цвет, и инструмент «Окрасить форму».
Окрасьте Ваську.
Осталось сделать ушки-вислоушки. Выберите инструмент «Изменение формы».
Кликните на ухо.
О ужас! Кот покрылся волдырями!
Да ладно, это не волдыри, а опорные точки. Если потянуть за одну из этих точек, то мордочка Васьки изменит свою форму. Давайте, изменим форму ушек, придадим котику немного шотландского шарма.
Вот теперь всё готово. Можно поиграть.
Играть в игру лучше всего вдвоём. Вы играйте за Ваську, а Ваш друг пусть играет за Рыжика. Кто из вас наберёт больше очков?
Вопросы по игре «Собираем яблочки».
1. Как ускорить движение котов?
2. Как увеличить количество яблок?
3. Как увеличить количество цветов?
Задания к игре «Собираем яблочки».
1. Сделайте так, чтобы в саду росли цветы двух видов.
2. Добавьте в игру испорченные яблоки. При касании этого яблока очки должны не увеличиться, а уменьшиться на 1.
3. Добавьте в игру третьего Кота и переменную «очки 3», можно будет играть втроём.