Образовательная галактика Intel®

Блог Участника

Запись блога

Как найти чёрную кошку в тёмной комнате? Делаем флеш-игру

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

Надо сказать, что можно легко превратить эту развлекательную игру в учебную, например, в игру по географии по поиску стран или городов на карте; или в игру по биологии по поиску насекомых в траве; или в игру по информатике по поиску символов и т.д.

Принцип игры таков: игроку нужно найти все спрятанные в игровом поле объекты и щёлкнуть по ним курсором. Если все объекты найдены, то осуществляется переход к другому кадру с надписью «Молодец!».

Игра состоит всего из двух кадров. В каждом из этих кадров ставим команду stop, чтобы не происходил спонтанный переход от кадра к кадру при запуске игры. Размещаем в кадрах фон, - пейзаж или комнату, в которой спрячем котов. Вполне достаточно одну картинку кота поместить в мувиклип в библиотеке, а затем, размещая котов на сцене игрового кадра, присваивать копиям мувиклипов с одним и тем же котом, имена с разными порядковыми номерами от нуля до любого количества, как вам хочется: «cat0», «cat1», «cat2», «cat3», «cat4», «cat5», «cat6», «cat7», «cat8», «cat9». У меня в игре 10 котов. Одного я замаскировала аж на Луне…

Далее пишем код для игры в специальном мувиклипе «Action». Этот мувиклип размещаем в игровом кадре за сценой (он невидимый).
При загрузке клипа в нем создается массив found. Следующий код заполняет массив значениями false:

onClipEvent (load) {
// Создаем массив, в который записываем, какие коты найдены
found = [];
for (i=0; i<10; i++) {
found[i] = false;
}
}

При нажатии левой кнопки мыши положение курсора сохраняется в переменных х и у. Затем, при помощи функции hitTest эти значения соотносятся с координатами клипов котов. Когда совпадение найдено, соответствующее изображение подсвечивается красноватым цветом. Цвет, кстати, можно запрограммировать любой, - главное, чтобы он контрастировал с фоном. Подсветка нужна для того, чтобы изображение спрятанного кота выделилось из фона, и игрок видел, какого кота он уже нашёл и щёлкнул курсором по нему. Каждый щелчок мышью запускает проверку массива found на наличие значения false. Это означает, что, по крайней мере, ещё один кот пока не найден. Когда все коты найдены, клип переходит к следующему кадру:

onClipEvent (mouseDown) {
// Определяем, в каком месте пользователь щелкнул мышью.
х = _root._xmouse;
у = _root._ymouse;
// Проверяем, какое изображение кота найдено,
for (i=0; i<10; i++) {
if (_root"cat"+i], hitTest(x, y, false)) {
// Изменяем цвет кота.
myColor = new Color(_root["cat"+i]);
myColor.setTransform({rb:100,bb:10,gb:0});
// Запоминаем, что кот найден
found[i] = true;
break;
// Проверяем, все ли коты найдены.
gameover = true;
for (i=0; i<10; i++) {
if (found[i] == false) {
// Если хотя бы один кот еще не найден, игра не закончена.
gameover = false;
//если пользователь нашёл всех котов, то заканчиваем игру,
if (gameover) {
_root.gotoAndPlay ("Game Over");
}
}

При этом "Game Over" это метка второго кадра или имя второй сцены, куда выходит игрок, найдя всех котов и щёлкнув по ним.

В игре можно менять количество объектов (котов), можно менять цвет подсветки, фон, сюжет, но принцип останется одинаковым для подобных игр. Все три игры сделаны по одному принципу: "Включи свет, найди котов", игра "Санта", игра "Коты в доме".

Теги к этой записи:

Комментарии

Активный пользователь

  • Группа: Пользователи
  • Сообщений: 448
  • Регистрация: 16.7.2010
  • Номер участника: 85880
Предупреждение

Елена, огромное спасибо! Изучаю... Вопрос: found = []; в первом коде чему равен, показалось, что символ не отобразился правильно.

Активный пользователь

  • Группа: Эксперт портала
  • Сообщений: 1183
  • Регистрация: 10.4.2010
  • Из: Новосибирск
  • Номер участника: 84512
Предупреждение

В мувиклип "Action" добавляете код. Всё должно работать

Активный пользователь

  • Группа: Эксперт портала
  • Сообщений: 1183
  • Регистрация: 10.4.2010
  • Из: Новосибирск
  • Номер участника: 84512
Предупреждение

Сам мувиклип "Action" в первом кадре вне игрового поля. Игроку невидим!

Активный пользователь

  • Группа: Эксперт портала
  • Сообщений: 1183
  • Регистрация: 10.4.2010
  • Из: Новосибирск
  • Номер участника: 84512
Предупреждение

Объекты (коты) - копии мувиклипов на сцене с порядковыми номерами от 0 до 9 (в моей игре)



Сообщение отредактировал rat - 15.12.2014, 18:51

Активный пользователь

  • Группа: Пользователи
  • Сообщений: 448
  • Регистрация: 16.7.2010
  • Номер участника: 85880
Предупреждение

Спасибо, теперь увидела. Коты очень милые!

Сообщение отредактировал zukovaivik - 15.12.2014, 18:49

Активный пользователь

  • Группа: Эксперт портала
  • Сообщений: 1183
  • Регистрация: 10.4.2010
  • Из: Новосибирск
  • Номер участника: 84512
Предупреждение

Во второй кадр (или во вторую сцену) нужно обязательно поставить метку "Game Over", чтобы переход осуществился правильно.



Сообщение отредактировал rat - 15.12.2014, 19:16

Активный пользователь

  • Группа: Пользователи
  • Сообщений: 448
  • Регистрация: 16.7.2010
  • Номер участника: 85880
Предупреждение

Елена, можно еще один вопросик? Как сделать проверку, попал ли объект в заданную область, мы именно над этим бились, но безуспешно. Вот у Вас есть игра про повара и борщ, мне очень интересен и важен такой сценарий. Буду очень ждать ответа.

Активный пользователь

  • Группа: Эксперт портала
  • Сообщений: 1183
  • Регистрация: 10.4.2010
  • Из: Новосибирск
  • Номер участника: 84512
Предупреждение

Цитата(zukovaivik @ 16.12.2014, 23:12)
Как сделать проверку, попал ли объект в заданную область, мы именно над этим бились, но безуспешно. Вот у Вас есть игра про повара и борщ, мне очень интересен и важен такой сценарий.

В той игре про повара проверяются координаты объектов. Там кастрюля не сдвигается с места и именно её координаты сравниваются. Там код простой, но из-за того, что расписаны все предметы со своими координатами подробно, то он очень длинный. На пару страниц точно! biggrin.gif Пост напишу позже.

Сообщение отредактировал rat - 17.12.2014, 8:59

Статьи по этой теме

« Июнь 2017 »
ВПВСЧПС
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

Последние записи

Мои ссылки в блоге

Последние комментарии

Мое изображение

3 пользователей просматривает
3 гостей
0 участников
0 анонимных участников

Категории

Поиск в блоге


Наверх