TIL

[웹소켓] Chrome_dino 프로젝트 트러블슈팅

nbcssw 2024. 10. 7. 11:02

게임이 재시작될 때 스테이지 정보가 초기화되지 않아 처음부터 점수가 빠르게 오름

...

if (gameover) {
    showGameOver();
    score.currentStage = 0;
  }
  
  ...

index.js의 게임루프에서 gameover 됐을 때, 현재 스테이지를 초기화시켜줘서 해결함

 

 

아이템이 올바른 스테이지에서 생성되지 않음

// Score.js
...

getCurrentStageId() {
    return assets.stage.data[this.currentStage].id;
  }
  
...


// index.js
...

itemController.update(gameSpeed, deltaTime, score.getCurrentStageId());

...


// ItemController.js
...

getItemsPerStage(currentStageId) {
    const itemUnlockIndex = assets.item_unlock.data.findIndex((e) => e.stage_id === currentStageId);

    return assets.item_unlock.data[itemUnlockIndex].item_id;
  }

 createItem(currentStageId) {
   const itemsPerStage = this.getItemsPerStage(currentStageId);
   const index = this.getRandomNumber(0, itemsPerStage.length - 1);
   const createdItem = assets.item.data.find((e) => e.id === itemsPerStage[index]);
   const itemInfo = this.itemImages[itemsPerStage[index] - 1];
   const x = this.canvas.width * 1.5;
   const y = this.getRandomNumber(10, this.canvas.height - itemInfo.height);

   const item = new Item(
     this.ctx,
     itemInfo.id,
     x,
     y,
     itemInfo.width,
     itemInfo.height,
     itemInfo.image,
     createdItem.score,
   );

   this.items.push(item);
  }
  
  ...

Score.js에 현재 스테이지의 Id를 받아오는 함수를 만들어서 index.js의 게임루프 부분에서 itemController를 호출할 때 현재 스테이지의 Id를 값으로 넣어줌. ItemController.js에서는 현재 스테이지 Id를 통해 현재 스테이지에서 획득 가능한 아이템 정보에 따라 아이템을 생성함.

'TIL' 카테고리의 다른 글

[모의 면접 준비] 전송 계층 프로토콜  (0) 2024.10.28
Buffer  (0) 2024.10.22
모의면접 준비  (0) 2024.09.30
[Node.js 게임서버 개발] 웹소켓  (1) 2024.09.26
[프로그래머스] MySQL - 월별 잡은 물고기 수 구하기  (2) 2024.09.23