Оранжевый кот программирование

Вы, вероятно, играли в лабиринт раньше, но вы когда-нибудь пробовали сделать его? Лабиринты могут быть сложными для завершения, но их легко запрограммировать. В этой главе вы создадите игру, которая позволит игроку провести кошку через лабиринт. Чтобы достичь своей цели—вкусного яблока! Вы узнаете, как перемещать кота с помощью клавиатуры и как блокировать его продвижение с помощью стен.

Прежде чем приступить к кодированию, взгляните на окончательную программу. Перейти к https://www.nostarch.com/scratchplayground/ и играть в игру.

изображение

Во-первых, нарисуйте, как вы хотите, чтобы игра выглядела на бумаге.

При некотором планировании вы можете сделать свою игру в лабиринт a-mazeing. (Я никогда не извиняюсь за свои каламбуры.) Мой эскиз игры в лабиринт выглядит следующим образом.

изображение

Если вы хотите сэкономить время, вы можете начать с файла проекта скелета, названного maze-skeleton.sb2, в ZIP-файле ресурсов. Перейти к https://www.nostarch.com/scratchplayground/ и загрузите ZIP-файл на свой компьютер. Щелкнув правой кнопкой мыши ссылку и выбрав Сохранить ссылку как или Сохранить цель как. Извлеките все файлы из ZIP-файла. В файле проекта скелета уже загружены все спрайты. Поэтому вам нужно будет только перетащить блоки кода в каждый спрайт.

Нажмите изображениекнопку Загрузить файл с вашего компьютера в редакторе Scratch, чтобы загрузить файл maze-skeleton.sb2.

Даже если вы не используете скелетный проект, вы должны загрузить ZIP-файл с веб-сайта. Этот файл содержит изображения лабиринта, которые вы будете использовать в этой главе.

Если вы хотите создать все самостоятельно, нажмите Файл изображениеСоздать, чтобы начать новый проект. В текстовом поле в левом верхнем углу переименуйте проект с Untitled на Maze Runner.

изображение

ЗАСТАВЬТЕ КОТА ХОДИТЬ

В игре Maze Runner игрок будет управлять кошачьим спрайтом.

В части А вы создадите код для управления кошкой с помощью клавиш со стрелками на клавиатуре.

изображение

Первый бит кода, который вы добавите. Заставит клавиши со стрелками перемещать кошачий спрайт. Который называется Sprite1. Но сначала нажмите кнопку i и переименуйте этот спрайт Оранжевого кота. Затем добавьте следующий код. Вы найдете эти блоки в категориях События, Управление, Зондированиеи Движение.

изображение

Этот код повторно проверяет, нажата ли клавиша. Код буквально читает “for forever, проверьте, нажата ли клавиша со стрелкой вверх, и если да, то измените

y на 4”. Если клавиша со стрелкой вверх не нажата, Scratch пропускает код внутри блока if then.

изображение

Нажатие клавиши со стрелкой вверх заставляет кошачий спрайт двигаться вверх. Блок forever loop означает. Что Scratch будет снова и снова проверять, нажимается ли клавиша со стрелкой вверх. Это продолжается до тех пор, пока вы не нажмете на красный знак остановки.

Блок forever необходим для работы этой программы. Без него Скретч проверял бы только один раз, если бы была нажата клавиша со стрелкой вверх. Тогда программа закончится. Но вы хотите, чтобы Scratch постоянно проверял, нажата ли клавиша со стрелкой вверх.

Если ваша программа, похоже, ничего не делает, убедитесь. Что вы не забыли добавить блок forever.

Когда вы кодируете это самостоятельно, убедитесь. Что используете кодовый блок change y by вместо кодовых блоков change x by или set y to. Если ваша программа работает неправильно, убедитесь. Что ваш код совпадает с кодом из этой книги.

Теперь вы добавите код для трех других клавиш со стрелками: вниз. Влево и вправо. Этот код похож на код для перемещения кошачьего спрайта вверх. Чтобы сэкономить время, вы можете щелкнуть правой кнопкой мыши на желтом

блоке if then и выбрать дубликат, чтобы создать копию блоков. Эти блоки будут идентичны, поэтому все, что вам нужно будет изменить. — это темно-синие блоки движения для других направлений. Дублирование блоков часто может быть быстрее. Чем перетаскивание новых из области блоков.

