Реализация алгоритмов случайного выбора событий и управления игровыми объектами в игровом приложении
Бесплатный доступ
В данной статье рассмотрена реализация игрового приложения с реализацией случайного выбора событий и управления игровыми объектами в Adobe Animate CC с использованием языка программирования ActionScript 3.0
События, случайный выбор событий, игровые объекты, управление игровыми объектами
Короткий адрес: https://sciup.org/140278277
IDR: 140278277
Implementation of algorithms of random selection of events and control of game objects in the in game application
Resume: In this article will be considered implementation of a gaming application with the implementation of random selection of events and control of game objects in Adobe Animate CC using the ActionScript 3.0 programming language
Текст научной статьи Реализация алгоритмов случайного выбора событий и управления игровыми объектами в игровом приложении
В данной статье будет рассмотрена реализация игрового приложения в 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. Был показан детальный разбор исходного кода программы в плане генерации событий и управления игровыми объектами, а так же, описание некоторых встроенных функций на основе которых он был разработан.