Играть в игру bejeweled 3

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

Миллионы копий игры Bejeweled были проданы, и миллионы людей играют в ее версии для Facebook каждый месяц. Цель игры - поменять местами один драгоценный камень с соседним, чтобы сформировать горизонтальную или вертикальную линию из трех или более драгоценных камней. Затем эти драгоценные камни исчезают, а сверху падают новые, чтобы заполнить пробелы. В этой главе вы напишете полностью рабочий код для прототипа Bejeweled, изучив следующие методы: цикл do while, чтобы создать хотя бы одно повторение действий свойство visible класса DisplayObject, чтобы быстро сделать объекты невидимыми метод split, чтобы разделить строку на массив подстрок с помощью оператора this Выражение with, чтобы определить объект по умолчанию для использования в сценарии На этот раз мы пропустим дизайн игры, потому что есть так много другой работы.

По крайней мере, в этой книге вы уже видели, как сделать хороший дизайн-документ, поэтому у вас не должно возникнуть проблем с тем, чтобы сделать это самостоятельно. Установите свойства документа: ширина px, высота px, синий цвет фона и частоту кадров. Также определите класс документа как Main и сохраните файл под именем bejeweled. В файле bejeweled. Установите его как экспортируемый для ActionScript и оставьте все остальные значения по умолчанию, как это было сделано в предыдущей главе.

Размещение драгоценных камней Может показаться, что добавить в Display List несколько случайных объектов типа DisplayObjects просто, но вы увидите, что вскоре мы столкнемся с некоторыми трудностями.

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

Не закрывайте bejeweled. Сохраните этот файл под именем Main. Sprite; import flash. В функции конструктора Main мы просто вызываем функцию jewelsInit, которая будет управлять размещением драгоценностей.

Как видите, она просто показывает нужный кадр в соответствии со значением val и размещает драгоценный камень, учитывая, что мы играем в квадратные плитки со стороной 60 пикселей. Я также дал этому экземпляру класса DisplayObject имя, чтобы было легче выбрать его мышью, когда это необходимо. Имя состоит из числа, за которым следует знак подчеркивания, а затем номер столбца.

Вы уже видели эту концепцию во время разработки игры "Сапер". Если вы посмотрите приложение, то увидите игровое поле, заполненное драгоценными камнями. Именно тогда становится немного обидно.

Проверьте приложение еще несколько раз, и вы должны увидеть игру, подобную этой: Что не так? У нас уже есть три или более соседних драгоценных камней одного типа в ряду и в столбце. В Bejeweled игровое поле начинается без более чем двух соседних драгоценных камней одного типа, потому что игроку предстоит перемещать драгоценные камни, создавая из них комбинации.

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

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

И наконец, поместите драгоценный камень. Работаем: Проверка линии не отличается от проверки выигрыша в Connect 4. Можно даже сказать, что это намного проще, потому что вам нужно смотреть только по горизонтали и вертикали, не заботясь о диагонали. Следуя концепциям, рассмотренным при создании игры "Connect 4", давайте начнем с создания основных функций. Первая необходимая функция - это та, которая говорит, есть ли в данной строке и столбце определенный драгоценный камень, даже если строка и столбец могут быть неправильными.

Назовем функцию checkGem и сделаем так, чтобы она возвращала true, если в третьей строке и третьем столбце есть драгоценный камень, иначе она возвращает false. Могут быть нулевые значения, когда мы пытаемся найти драгоценный камень в неправильной позиции, которая находится за пределами заполненного массива.

Что мы можем сделать с этой функцией? Мы можем создать другие функции, чтобы проверить, является ли данный драгоценный камень частью комбинации или нет. Мы знаем, что драгоценный камень является частью линии-комбинации, если есть по крайней мере два соседних драгоценных камня одного типа по горизонтали или вертикали. Поэтому легко создать функцию для определения того, является ли драгоценный камень горизонтальной линией-комбинацией.

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

Ее значение равно 1, поскольку начальный драгоценный камень сам является частью строки. Поскольку переменная tmp является значением столбца, ее уменьшение означает перемещение на один столбец влево. Как только мы выходим из цикла, значение переменной tmp сохраняется в col, и мы начинаем сканирование вправо тем же способом. В конце функции возвращается значение streak. Таким же образом мы можем написать функцию colStreak, которая проверяет наличие вертикальных линий.

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

Основная работа происходит в цикле do while, используемом в функции. Цикл do while работает так же, как и цикл while, за исключением того, что код в цикле выполняется как минимум один раз, потому что условие while проверяется в конце цикла.

Основная работа происходит в цикле do while.

Теперь вы можете поиграть и протестировать приложение. Это первая часть урока по созданию игры Bejeweled "три в ряд" на языке ActionScript 3 из книги "Разработка Flash-игр на примере Эмануэле Феронато". Если вам понравился этот урок, пожалуйста, добавьте его в закладки в социальных сетях и сохраните значки ниже.

Навигация

thoughts on “Играть в игру bejeweled 3

  1. Прикольная статья, да и сам сайт я смотрю очень даже не плох. Попал сюда по поиску из Гугла, занес в букмарки :)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *