https://github.com/CodeClub/scratch-curriculum/tree/master/ru-RU/Term%201/Christmas%20Special
В этом проекте мы создадим игру на праздничную тему с меняющимся фоном и с подсчетом очков. Происшествие на фабрике игрушек — все подарки улетели в небо! Помогите Рудольфу поймать их и спасти Рождество!
Создайте новый проект Scratch. Удалите кота, щелкнув по нему правой кнопкой мыши и нажав пункт меню «Удалить».
Замените фон другим, файлом SkyBackground.png.
Добавьте в проект спрайт Рудольфа (воспользуйтесь файлом Rudolph.png).
Заставьте Рудольфа следовать за указателем мыши, создав следующий скрипт:
когда щелкнут по ФЛАГУ
перейти в верхний слой
всегда
перейти в [mouse-pointer v]
Щелкните по флажку и двигайте мышь. Рудольф следует за мышью?
Для того чтобы сделать игру интереснее, добавим движущиеся заснеженные холмы, и Рудольф будет как будто лететь над ними. Добавьте в проект спрайт Снег (воспользуйтесь файлом SnowHills.png).
Переименуйте спрайт в Снег1.
Создайте новую переменную. Для этого перейдите на вкладку «Данные» и нажмите Создать переменную. Назовите ее ScrollX{.blockorange} и сделайте доступной для всех спрайтов. Снимите отметку в поле рядом с именем переменной, чтобы ее не было видно на сцене. Она будет использоваться для управления движением холмов.
Для того чтобы холмы двигались, добавьте скрипт:
когда щелкнут по ФЛАГУ
установить y в (0)
всегда
установить x в (ScrollX)
изменить [ScrollX v] на (-1)
если <(ScrollX) < (-480)>
установить [ScrollX v] в [0]
Щелкните по зеленому флажку. Холмы движутся? Что происходит, когда они доходят до границы экрана?
Давайте исправим проблему с миганием холмов на правом краю экрана. Добавьте еще холмов на сцену при помощи команды Новый из меню Файл. Этим методом мы еще раз добавим спрайт Снег в проект (воспользуйтесь файлом SnowHills.png).
Переименуйте спрайт в Снег2.
Добавьте следующий скрипт в спрайт Снег2, чтобы рядом с первым набором рядом двигался второй:
когда щелкнут по ФЛАГУ
установить y в (0)
всегда
установить x в <(ScrollX) + [479]>
Щелкните по зеленому флажку. Холмы движутся? Решена ли проблема с миганием деревьев?
Теперь давайте добавим подарки, которые Рудольф должен собирать. Добавьте в проект спрайт Подарок (файл Present.png).
Создайте новую переменную . Для этого перейдите на вкладку «Данные»{.blocklightgrey} и нажмите Создать переменную. Назовите ее Конец{.blockorange} и задайте ее действие только для текущего спрайта. Затем снимите отметку с поля слева от имени переменной, чтобы удалить ее со сцены. Эта переменная нужна для того, чтобы управлять удалением подарка из игры.
Создайте еще одну переменную. Назовите ее Скорость{.blockorange} и задайте ее действие только для текущего спрайта, затем снимите отметку с поля слева от имени переменной, чтобы удалить ее со сцены. Эта переменная нужна для того, чтобы управлять скоростью падения подарков на экране.
Добавьте следующие команды для спрайта Подарок, и подарки будут падать с неба. Обратите внимание на команду "выдать случайное число"{.blockgreen}, которой мы воспользуемся для того, чтобы подарок все время появлялся в разных местах.
А при помощи блока "касается?" [Рудольфа]{.blocklightblue} мы заставляем подарок исчезать при соприкосновении с ним. Позже это пригодится еще и для подсчета очков.
когда щелкнут по ФЛАГУ
всегда
установить [Конец v] в [0]
перейти в x: <выдать случайное от (-230) до (230)> y: <выдать случайное от (50) до (170)>
установить [Скорость v] в [-1]
повторять, пока не <(Конец) = [1]>
изменить y на (Скорость)
если <([y позиция v] [Подарок v]) < [-160]>
установить [Конец] в [1]
конец
если <касается [Рудольф v]?>
установить [Конец] в [1]
Щелкните зеленый флажок. Подарки падают с неба? Они исчезают, падая на землю или когда Рудольф касается их?
Давайте сделаем игру интереснее. Пусть каждый раз, когда подарки падают, их цвет меняется. Для этого мы используем блок изменить цвет
Измените цвет каждого из подарков, заменив команду установить Скорость в -1 на команду выдать случайное, и попробуйте разные диапазоны, например от -10 до -1. Теперь скрипт должен выглядеть так.
когда щелкнут по ФЛАГУ
всегда
установить [Конец v] в [0]
перейти в x: <выдать случайное от (-230) до (230)> y: <выдать случайное от (50) до (170)>
изменить [цвет v] эффект на <выдать случайное от (1) до (-160)>
установить [Скорость v] в <выдать случайное (-10) to (-1)>
повторять, пока не <(Конец) = [1]>
изменить y на (Скорость)
если <([y позиция v] [Подарок v]) < [-160]>
установить [Конец] в [1]
конец
если <касается [Рудольф v]?>
установить [Конец] в [1]
Щелкните зеленый флажок. Подарки падают с разной скоростью, и у них разные цвета?
Давайте изменим наш скрипт так, чтобы в игре подсчитывались очки. Позже новые команды можно будет использовать также для сообщения об окончании игры.
Создайте новую переменную. Назовем ее Счет{.blockorange} и сделаем доступной для всех спрайтов. Оставьте отметку в поле рядом с именем переменной, чтобы ее было видно на экране.
Измените скрипт для спрайта Подарок, как описано ниже. Обратите внимание: мы, во-первых, добавили звук командой 'барабану играть{.blockpink}, а во-вторых, вставили командуизменить [ счет ] на 1`{.blockorange}, когда Рудольф касается подарка.
когда щелкнут по ФЛАГУ
всегда
установить [Конец v] в [0]
перейти в x: <выдать случайное от (-230) до (230)> y: <выдать случайное от (50) до (170)>
изменить [цвет v] эффект на <выдать случайное от (1) до (-160)>
установить [Скорость v] в <выдать случайное (-10) to (-1)>
повторять, пока не <(Конец) = [1]>
изменить y на (Скорость)
если <([y позиция v] [Подарок v]) < [-160]>
барабану играть [57 v] (0.2) тактов
установить [Конец] в [1]
конец
если <касается [Рудольф v]?>
барабану играть [39 v] (0.2) тактов
установить [Конец] в [1]
изменить [Счет v] на [1]
Давайте добавим в игру музыку. Для этого импортируем на сцену файл Jingle_Bells.mp3.
когда щелкнут по ФЛАГУ
установить [ScrollX v] в [0]
установить [Счет v] в [0]
играть звук [Jingle_Bells v]
Добавьте на сцену следующий скрипт. Он позволит установить счет равным 0 (установить счет в to 0{.blockorange}) при запуске игры. Он также обеспечивает проигрывание песни Jingle Bells во время игры. Если сначала музыка звучит неровно, сохраните свой проект, закройте Скретч, затем снова откройте его со своим проектом. ## Проверьте свой проект { .flag} Щелкните зеленый флажок. Меняется ли счет, когда Рудольф касается подарка? ## Сохраните свой проект { .save} # ШАГ 4: Конец игры { .activity}
Давайте изменим наш скрипт так, чтобы в игре подсчитывались очки. Позже новые команды можно будет использовать также для сообщения об окончании игры.
Изменим скрипт на Сцене так, чтобы когда переменная Счет{.blockorange} стала равной 10, выполнялась бы команда передать{.blockyellow} сообщение Конец игры.
когда щелкнут по ФЛАГУ
установить [ScrollX v] в [0]
установить [Счет v] в [0]
играть звук [Jingle_Bells v]
всегда
если <(счет) = [10]>
передать [Конец игры v] и ждать
Теперь надо добавить само сообщение "Конец игры". Добавим в проект спрайт Конец игры (воспользуйтесь файлом GameOver.png).
Добавим следующий скрипт в спрайт Конец игры. Он даст команду скрыть{.blockpurple} картинку в начале игры и показать{.blockpurple} ее при получении сообщения "Конец игры".
когда щелкнут по ФЛАГУ
скрыть
когда я получу [Конец игры v]
перейти в верхний слой
показать
стоп [все v]
Щелкните зеленый флажок. Меняется ли счет, когда Рудольф касается подарка?
Можете сделать так, чтобы при падении подарки еще и раскачивались?
Можете сделать так, чтобы одновременно в игру добавлялись несколько подарков?
Измените сообщение об окончании игры так, чтобы оно появлялось после сбора 20 подарков.
Можете сделать так, чтобы при падении подарка на землю счет уменьшался на 1? ## Сохраните свой проект { .save} Отлично, вы закончили, теперь можете насладиться игрой! Счастливого Нового Года и Рождества!
Лицензировано под Creative Common License (ссылка)