Game Tutorial 3

목표

  • frame의 위에서 아래로 자동으로 움직이는 enemy 객체를 만듭니다.
  • enemy는 x위차와 속력을 부여받으며 frame의 밑줄에 닿으면 reset됩니다.

코드

**소스 코드: 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 계정으로 로그인하세요. 자세히 알아보기

UP