изображение

Теперь Scratch проверит, удерживаются ли одна за другой четыре клавиши со стрелками. После проверки клавиши со стрелкой вправо Scratch возвращается в верхнюю часть цикла и снова проверяет клавишу со стрелкой вверх. Компьютер проверяет их так быстро, что человеческим глазам кажется. Что все клавиши со стрелками проверяются одновременно!

изображение

СДЕЛАЙТЕ УРОВНИ ЛАБИРИНТА

Затем мы создадим спрайт лабиринта и установим фон. Игра в лабиринт быстро наскучила бы, если бы в ней был только один лабиринт. Поэтому мы также добавим в нее несколько уровней.

Вы можете нарисовать лабиринт-спрайт самостоятельно. Но вместо этого давайте использовать изображения из ZIP-файла. Одним из изображений лабиринта является файл Maze.sprite2.

В редакторе Scratch нажмите кнопку Загрузить спрайт из файла и выберите Maze.sprite2, чтобы загрузить файл. Это создает новый спрайт под названием

Лабиринт с несколькими костюмами лабиринта. Каждый спрайт в Scratch может иметь несколько костюмов, чтобы изменить его внешний вид. Эти костюмы, которые вы можете увидеть, щелкнув вкладку Костюмы, часто используются для анимации спрайта.

Ваш список спрайтов должен выглядеть так:

изображение

Давайте добавим немного чутья в лабиринт, поместив некоторые произведения искусства на заднем плане. Вы можете использовать любой фон, который вам нравится. Измените фон сцены, нажав кнопку Выбрать фон из библиотекиВыберите фон (я выбрал свет) и нажмите кнопку ОК.

Добавьте следующий код в Maze sprite. Вы можете найти эти блоки в категориях События, Внешний види Движение.

изображение

Каждый из костюмов спрайта Лабиринта будет новым уровнем. Когда игрок нажимает на зеленый флаг, чтобы запустить программу, игра должна начинаться с первого костюма и убедиться. Что лабиринт находится в центре сцены. Мы добавим код для перехода на следующий уровень в шагах 8 и 9.

Обратите внимание, что в области Скрипты отображаются блоки кода для выбранного спрайта. Убедитесь, что спрайт Лабиринта выбран в списке Спрайтов; в противном случае вы добавите код лабиринта в другой спрайт.

Для корректной работы каждого спрайта нужен свой собственный код. Если вы не видите maze1 в костюме переключателя для блокировки, то, скорее всего, выбран оранжевый кошачий спрайт.

Если ваша программа Scratch не работает и вы не знаете, как ее исправить. Вы можете начать все сначала с помощью файла проекта maze-part-b.sb2 Scratch. Который находится в ZIP-файле resources. Нажмите изображениекнопку Загрузить файл с компьютера в редакторе Scratch, чтобы загрузить файл maze-part-b.sb2, а затем перейдите к части C.

изображение

НЕ ПОЗВОЛЯЙТЕ КОШКЕ ПРОХОДИТЬ СКВОЗЬ СТЕНЫ

Теперь, когда вы нажмете на зеленый флаг, вы сможете перемещать кошку по лабиринту. Но вы также сможете перемещать кошку по стенам лабиринта, потому что ничто в программе не препятствует этому. Код гласит только: “Когда нажата клавиша со стрелкой вправо. Переместите кошку вправо.” Кошка двигается независимо от того. Есть там стена или нет.

Давайте добавим код, который проверяет, касается ли кошка синих стен. Если это так, кошка должна двигаться назад. Поэтому, если кошка движется вправо и касается стены, она должна автоматически двигаться влево. Это отменит ход игрока и помешает кошке двигаться сквозь стены. Щелкните Оранжевый Кошачий спрайт в списке Спрайтов и измените код так. Чтобы он выглядел следующим образом. Заметили. Что мы используем прикосновение? блок, а не трогательный цвет? блок.

изображение

Кроме того, вы, возможно, заметили, что Оранжевый Кошачий спрайт по сравнению с лабиринтом размером с Годзиллу выглядит нереально. Добавьте блок заданного размера из категории Внешний вид, чтобы сделать Оранжевый кошачий спрайт меньше. Вы также хотите, чтобы Оранжевый Кошачий спрайт всегда отображался в верхней части лабиринта. Поэтому вы добавите блок go to front. Эти два блока кода находятся в верхней части скрипта.

