Game Tutorial OOP 5

목표

  • Player, Enemy 클라스를 수정하여 충돌을 검사합니다.

코드

**소스 코드: game-tutorial-oop5.js

이전 튜토리얼에서 변경이 없는 부분은 설명을 생략합니다.

Player.prototype._calculate = function(){
  var enemy = this.data.refMainObjects.enemy;
  var frame = this.data.refMainObjects.frame;
  this.move();
  this.processCollusionToEnemy(enemy,frame);
};

player의 이동 후에 enemy와의 충돌을 확인하는 processCollusionToEnemy 함수를 호출합니다.

Player.prototype.processCollusionToEnemy = function(enemy,frame){
  if(this.data.y==enemy.data.y && this.data.x<=enemy.data.x && this.data.x+this.data.text.length>=enemy.data.x){
    frame.addScore();
    enemy.init();
  }
};

processCollusionToEnemy 함수입니다.

Enemy.prototype._calculate = function(){
  var frame = this.data.refMainObjects.frame;
  var player = this.data.refMainObjects.player;
  this.move();
  if(this.checkHitFrame(frame)){
    this.init();
  }
  player.processCollusionToEnemy(this,frame);
};

enemy 이동 후에도 player의 processCollusionToEnemy 함수를 호출해 줍니다.

예제의 실행

스크린을 한번 클릭한 후에 키보드 방향키를 눌러주면 플레이어가 움직입니다

현재 페이지의 브라우저 콘솔을 연 다음 아래의 명령어들을 입력하여 바로 테스트해 봅시다.

main.inactive() // main과 main.objects들을 비활성화 시킵니다.(frame, enemy, player가 비활성화됩니다.)
main.init() // main과 main.object들이 생성됩니다. (frame, enemy, player가 생성됩니다.)
main.objects.player.inactivate() // player를 비활성화 시킵니다.
main.objects.player.init() // player를 초기화 시킵니다.
main.objects.enemy.inactivate() // enemy를 비활성화 시킵니다.
main.objects.enemy.init() // enemy를 초기화 시킵니다.
main.objects.frame.inactivate() // frame을 비활성화 시킵니다.
main.objects.frame.init() // frame을 초기화 시킵니다.

마치며..

Text Game Maker JS를 라이브러리로써 매니저들(TM.ScreenManager, TM.InputManager, TM.DebugManager)만 사용해서 게임을 만드는 방법과, 프레임워크로써 매니저에 TM.IObject, TM.ILoopObject, TM.IProgram를 더해 객체지향적(OOP)으로 게임을 만드는 방법까지 알아보았습니다.

프레임워크로써 사용하는 방법은 언뜻 보기에는 더 복잡해 보이지만, Text Game Manager JS 프레임워크를 잘 이해하고 있다면 복잡한 프로그램을 만들 때 더욱 이해하기 쉽게 프로그램을 만들 수 있습니다.

라이브러리로써만 사용해도 텍스트 프로그램을 만들 때 상당히 유용하므로 많이 사용해 주셨으면 합니다. 혹시 완성된 프로그램이 있다면 저에게 알려주세요!

댓글

댓글쓰기

이 글에 댓글을 다시려면 SNS 계정으로 로그인하세요. 자세히 알아보기

UP