Challenge

CMD 게임 만들기 1Days

kagan-draca 2024. 8. 21. 21:16

오늘부터 개인 과제인 

CMD 로그라이크 게임 만들기를 시작했다.

 

위와 같은 방식으로 

 

유저는

 

공격, 연속 공격, 방어, 도망가기

 

 

가능하고,

 

몬스터는 

 

공격

 

이 가능하다

(선택적으로 추가 기능 구현 해도 됨)

 

코드를 작성하면서

 

Monster 클래스를 상속 받아

Person 클래스를 만들면

코드의 재사용성이 높아지고,

확장성을 높일 수 있다는 사실을 

알게 됐다.

 

그래서,

 

class Monster

{

~~~

}

 

class Person extends Monster

{

~~~~

}

 

형식으로 현재

 

기본 공격과 확률적으로 성공하는 도주 기능을 만들어줬다.

 

class Monster {
  constructor(hp, minDamage, maxDamage) {
    this._hp = hp;
    this._minDamage = minDamage;
    this._maxDamage = maxDamage;
  }

  set hp(value) {
    this._hp = value;
  }

  get hp() {
    return this._hp;
  }

  set minDamage(value) {
    this._minDamage = value;
  }

  get minDamage() {
    return this._minDamage;
  }

  set maxDamage(value) {
    this._maxDamage = value;
  }

  get maxDamage() {
    return this._maxDamage;
  }

  attack(value) {
    let temp =
      Math.floor(Math.random() * (this._maxDamage - this._minDamage + 1)) + this._minDamage;
    value.hp -= temp;
    return temp;
  }
}

class Player extends Monster {
  #runAwayProbability;
  constructor(hp, minDamage, maxDamage, runAwayProbability) {
    super(hp, minDamage, maxDamage);
    this.#runAwayProbability = runAwayProbability;
  }
  set runAwayProbability(runAwayProbability) {
    this.#runAwayProbability = runAwayProbability;
  }

  get runAwayProbability() {
    return this.runAwayProbability;
  }

  runAway(turn) {
    if (this.#Gambling(this.#runAwayProbability)) {
      LogClass.print(chalk.green(`\n[${turn}] 도망을 시도했습니다\n`));
      LogClass.print(chalk.yellow(`\n[${turn}] 도망쳤습니다!!\n`));
      return true;
    } else {
      LogClass.push(chalk.green(`[${turn}] 도망을 시도했습니다\n`));
      LogClass.push(chalk.yellow(`[${turn}] 실패했습니다...\n`));
    }
  }
  #Gambling(probability) {
    let coin = Math.random() * (100 - 1) + 1;
    return coin < probability ? true : false;
  }
}

 

아직은 미숙한 부분이 많지만...

차츰 성장해가면서 더 깔끔한 코드 구현이 가능해질거라 믿는다...

 

 

'Challenge' 카테고리의 다른 글

CMD 게임 만들기 3Days  (0) 2024.08.23
CMD 게임 만들기 2Days  (0) 2024.08.22
2-5 Challenge 유효한 괄호  (0) 2024.08.20
2-4 Challenge 두 수 선택 합 존재?  (0) 2024.08.20
2-3 Challenge 문자열 요약  (0) 2024.08.20