изображение

изображение

ПОСТАВЬТЕ ЦЕЛЬ В КОНЦЕ ЛАБИРИНТА

Прямо сейчас неясно, где игрок должен оказаться в лабиринте. Давайте добавим яблоко на другом конце лабиринта, чтобы сделать цель игрока более очевидной.

Нажмите кнопку Выбрать спрайт из библиотеки (которая выглядит как лицо) рядом с надписью Новый спрайт. Когда появится окно Библиотеки спрайтов, выберите Apple и нажмите кнопку ОК, чтобы добавить новый спрайт с именем Apple в список спрайтов.

Когда игра начнется, вы хотите, чтобы яблочный спрайт переместился в конец лабиринта в верхней части сцены. Яблочный спрайт также должен быть достаточно маленьким, чтобы поместиться в лабиринте. Добавьте следующий код в Apple sprite:

изображение

В игре Maze Runner есть спрайт для игрока. Лабиринт и яблоко в конце лабиринта. Теперь ему просто нужен код, чтобы определить, когда игрок дойдет до конца. Когда это произойдет, вам придется воспроизвести звук, а затем сменить костюмы на следующий уровень. Но прежде чем добавить код, нужно загрузить звук приветствия. Выберите Оранжевый кот в списке спрайтов. Перейдите на вкладку Звуки в верхней части области Блоков, а затем нажмите кнопку Выбрать звук из библиотеки. Эта кнопка выглядит как динамик и находится под новым звуком.

изображение

В появившемся окне Библиотеки звуков выберите cheer и нажмите кнопку OK, чтобы загрузить звук cheer. Теперь перейдите на вкладку Сценарии.

Добавьте этот скрипт в код спрайта Оранжевого Кота:

изображение

Чтобы сделать широковещательный блок широковещательным следующим сообщением лабиринта. Щелкните черный треугольник в широковещательном блоке и выберите новое сообщение.

изображение

В появившемся окне введите next maze в качестве имени сообщения и нажмите кнопку ОК.

изображение

Нажмите на спрайт Лабиринта в списке спрайтов и добавьте к нему следующий код:

изображение

Этот код изменяет уровень лабиринта при получении следующей трансляции лабиринта.

Следующий код показывает всю программу целиком. Если ваша программа работает неправильно, сверьте свой код с этим полным кодом. Полная программа также находится в том же ZIP-файле ресурсов, что и файл maze.sb2.

изображение

Я надеюсь, что код для этой программы лабиринта не слишком лабиринтный.

изображение

Теперь, когда основная игра лабиринт работает. Вы можете сделать некоторые итерационные разработки и добавлять небольшие улучшения по одному. Итеративная разработка помогает вам избежать попыток создать игру, которая слишком велика, чтобы вы могли ее закончить.

В версии 2.0 Maze Runnerвы добавите второго игрока. Два игрока будут соревноваться друг с другом. Первый игрок начинает снизу и мчится наверх; второй игрок мчится сверху вниз. Поскольку они оба должны пройти один и тот же путь, расстояние для каждого одинаковое.

изображение

Второму игроку тоже нужен гол. Щелкните правой кнопкой мыши Apple sprite и выберите пункт дублировать, чтобы сделать копию Apple sprite и его кода. Новый спрайт автоматически получает имя Apple2. Выберите спрайт Apple2 и перейдите на вкладку Костюмы. Выберите зеленый цвет снизу, а затем выберите инструмент Заливка справа (он выглядит как опрокинутая чашка). Затем нажмите на красную часть яблока. Чтобы изменить ее на зеленую. Когда вы закончите, Apple2 будет выглядеть следующим образом.

изображение

Вам нужно изменить код спрайта Apple2 так чтобы он выглядел следующим образом чтобы зеленое яблоко начиналось в нижней части лабиринта а не в верхней:

изображение

Теперь давайте добавим второй кошачий спрайт. Щелкните правой кнопкой мыши спрайт Оранжевого кота и выберите в меню пункт дубликат. Чтобы сделать копию Оранжевого Кота и его кода. Новый спрайт автоматически получает имя Orange Cat2. Спрайты Orange Cat и Orange Cat2 должны выглядеть достаточно по-разному, чтобы игроки могли отличить их друг от друга. Аналогично тому , что вы сделали для Apple2, перейдите на вкладку Костюмы и измените Orange Cat2 с оранжевого на синий.

