Реализация алгоритмов случайного выбора событий и управления игровыми объектами в игровом приложении
Бесплатный доступ
В данной статье рассмотрена реализация игрового приложения с реализацией случайного выбора событий и управления игровыми объектами в Adobe Animate CC с использованием языка программирования ActionScript 3.0
События, случайный выбор событий, игровые объекты, управление игровыми объектами
Короткий адрес: https://sciup.org/140278277
IDR: 140278277
Текст научной статьи Реализация алгоритмов случайного выбора событий и управления игровыми объектами в игровом приложении
В данной статье будет рассмотрена реализация игрового приложения в Adobe Animate CC с использованием языка программирования ActionScript 3.0
Компьютерная игра — компьютерная программа, служащая для организации игрового процесса, связи с партнёрами по игре, или сама выступающая в качестве партнёра.
На сцене расположены два прямоугольных объекта с именами event1 и event2, они отвечают за генерацию событий
События и их случайный выбор
Рисунок1. Прямоугольники Event1 и Event2

Event1 и Event2 находятся за пределами видимой зоны игрока и перемещаются по координате y на значение равное 3. Первый запускает генерацию и вызов события если его координата по y>=y игрока, второй завершает его в аналогичной ситуации. События в данном случае различаются и определяются переменной eventtype, которая определяется с помощью функции Math.Random() *3 = числом от 0 до 2. Все перечисленные выше функции обеспечивает функция Events, код которой расположен ниже. function events(){ event1.y += 3;
event2.y += 3;
evt = true;
if (evt == true){ evt = false; } } if (event1.y >= 1000) { event1.y = -1000; } if (event2.y >= 1000) { event2.y = -1000; } }
Каждую секунду 60 раз вызывается функция EF – она является основой всей игры, в ней происходит проверка различных условий и вызов функций для проверки наступления событий, определение столкновений, а так же перемещений персонажа и остальных интерактивных игровых объектов, пока активным является фрейм №1 – пока жив персонаж. Её код:
function EF(e:Event)
if (player_alive == true) { control();
events(); } if ((evkolv == 4) event1.y = 0;
event2.y = 0;
boss_spawn(310,-407);
boss_spawned = true; } if (evt == true) { switch(eventtype){ case 0:
break;
-
case 1:
ex = -105;
ey = 50;
break;
-
case 2:
ex = 805;
ey = 160;
break; } } else{ switch(eventtype){ case 0:
break;
-
case 1:
break;
-
case 2:
break; } } }
Данная функция так же производит подсчет количества пройденных событий. Так после того как значение evkolv=4 генерация событий завершается и происходит вызов завершающего события – появление «босса».
Игровые объекты
Астероиды это объекты типа MovieClip, представляющие собой картинку астероида с определенными границами в виде прямоугольника.
Рисунок 2. Астероид

Их логика довольно проста, после появления, пока они живы, их координата по x и по y меняется на сгенерированное значение при создании этого объекта.
function ast_fly(e:Event) { var new_ast:MovieClip = e.currentTarget as MovieClip;
Корабли это объекты типа MovieClip, представляющие из себя картинку корабля с определенными границами в виде прямоугольника.
Рисунок 4. Вид Корабля

Существует два варианта появления врагов.
1 – при eventtype = 1 и 2 при eventtype = 2.
В первом случае враги появляются в левом верхнем углу и вылетают по синусоиде направо, во втором справа налево, появляясь в правом верхнем углу.
Рисунок 5. Схематический пример перемещения кораблей

Рисунок 6. Перемещение объекта в наблюдаемой игроком зоне

Перемещение по синусоиде создано не с помощью математических функций а с использованием анимации в MovieClip’е так этот объект является анимированным и имеет 240 кадров анимации, с 1 по 60 он опускается вниз, затем с 61 по 120 идет обратно, с 121 по 180 идет вверх и с 181 по 240 возвращается в исходное положение. Таким образом движение по синусоиде – иллюзия, объект движется на самом деле только по оси ox.
function enemy_mind(e:Event){ var new_enemy:MovieClip = e.currentTarget as MovieClip;
new_enemy.k = 1;
new_enemy.destrenemy = false;
switch (new_enemy.h){
-
case 1:
new_enemy.x += leftspeed;
if (new_enemy.currentFrame == 60) { enemy_shoot(new_enemy.x+41,new_enemy.y+110,1); } if (new_enemy.currentFrame == 180) { enemy_shoot(new_enemy.x+41,new_enemy.y-10,1);} if (new_enemy.x>= 830) { new_enemy.destrenemy = true; } break;
-
case 2:
new_enemy.x -= leftspeed;
if (new_enemy.currentFrame == 60) { enemy_shoot(new_enemy.x+41,new_enemy.y+110,1); } if (new_enemy.currentFrame == 180) { enemy_shoot(new_enemy.x+41,new_enemy.y-10,1); } if (new_enemy.x <= -180) { new_enemy.destrenemy = true; } break; } switch(eventtype){
-
case 1:
if ((new_enemy.currentFrame == 1)+(new_enemy.currentFrame == 240)){ new_enemy.gotoAndPlay(2); } break;
-
case 2:
if ((new_enemy.currentFrame == 1)+(new_enemy.currentFrame == 240)){ new_enemy.gotoAndPlay(2); } break; }
ЗАКЛЮЧЕНИЕ
В результате работы было реализовано игровое приложение в среде разработки Adobe Animate CC. Был показан детальный разбор исходного кода программы в плане генерации событий и управления игровыми объектами, а так же, описание некоторых встроенных функций на основе которых он был разработан.