it leader

슈팅게임 만들기


주요 기능


e.currentTarget

hitTestObject

addChild






import flash.display.MovieClip;

import flash.events.KeyboardEvent;

import flash.events.Event;

import flash.text.engine.EastAsianJustifier;

import flash.text.TextField;


var hero: MovieClip = hero_mc;

var bullet:MovieClip = bullet_mc; //총알선언


var rightPressed :Boolean = false;

var leftPressed :Boolean =false;

var spacePressed :Boolean = false;


var bDamage:Number = 50;

var mHp:Number = 500;


var bulletReady:Boolean = true;   //총알발사 가능 상태 파악

var life:int = 5; //생명 5새

var score: int = 0; // 점수


//텍스트 생명표시

var txtLife : TextField = life_txt;

var txtScore : TextField = score_txt;

var txtMission:TextField = mission_txt;



txtLife.text= String(life);

txtScore.text = String(score);



var point1:MovieClip = hero_mc.point1_mc;

var point2:MovieClip = hero_mc.point2_mc;

var frameCount =0;


txtMission.addEventListener(Event.ENTER_FRAME, ontxtEvent);


function ontxtEvent(e:Event ) :void

{

frameCount = frameCount + 1;

if( frameCount >= 50 && frameCount <=100)

{

txtMission.text = String("Mission start");

}else{

txtMission.text ="" ;

}

if( life == 0 )

{

txtMission.textColor = 0xff0000;

txtMission.text = String(" Game Over " );

}

}





stage.addEventListener(KeyboardEvent.KEY_DOWN, onKDown);

stage.addEventListener(KeyboardEvent.KEY_UP, onKUp);



function onKDown( e: KeyboardEvent ) :void

{

if(e.keyCode == Keyboard.RIGHT) rightPressed = true;

if(e.keyCode == Keyboard.LEFT)  leftPressed = true;


if(e.keyCode == Keyboard.SPACE) spacePressed = true;

}

function onKUp ( e: KeyboardEvent ) :void

{

if(e.keyCode == Keyboard.RIGHT) rightPressed = false;

if(e.keyCode == Keyboard.LEFT) leftPressed = false;

if(e.keyCode == Keyboard.SPACE) spacePressed = false;

}


//영웅이 매 프레임마다 변수에 따라 이동하기

hero.addEventListener(Event.ENTER_FRAME, onHeroEnter );


function onHeroEnter ( e: Event ): void


{

if(rightPressed == true ) 

{

hero.x = hero.x + 10;

}

//화면 밖으로 못나가게 하기 오른쪽

if(hero.x > stage.stageWidth - hero.width/2) hero.x = stage.stageWidth - hero.width/2;

if(leftPressed == true ) 

{

hero.x = hero.x - 10

}

//화면 밖으로 못나가게 하기 왼쪽

if(hero.x < hero.width/2 ) hero.x = hero.width/2;

}



/////////////////////////

//적 생성하기

////////////////////////


this.addEventListener(Event.ENTER_FRAME, onEnter);

function onEnter (e:Event ) : void

{

if(Math.random()<0.05)

{

generateEnemy();

}

currentBoss ++;

if(Math.random()<0.1 && currentBoss > bossInterval)

{

currentBoss = 0;

generateMiddleBoss();

mHp = 500;

}

}

var bossInterval: int = 200;      //200프레임 이후에 등장

var currentBoss: int = 0;



function onEnemyEnter ( e: Event ) : void

{

// 1. 아래로 떨어지기 

var enemy:Enemy= e.currentTarget as Enemy;

enemy.y = enemy.y + 10;

// 2. 총알과 충돌검사

if(enemy.hitTestObject(bullet)==true)

{

score= score + 10;

txtScore.text= String(score);

this.removeChild(enemy);

enemy.removeEventListener(Event.ENTER_FRAME, onEnemyEnter);

bulletReady = true;

bullet.x = 10000;

}

// 3. 주인공과 충돌검사하기!!

if( enemy.hitTestObject(hero))

   {

 if(this.contains(enemy)==true)

{

this.removeChild(enemy);

enemy.removeEventListener(Event.ENTER_FRAME, onEnemyEnter);

}

   life = life -1;

   txtLife.text = String(life);

   

   if(life==0)

   {

      

   }

   

   }

// 3. enemy가 메모리를 먹고 있으므로 

// 화면밖으로 사라진 enemy죽이기

if(enemy.y>450)

{

this.removeChild(enemy);

enemy.removeEventListener(Event.ENTER_FRAME, onEnemyEnter);

}

}


function generateEnemy () :void

{

//enemy 생성 및 화면에 붙이기

var enemy: Enemy = new Enemy();

addChild(enemy);

enemy.x = 550 * Math.random();

enemy.y = -100;

//각 enemy들이 매 프레임마다 할일 정하기

enemy.addEventListener(Event.ENTER_FRAME, onEnemyEnter);

}


function generateMiddleBoss(): void

{

var m:MiddleBoss = new MiddleBoss();

addChild(m);

m.x = 600;

m.y = 50;

m.addEventListener(Event.ENTER_FRAME, onMiddleEnter);

}


function onMiddleEnter ( e:Event ) :void

{

// 1. 아래로내려오기

var m:MiddleBoss = e.currentTarget as MiddleBoss;

m.x = m.x -3;

// 2. 총알과 충돌검사

if(m.hitTestObject(bullet)==true)

{

score = score +10;

txtScore.text = String(score);

mHp = mHp - bDamage;

bulletReady = true;

bullet.y = 10000;

m.play();

if(mHp <= 0 )

{

score = score + 50;

txtScore.text = String(score);

this.removeChild(m);

m.removeEventListener( Event.ENTER_FRAME, onMiddleEnter);

m.gotoAndPlay(10);

}

}

if(m.x < -200)

{

m.removeEventListener( Event.ENTER_FRAME,onMiddleEnter);

this.removeChild(m);

}

}


/////////////////////총알코드


bullet.addEventListener(Event.ENTER_FRAME, onBulletEnter);


function onBulletEnter( e: Event ) : void

{

if( bulletReady == true && spacePressed == true ) 

{

bullet.x = hero.x;

bullet.y = hero.y;

bulletReady = false;

sound_mc.play();

}

//bulletReady 가 false인 경우 위로 올라가기

if(bulletReady ==false)

{

bullet.y = bullet.y -30;

}

if( bullet.y < - 50)

{

bulletReady = true;

}

}



profile

it leader

@dev__pixui

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!