изображение

Нажмите на кнопку i и переименуйте Orange Cat2 в Blue Cat.

Прямо сейчас у Синего Кошачьего спрайта тот же код, что и у Оранжевого Кошачьего спрайта. Вам нужно будет изменить код; в противном случае клавиши со стрелками будут управлять как игроком 1, так и игроком 2. Второй игрок будет управлять Синим Кошачьим спрайтом с помощью клавиш WASD (произносится whaz-dee). Клавиши W, A, S и D часто используются в качестве левой версии клавиш со стрелками вверх, влево, вниз и вправо.

изображение

Измените два перехода на блоки x y и нажатую клавишу? блоки для Blue Cat должны выглядеть следующим образом. Кроме того, не забудьте изменить if touch Apple на if touch Apple2.

изображение

Спрайты возвращаются в свои исходные позиции, когда они касаются своих яблок, но они также должны идти туда. Когда другая кошка выигрывает. Добавьте следующий скрипт к оранжевому кошачьему спрайту:

изображение

А затем добавьте следующий скрипт в спрайт Blue Cat:

изображение

Таким образом, когда другая кошка выиграет и передаст следующее сообщение лабиринта. Обе кошки вернутся на исходные позиции.

Вы только что обновили свою игру в лабиринт. Чтобы поддерживать двух игроков. Найди себе друга. Чтобы наперегонки! Игрок 1 использует клавиши со стрелками. А игрок 2-клавиши WASD.

После того как вы несколько раз сыграли в Бегущего по лабиринту против другого игрока. Бегать по лабиринтам может стать слишком легко. Давайте сделаем Бегущего по лабиринту немного сложнее. Добавив шипастые ловушки. Ловушки с шипами будут стрелять шипами. А затем втягивать их. Если игрок дотронется до ловушки. Пока шипы находятся снаружи. Он замедлится. Это дает другому игроку время мчаться вперед!

Нажмите кнопку Нарисовать новый спрайт рядом с надписью Новый спрайт. Чтобы нарисовать новый спрайт. У этого спрайта будет два разных костюма. Которые мы нарисуем: один костюм с втянутыми шипами и другой с вынутыми шипами. Но не волнуйтесь. Рисунки ловушек с шипами очень просты. Просто нажмите на инструмент Линия и черный цвет, чтобы нарисовать простую линию, которая является тем. Как выглядит ловушка шипа. Когда шипы втягиваются. Переименуйте эту костюмированную ловушку в off.

изображение

Спрайту spike trap нужен второй костюм. Чтобы показать. Как он выглядит. Когда шипы выходят. Щелкните правой кнопкой мыши trap off (одна линия, которую вы нарисовали) и выберите дублировать, чтобы создать trap off2. В trap off2выберите серый цвет и нарисуйте шипы . Выходящие из одной линии. Переименуйте эту ловушку костюма.

изображение

Убедитесь. Что ловушка для шипов достаточно мала. Чтобы поместиться в лабиринте. Чтобы сжать его, щелкните инструмент Сжать (как показано на следующем рисунке). А затем щелкните спрайт на рабочей области. Нажмите кнопку Shrink tool столько раз. Сколько необходимо. Чтобы уменьшить его до нужного размера.

изображение

Кроме того, нажмите кнопку i для спрайта, чтобы открыть его информационную область и переименовать ее Trap.

Поскольку вам понадобится несколько ловушек в лабиринте. Вы можете дублировать спрайт ловушки. Но есть способ получше. Вы можете использовать блоки клонов. Чтобы сделать клоны спрайта-ловушки. Сделайте так чтобы код спрайта ловушки выглядел примерно так:

изображение

Цикл repeat 6 будет запускать блок create clone of myself шесть раз. Чтобы сделать шесть клонов. Затем эти клоны будут запускать код в блоке when I start as a clone. Этот скрипт сначала перемещает спрайты-ловушки в случайные позиции в лабиринте. После того, как блок ожидания 2 секунды немного приостанавливает их, вечная петля переключается между выключенной ловушкой и включенной ловушкой костюмов. Которая торчит и втягивает шипы.

