Уроки 65–68. Проект «Моя игра»

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

1. Предварительное обсуждение: эскиз компьютерной игры, потенциальные пути реализации проекта

Предложите своим ученикам сделать компьютерную игру: пусть это будет лабиринт, в котором находится Черепашка. Задача играющего – провести черепашку к выходу из лабиринта так, чтобы она не задела стен. Обсудите с классом, как можно было бы управлять черепашкой во время игры: для этого проще всего использовать кнопки, с помощью которых можно управлять черепашкой. Не исключено, что во время обсуждения будут высказаны различные предложения об усовершенствовании игры: устроить ловушки в лабиринте, вести счет попыткам и т. д. Отложите все подобные предложения, сначала необходимо создать первый эскиз игры.

2. Самостоятельная работа за компьютером: рисование лабиринта, создание кнопок для управления черепашкой

В процессе данной самостоятельной работы ученики рисуют лабиринт и создают кнопки для управления движением черепашки. Конечно, форма лабиринта может быть какой угодно, но обратите внимание ребят, что стенки лабиринта должны быть достаточно толстыми, иначе черепашка рискует их проскочить, не заметив. Не стоит делать лабиринт разноцветным: в этом случае нам будет сложно научить черепашку реагировать на стенки лабиринта. Конечно, ваши ученики уже знают, как научить черепашку слушаться щелчка мышки. Поэтому для них не составит труда сделать черепашку, постоянно ползущую вперед по листу. Кнопки для управления ученики пусть формируют по своему вкусу: поворот направо/налево под прямым углом или на небольшой угол, разворот и пр. Возможно, некоторые из учеников, нетвердо усвоившие разницу между однократным и многократным выполнением команд, установят в кнопках управления многократный поворот – обсудите с ними, почему черепашкой трудно управлять с помощью таких кнопок. Если кто-либо из ребят захочет запускать и останавливать черепашек кнопками, то посоветуйте им использовать в кнопках команды «засни» и «проснись».

3. Обсуждение: как научить черепашку реагировать на препятствие

Черепашка движется по лабиринту, мы можем управлять ее движением, но она, совершенно не замечая стен, проходит сквозь них: ведь мы не объяснили Черепашке, что она должна реагировать на стены лабиринта. Черепашка умеет видеть цвет листа в том месте, где она находится, поэтому мы можем научить ее реагировать на цвет стен лабиринта. При обсуждении реакции на цвет следует обратить внимание детей на то, что в данном случае Черепашка не различает оттенков цветов, следовательно, она будет одинаково реагировать на все оттенки, например, красного – как на светлые, так и на темные. Черепашка «видит» цвет под центром своего брюшка, поэтому она немножко заползает за границу цвета, прежде чем замечает его.

Обсудите со своими учениками, как должна реагировать черепашка, столкнувшись со стенкой лабиринта. Конечно, можно просто остановить черепашку – такую реакцию проще всего реализовать с помощью команды «засни». Однако реакция черепашки может быть и гораздо сложнее: например, отскакивание от стенки, звуковой сигнал, поворот и т. п. При описании реакции, состоящей из последовательного выполнения нескольких команд, существенна последовательность этих команд. Так, поскольку черепашка реагирует на стенку лабиринта в тот момент, когда она уже пересекла границу цвета, прежде всего необходимо вернуть ее в лабиринт, попросив немножко отступить назад. Лишь после этого следует приказывать ей повернуться и выполнять какие-то иные действия – в противном случае черепашка может начать ползти внутри стенки.

4. Самостоятельная работа за компьютером: использование цветов для программирования черепашки

Если, обучая Черепашку реагировать на стенки лабиринта, ученик забыл, каким цветом нарисован лабиринт, то ему достаточно открыть рюкзачок Черепашки и просто щелкнуть мышкой на соответствующем месте листа – нужный цвет установится автоматически. Черепашка проверяет цвет листа только после выполнения команды, поэтому она никак не отреагирует, если ее просто перетащить мышкой на область, закрашенную каким-то цветом. Черепашка реагирует на цвет в момент пересечения границы закрашенной области и перестает его «видеть» после того, как она пересекла границу и ползет внутри закрашенной области. Напомним, что Черепашка проверяет цвет после каждого выполнения команды, поэтому если границы лабиринта нарисованы тонкими линиями, а Черепашка движется очень большими шагами, то она может перешагнуть границу, не заметив ее.

Реакцию на цвет можно использовать, конечно, не только при столкновении Черепашки со стенками лабиринта. Например, нарисовав цветную черту на выходе из лабиринта, можно научить Черепашку надевать на финише какую-либо новую форму, исполнять мелодию и т. п. Особым цветом могут быть окрашены «опасные места» лабиринта – попав на такой цвет, Черепашка остановится, и игру придется начать сначала.

Интересно использовать случайные повороты при движении по лабиринту: предложите ученикам понаблюдать за движением Черепашки, которая, столкнувшись со стенкой лабиринта, отскакивает назад и поворачивается в случайном направлении.

5. Обсуждение: что делать дальше

Обсудите с классом сделанные работы. Сейчас следует понять, какие можно придумать усовершенствования игры. Скорее всего, у ваших учеников будут разные идеи о том, что делать дальше. Мы не предполагаем, что все ученики реализуют все выдвинутые предложения – пусть каждый из них двигается в том направлении, которое ему более по вкусу. Какие-то из идей могут оказаться слишком сложными для общего обсуждения, в этом случае разумно индивидуально рассмотреть с автором пути осуществления его идеи. Здесь мы постараемся указать некоторые наиболее естественные модификации проекта.

Возможно, что кто-то из ваших учеников захочет поместить в лабиринт клады, которые должна собрать движущаяся Черепашка. Проще всего для кладов сделать новые Черепашки и научить эти Черепашки-клады реагировать на встречу с движущейся Черепашкой. Реакция может быть очень простой: например, раздается какой-то звук и Черепашка-клад надевает новую форму или прячется. В том случае, если клад прячется, возникнет проблема: как его показать в начале следующей игры. Для этого можно воспользоваться светофором – достаточно научить все клады показываться при включении определенного сигнала светофора.

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

Поскольку иногда игроку приходится начинать игру сначала, была бы полезна команда, устанавливающая Черепашку в начало лабиринта. Если черепашка начинает путешествие с центра листа, то достаточно просто использовать команду домой. Однако обычно приходится создавать специальную команду, возвращающую Черепашку на старт. Записывая такую команду, проще всего начать цепочку с команды домой и потом объяснить, как из центра листа добраться до старта.
Кто-нибудь из ваших сильных учеников может захотеть вести в игре счет: количество собранных кладов, оставшиеся жизни и пр. Для ведения счета удобно иметь отдельную Черепашку-счетчик, управляемую светофором. Пусть мы, например, хотим подсчитывать количество собранных кладов. Черепашка, движущаяся по лабиринту, сообщает счетчику (включив соответствующий сигнал светофора), что найден клад. Получив такое сообщение, счетчик передвигается вперед, штампует картинку и выключает сигнал светофора. Поскольку чаще всего счетчик ведет счет прямо на листе лабиринта, не забудьте перед началом игры заморозить фон, чтобы можно было потом стереть записи счетчика, не тронув сам лабиринт.