Реализация алгоритмов случайного выбора событий и управления игровыми объектами в игровом приложении

Автор: Козлов Д.И.

Журнал: Форум молодых ученых @forum-nauka

Статья в выпуске: 5 (9), 2017 года.

Бесплатный доступ

В данной статье рассмотрена реализация игрового приложения с реализацией случайного выбора событий и управления игровыми объектами в 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. Был показан детальный разбор исходного кода программы в плане генерации событий и управления игровыми объектами, а так же, описание некоторых встроенных функций на основе которых он был разработан.

Статья научная