УДК 004.021
Козлов Д.И. студент 2го курса Башкирский Государственный Университет научный руководитель: Хасанова С.Л., к.ф-м.н.
РФ, Башкортостан, г. Стерлитамак
Kozlov D.I. Second year student Bashkir State University Sterlitamak, Bashkortostan, Russian Federation Scientific director: c.p-ms. Hasanova S.L. РЕАЛИЗАЦИЯ АЛГОРИТМОВ СЛУЧАЙНОГО ВЫБОРА СОБЫТИЙ
И УПРАВЛЕНИЯ ИГРОВЫМИ ОБЪЕКТАМИ В ИГРОВОМ
ПРИЛОЖЕНИИ IMPLEMENTATION OF ALGORITHMS OF RANDOM SELECTION OF EVENTS AND CONTROL OF GAME OBJECTS IN THE
IN GAME APPLICATION.
Аннотация: В данной статье рассмотрена реализация игрового приложения с реализацией случайного выбора событий и управления игровыми объектами в Adobe Animate CC с использованием языка программирования ActionScript 3.0
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
Ключевые слова: события, случайный выбор событий, игровые объекты, управление игровыми объектами.
Keywords: events, random selection of events, game objects, control of game objects.
ВВЕДЕНИЕ
В данной статье будет рассмотрена реализация игрового приложения в Adobe Animate CC с использованием языка программирования ActionScript 3.0
Компьютерная игра — компьютерная программа, служащая для организации игрового процесса, связи с партнёрами по игре, или сама выступающая в качестве партнёра.
На сцене расположены два прямоугольных объекта с именами event 1 и event2, они отвечают за генерацию событий
События и их случайный выбор
Рисунок1. Прямоугольники Event 1 и Event2
♦ о
Event 1 и Event2 находятся за пределами видимой зоны игрока и перемещаются по координате y на значение равное 3. Первый запускает генерацию и вызов события если его координата по y>=y игрока, второй завершает его в аналогичной ситуации. События в данном случае различаются и определяются переменной eventtype, которая определяется с помощью функции Math.Random() *3 = числом от 0 до 2. Все перечисленные выше функции обеспечивает функция Events, код которой расположен ниже. function events(){ eventl.y += 3; event2.y += 3;
if ((eventl.y >= ship.y)&&(event2.y < ship.y)) {
if (evt == false) {
eventtype = Math.random()*3;
evt = true;
evkolv += 1; } }
if ((event2.y >= ship.y) && (eventl.y < ship.y)){
if (evt == true){
evt = false; } }
if (eventl.y >= 1000) {
eventl.y = -1000; }
if (event2.y >= l000) {
event2.y = -l000; } }
Каждую секунду 60 раз вызывается функция EF - она является основой всей игры, в ней происходит проверка различных условий и вызов функций для проверки наступления событий, определение столкновений, а так же перемещений персонажа и остальных интерактивных игровых объектов, пока активным является фрейм №1 - пока жив персонаж. Её код: function EF(e:Event)
if (playeralive == true) { control(); events();}
if ((evkolv == 4) && !(boss_spawned)) {
evt = false;
event1.y = 0;
event2.y = 0;
b ossspawn (310,-407);
boss_spawned = true; }
if (evt == true) {
switch (eventtype){
case 0:
asttimer. start(); break; case 1: ex = -105; ey = 50;
enemy_timer.start();
break;
case 2:
ex = 805;
ey = 160;
enemy_timer.start();
break; } }
else{
switch (eventtype){ case 0:
ast_timer.stop();
break;
case 1:
enemy_timer.stop(); break; case 2:
enemytimer. stop (); break; } } }
Данная функция так же производит подсчет количества пройденных событий. Так после того как значение evkolv=4 генерация событий завершается и происходит вызов завершающего события - появление «босса».
Игровые объекты
Астероиды это объекты типа MovieClip, представляющие собой картинку астероида с определенными границами в виде прямоугольника. Рисунок 2. Астероид _
Их логика довольно проста, после появления, пока они живы, их координата по x и по y меняется на сгенерированное значение при создании этого объекта.
function ast_fly(e:Event) {
var new_ast:MovieClip = e.currentTarget as MovieClip; new_ast.y += new_ast.speedy; new_ast.x += new_ast.speedx }
Корабли это объекты типа MovieClip, представляющие из себя
картинку корабля с определенными границами в виде прямоугольника.
Рисунок 4. Вид Корабля
W
Существует два варианта появления врагов. 1 - при eventtype = 1 и 2 при eventtype = 2.
В первом случае враги появляются в левом верхнем углу и вылетают по синусоиде направо, во втором справа налево, появляясь в правом верхнем углу.
Рисунок 5. Схематический пример перемещения кораблей_
. ' W
вне видимости Область, наблюдаемая игроком вне видимости
Рисунок 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;
newenemy.k = 1; newenemy.destrenemy = false; switch (new_enemy.h){ case 1:
newenemy.x += leftspeed;
if (newenemy.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) { newenemy.destrenemy = true; } break; }
switch (eventtype){ case 1:
if ((new enemy.currentFrame == 1)+(new_enemy.currentFrame ==
240)){
new_enemy.gotoAndPlay(2);}
break;
case 2:
if ((newenemy.currentFrame == 1)+(new_enemy.currentFrame == 240)){ new_enemy.gotoAndPlay(2); } break; }
ЗАКЛЮЧЕНИЕ
В результате работы было реализовано игровое приложение в среде разработки Adobe Animate CC. Был показан детальный разбор исходного кода программы в плане генерации событий и управления игровыми объектами, а так же, описание некоторых встроенных функций на основе которых он был разработан.