Прямо сейчас кошки не запрограммированы делать что-либо, когда они касаются шипов. Выберите Orange Cat в списке Sprite и добавьте следующий код в нижнюю часть существующего кода внутри блока forever. Чтобы установить цвет в трогательном цвете? блок. Нажмите на цветной квадрат в блоке. Следующий цвет. Который вы нажмете в редакторе царапин. Станет выбранным цветом. Нажмите на спайки ловушки спрайтов в списке спрайтов. Чтобы установить цвет касания? квартал до серого. (Если вы не видите шипов. Щелкните спрайт ловушки в списке Спрайтов. Перейдите на вкладку Костюмы и выберите пункт Ловушка вкл. Костюм с шипами появляется для спрайта в списке спрайтов.) Добавьте следующий код в скрипт с нажатой клавишей? блоки:

изображение

Кошка может пройти по клонам ловушки просто отлично, когда шипы убираются, потому что серый цвет не показан. Но если шипы вылезут. Кошка коснется серого цвета и остановится. Чтобы сказать “Ой!” на 2 секунды.

Кошка второго игрока, Синяя кошка, также нуждается в коде для установки цвета в трогательном цвете? блок. Вы можете использовать этот ярлык: нажмите и перетащите желтую часть цвета if touch? затем заблокируйте Оранжевую кошку и поместите ее поверх Синей кошки в списке спрайтов. Кодовый блок вернется на свое первоначальное место в Оранжевом Коте, а также будет продублирован в Синем Коте. Этот метод дублирования обычно быстрее. Чем перетаскивание новых блоков из области блоков.

изображение

Выберите Синий кот в списке спрайтов. Переместите дублированный код в нижнюю часть цикла forever. Код выглядит так же. Как и код в Orange Cat. На следующем рисунке показано. Как перетаскивать и дублировать эти блоки кода.

изображение

Вы закончили версию 3.0 Maze Runner. С ловушками и двумя игроками Maze Runner теперь более интересен. Чем базовая версия 1.0. Вы всегда можете придумать новые функции. Которые вы хотите добавить самостоятельно. Но сначала давайте добавим некоторые секретные читы. Которые игроки могут использовать для взлома игры.

Телепортация-классный чит. Но игроки не могут контролировать. Куда они телепортируются. Кроме того, слишком очевидно, что игрок обманывает, когда они внезапно перемещаются по сцене и через множество стен. Тем не менее. Вы можете добавить более тонкий обман. Который позволяет кошкам проходить сквозь стены. Когда специальный ключ удерживается.

изображение

Для оранжевого кошачьего спрайта измените ходячий код так, чтобы трогательный лабиринт? блоки заменяются трогательным лабиринтом? а не клавиша l нажата? блоки. Здесь показан только код для стрелки вверх. Но вы же хотите заменить сенсорный лабиринт? блоки во всех четырех случаях нажатия клавиши if.

изображение

Это позволяет использовать код блокировки стены только в том случае. Если клавиша L не нажата. Если нажать клавишу L, этот блокирующий стену код пропущен. И игрок проходит сквозь стены.

Сделайте те же самые изменения кода walk-through-walls для спрайта Blue Cat. Только вместо нажатой клавиши lсделайте ее нажатой клавишей q. Второй игрок может проходить сквозь стены. Когда нажата клавиша Q.

В этой главе вы создали игру, которая

изображение У него есть кошачий спрайт. Который может ходить вверх, вниз. Влево и вправо. Когда игрок нажимает определенные клавиши

изображение У него есть стены сквозь которые эльфы не могут пройти

изображение Транслирует сообщения от одного спрайта которые может принимать другой спрайт

изображение Имеет лабиринтный спрайт с восемью различными костюмами

изображение Поддержка двух игроков использующих разные клавиши клавиатуры

изображение Добавляет ловушки которые включаются через случайные промежутки времени чтобы задержать игроков

изображение Включает в себя чит-режимы. Которые позволяют кошкам проходить сквозь стены

Игра для двух игроков более захватывающая. Чем игра для одного игрока. Теперь, вместо того. Чтобы просто решить лабиринт. Вы мчитесь против другого игрока! И вы можете показать свою игру с царапинами кому-то еще.

В главе 4вы будете работать с баскетбольной игрой. Эта игра использует вид сбоку. В отличие от лабиринта с высоты птичьего полета. Но это означает. Что вы сможете добавить прыжки и гравитацию. Которые отлично подходят для использования во многих типах скретч-игр!

изображение