Мы хотим, чтоб Интернет был Вам другом много лет! Будешь знать Семь правил этих- смело плавай в интернете.
RSS

воскресенье, 22 февраля 2015 г.

Проект Игра «Арканоид»



Управляя с помощью бегунка движущейся по горизонтали палочкой, нужно шариком сбить все кирпичи.
Решение
Идея игры, мягко говоря, не нова. Она появилась на заре эры персональных компьютеров. Тем интереснее попробовать свои силы при создании собственной версии этой игры.
До этого момента мы не зря потрудились, так как последние задачи связаны как раз с этим проектом. Мы уже знаем, как нарисовать ряд кирпичей и как задать движение шарика. Нам осталось выяснить, как с помощью бегунка можно управлять палочкой. Давайте с этого и начнём. Создадим в новом проекте черепашку и нарисуем форму палочки примерно так:

Рис. 41
Перетащим созданную форму на черепашку. Теперь, как и в задаче «Аквариум с рыбками», сместим палочку в крайне левое (или крайне правое) положение и посмотрим текущую координату по оси х. Создадим бегунок, назовём его «Двигай». В качестве минимального и максимального значений зададим крайние значения координаты х (см. рис. 42).
Рис. 42
Процедура у черепашки-палочки будет выглядеть очень просто: чётко фиксируем черепашку по оси у (нов_у -160), а по оси х координату надо брать из бегунка. Для этого нужно написать нов_х Двигай.
это палка
нов_у -160
нов_х Двигай
конец
Не забываем поместить имя процедуры в «Правила» и поставить «Много раз». Оживим черепашку и подвигаем бегунок. Если палочка при этом двигается, значит всё написано верно.
Следующим этапом будет создание черепашки, рисующей ряд кирпичей. Посмотрите задачу 8.5. Проделайте все необходимые действия, которые там описаны. Добавим в конец процедуры команды, скрывающие и отключающие черепашку.
это кирпичи
сг
нм[-330 160]
нк 90
повтори 13 [штамп вп 55]
сч
выкл
конец
Не хватает шарика. Обратимся к задаче 8.4. Воспользуемся вторым вариантом решения этой задачи (в координатах). Подводя последовательно шарик к правой, левой и верхней границе, запомним его крайние положения по соответствующим осям. Нужно чтобы от этих границ шарик отскакивал. Если же шарик пролетит мимо палочки (у_коор < -160), это означает, что игра проиграна. Надо показать окно с сообщением и остановить игру.
это шарик
вп 1
если х_коор >  364 [если_иначе курс = 0 - 180 [пр 90][лв 90]]
если х_коор < -364 [если_иначе курс = 0 - 180 [пр 90][лв 90]]
если у_коор >  205 [если_иначе курс = 0 - 180 [пр 90][лв 90]]
если у_коор < -160 [сообщи [Проиграл!] останов]
конец
Чтобы шарик отбивался палочкой, надо добавить условие касания двух черепашек. Сначала приведём его в общем виде:
если коснулись? "имя1 "имя2 [действия]
В данном случае действия будут точно такими же, как при касании шариком любой границы:
если коснулись? "ч1 "ч3 [если_иначе курс = 0 - 180 [пр 90][лв 90]],
где ч1 – имя черепашки-палочки, а ч3 – имя черепашки-шарика.
Теперь надо подумать, как сделать так, чтобы кирпичи исчезали при попадании в них шарика. Оказывается, это довольно просто – надо перекрашивать их в цвет фона. То есть, как только под черепашкой-шариком окажется красный цвет кирпича, надо закрасить его белым цветом. При этом надо вести счёт попаданиям. Здесь есть некоторые трудности, так как нужен какой-то счётчик, в котором бы накапливалось число попаданий. Поскольку что такое переменная и как с ней работать мы пока не знаем, то выйти из этого затруднительного положения можно следующим образом. Воспользуемся в качестве такого счётчика размером пера шарика, которое в данной задаче мы вообще никак не используем. Зададим изначально в кнопке «Начать игру» минимальный размер пера – 1. При каждом попадании будем увеличивать его размер на 1, точно также как это сделано в задаче 8.1 (Алгоритм роста репки). Только теперь будем увеличивать не размер черепашки и размер её пера. Не забудем, что при попадании шарика в кирпич, нужно чтобы он отскакивал от кирпича точно также как от стенок.
если цп = 15 [если_иначе курс = 0 - 180 [пр 90][лв 90] нц 0 крась нрп размер_пера + 1]
Добавим проверку условия победы:
если размер_пера = 14 [сообщи [Победа!] останов]
Почти готово. На всякий случай приведём процедуру для шарика ещё раз уже целиком:
это шарик
вп 1
если х_коор >  364 [если_иначе курс = 0 - 180 [пр 90][лв 90]]
если х_коор < -364 [если_иначе курс = 0 - 180 [пр 90][лв 90]]
если у_коор >  205 [если_иначе курс = 0 - 180 [пр 90][лв 90]]
если у_коор < -160 [сообщи [Проиграл!] останов]
если цп = 15 [если_иначе курс = 0 - 180 [пр 90][лв 90] нц 0 крась нрп размер_пера + 1]
если размер_пера = 14 [сообщи [Победа!] останов]
конец
Как всегда не забудьте поместить имя этой процедуры в «Правила» и поставить «Много раз». Добавьте кнопку «Начать игру». Инструкции в ней будут такими:
ч3, нрп 1 нк 45 нм [0 -150] каждая [вкл]

Рис. 43

Отладьте проект так, чтобы не было ошибок. Проверьте, появляются ли у вас сообщения о победе и поражении. Если всё нормально, то теперь можно дать кому-то поиграть в созданную вами игру.

0 коммент.:

Отправить комментарий