Flash+actionScript 3.0으로 만든 두더지 잡기
게임.
* 마우스로 구멍에서 나오는 두더지를 클릭하여 잡거나 키보드의 Q,W,E,A,S,D 키를
클릭하여 잡을 수도 있다.
* 두더지 이외의 곳을 클릭할 경우 에너지가 1칸 줄어든다.
* 시간이 경과함에 따라 화면위에 위치한 에너지 바 속 에너지가 차츰 줄어 들게 되는데 에너지가 모두 떨어지면
게임 오버가 된다.
* 두더지를 1마리 잡을 때 마다 에너지가 2칸씩 회복된다.
* 두더지 10마리를 잡을 때 마다 레벨이 올라간다.
* 레벨이 올라가면 두더지의 등장 속도가 빨라지고 에너지 바의 감소속도가 증가한다.
14/7/30 수 |
두더지 잡기 게임 actionScript 3.0 소스 코드:
var point:int = 0;
var level:int = 1;
var levelCheck:int = 60; //level별로 난이도 상승 조절용
var energy:int = 18;
var energyTimer:Timer=new Timer(2000); //에너지 감소 타이머 2초
var delay:int = 0;
var holesX:Array = [70, 133, 193, 193, 243, 313]; //구멍 x 위치
var holesY:Array = [161, 107, 161, 60, 107, 161]; //구멍 y 위치
var holesK:Array = ["a","q","s","w","e","d"]; //구멍과 키보드 버튼 연결용
var holeK;
function init(){
startGame();
}
function startGame(){ //게임 시작 처리 함수
point = 0; //변수들 초기화
level = 1;
levelCheck = 60;
energy =18;
delay = 0;
pointTxt.text = String(point); //텍스트필드 초기화
levelTxt.text=String(level);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mDown);//마우스 이벤트
//mole.addEventListener(MouseEvent.MOUSE_UP, mUp);
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey);//키보드 이벤트
addEventListener(Event.ENTER_FRAME, loop);//매 프레임 실행 루프
energyM.gotoAndStop(energy);
energyTimer.delay = 2000;
energyTimer.start();
energyTimer.addEventListener(TimerEvent.TIMER, onTimer);
}
function gameOver(){ //게임 오버 처리 함수
mole.removeEventListener(MouseEvent.MOUSE_DOWN, mDown);
stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKey);
removeEventListener(Event.ENTER_FRAME, loop);
energyTimer.stop();
gameMode.gotoAndStop("gameOver");
gameMode.restartBut.addEventListener(MouseEvent.CLICK, restartGame);
gameMode.restartBut.addEventListener(MouseEvent.MOUSE_OVER, reOver);
gameMode.restartBut.addEventListener(MouseEvent.MOUSE_OUT, reOut);
}
function reOver(e:MouseEvent){ e.currentTarget.gotoAndStop(2);}
function reOut(e:MouseEvent){ e.currentTarget.gotoAndStop(1);}
function restartGame(e:MouseEvent){ //게임 재시작 처리 함수
gameMode.restartBut.removeEventListener(MouseEvent.CLICK, restartGame);
gameMode.restartBut.removeEventListener(MouseEvent.MOUSE_OVER, reOver);
gameMode.restartBut.removeEventListener(MouseEvent.MOUSE_OUT, reOut);
gameMode.gotoAndStop("game");
startGame();
}
function onTimer(e:TimerEvent){ //타이머 처리 함수
if(energy > 0){
energy--;
energyM.gotoAndStop(energy);
}else{ gameOver(); } //에너지가 0이면 게임오버
}
function loop(e:Event){ //매 프레임 실행 루프 함수
delay++;
if(levelCheck > 20){
levelCheck = 60-level*5;
}
if(delay > levelCheck){
var randNum = Math.floor(Math.random()*6);
mole.x = holesX[randNum]; //두더지 나올 구멍 위치 정하기
mole.y = holesY[randNum];
holeK = holesK[randNum];
mole.gotoAndPlay(1);
delay = 0;
}
}
function onKey(e:KeyboardEvent){ //키보드 클릭시 처리 함수
switch(e.keyCode){
case 65: keyCheck("a"); break;
case 83: keyCheck("s"); break;
case 68: keyCheck("d"); break;
case 81: keyCheck("q"); break;
case 87: keyCheck("w"); break;
case 69: keyCheck("e"); break;
}
}
function keyCheck(key){//클릭한 키와 두더지 나온 구멍이 맞는지 체크 함수
if(key == holeK){
holeK = "";
mole.gotoAndPlay("hit");
hitMole();
}else{ //두더지가 나온 곳 이외의 구멍 선택시
missHit();
}
}
function mDown(e:MouseEvent){//마우스 다운시 처리
//trace(e.currentTarget.name, e.target.name);
if(e.target == mole){
e.target.gotoAndPlay("hit");
hitMole();
}else{ missHit(); }
}
function hitMole(){ //두더지 잡았을 때 처리
point++; //점수 올리기
pointTxt.text = String(point); //점수 표시
if((point % 10) == 0){ //매 10점마다 레벨업.
level++;
levelTxt.text=String(level);
gameMode.gotoAndPlay("levelUp");
if(energyTimer.delay > 400){
energyTimer.delay -= 100; //타이머 딜레이 시간 줄이기
}else energyTimer.delay = 400; //타이머 최소 딜레이
energyTimer.stop();
energyTimer.start();
}
if(energy < 18){
energy += 2; //에너지 회복
energyM.gotoAndStop(energy); //에너지 표시
energyTimer.stop();
energyTimer.start();
}
}
function missHit(){ //두더지 이외의 곳 선택시 처리
if(energy > 0){ //에너지가 남았으면
energy--; //에너지 삭감
energyM.gotoAndStop(energy); //에너지 표시
energyTimer.stop();
energyTimer.start();
}else gameOver(); //에너지가 0이하면 게임오버
}
init(); |
* '개발자를 위한 웹게임 쿡북'의 HTML5 + CSS3 + JavaScript + atom.js(JavaScript
Library)를 이용한 두더지 잡기 게임 코드를 보다가 짜증나서 그냥 Flash + ActionScript 3.0으로
만든 것. 역시 HTML5 + CSS3 + JavaScript 조합이 Flash + ActionScript 3.0
조합을 따라오려면 아직 먼 듯 보인다. 브라우저 간 호환성 문제, 편의성, 제작 속도, 코드의 간결함, 완성도
등 거의 모든 면에서 떨어지는 듯 보인다. 게다가 플래시는 원래 웹 그래픽, 애니메이션으로 시작한 툴인만큼 그래픽이나
애니메이션 처리에 있어서의 편리함은 거의 독보적이다.
* 오늘 7/30 상반기 재,보궐 선거가 있었던 모양. 총 15명의 국회의원 중 11명이 새누리, 4명이 새정치민주연합.
전체 투표율 32.9%. 답답한 결과. 그중에서도 노회찬의 낙선이 가장 아쉽다.
중앙선거관리위원회
투표진행상황 페이지
선거결과 페이지: 위키백과,
네이버
|