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%. 답답한 결과. 그중에서도 노회찬의 낙선이 가장 아쉽다.
중앙선거관리위원회 투표진행상황 페이지
선거결과 페이지: 위키백과, 네이버