**소스 코드: game-tutorial3.js
이전 튜토리얼에서 변경이 없는 부분은 설명을 생략합니다.
var enemy = { x: null, y: null, text: "X", turnCount: 0, turnCountMax: 5, };
enemy 객체를 만듭니다. x와 y는 나중에 주어지게 되므로 일단 null로 표시하였고, turnCount와 turnCountMax는 calculate 함수에서 설명하겠습니다.
function calculate(){ // check key and move player if(TMI.keyboard.checkKey(KEYSET.LEFT) && player.x>2) player.x--; if(TMI.keyboard.checkKey(KEYSET.UP) && player.y>1) player.y--; if(TMI.keyboard.checkKey(KEYSET.RIGHT) && player.x+player.text.length<frame.width-2) player.x++; if(TMI.keyboard.checkKey(KEYSET.DOWN) && player.y<frame.height-2) player.y++; //reset enemy if(enemy.y===null || enemy.y>frame.height-3){ resetEnemy(); } //move enemy if(++enemy.turnCount>enemy.turnCountMax){ enemy.turnCount = 0; enemy.y++; } }
//reset enemy, //move enemy 부분의 코드가 추가되었습니다.
//reset enemy: 게임의 처음 시작(enemy.y===null)이거나 enemy가 프레임 밑줄에 닿는 경우 resetEnemy함수를 호출합니다.
//move enemy: enemy.turnCount는 calculate 함수가 한번 실행될 때마다 값이 1씩 증가하며, enemy.turnCountMax의 값보다 커지면 아래로 한칸 이동하고 다시 값이 0이 됩니다. 즉 enemy.turnCountMax를 간격으로 하여 움직이게 되고, eney.turnCountMax의 값이 작을수록 빨리 움직이게 됩니다.
function draw(){ //clearScreen TMS.clearScreen(); //draw score TMS.insertTextAt(frame.x,frame.y-1,"Score: "); TMS.insertText(frame.score); //draw frame for(var i=0; i<frame.height; i++){ for(var j=0; j<frame.width; j++){ if((i===0 || i==frame.height-1 || j===0 || j==frame.width-2)&&(j%2 === 0)){ TMS.insertTextAt(frame.x+j,frame.y+i,"■"); } } } //draw player TMS.insertTextAt(frame.x+player.x,frame.y+player.y,player.text); //draw enemy TMS.insertTextAt(frame.x+enemy.x,frame.y+enemy.y,enemy.text); }
//draw enemy 부분에 enemy를 그리는 부분이 추가되었습니다.
function resetEnemy(){ enemy.x = 2+Math.floor(Math.random()*(frame.width-4)); enemy.y = 1; enemy.turnCount = 0; enemy.turnCountMax = 3+Math.floor(Math.random()*10); }
enemy의 값들을 재설정하는 함수입니다.
자동으로 움직이는 enemy가 생성되었습니다.
댓글
이 글에 댓글을 다시려면 SNS 계정으로 로그인하세요. 자세히 알아보기