실행시 첫 페이지
과제로 받은 server.js 파일의 타이틀 텍스트를 내가만들게임 이름 Attack Defense Run away 의 약자 ADR RPG 로 변경해주고 게임 이름이 왜 ADR RPG 인지 알려주고 게임시작을 환영하는 문구를 추가함 경계선 의 값을 50 => 60으로 변경하여 타이틀과의 길이를 맞추어주고
타이틀 코드
// 타이틀 텍스트
console.log(
chalk.cyan(
figlet.textSync("A D R - R P G", {
font: "Standard",
horizontalLayout: "default",
verticalLayout: "default",
})
)
);
경계선 코드
//경계선
const line = chalk.magentaBright("=".repeat(60));
console.log(line);
● Class Player || Monster 에서 정의 한 hp , attackDmg 의 값을 넣어줌
2번 선택지 선택시 연막탄을 사용할시 0~3사이에 랜덤한값을 제공하고 그 값만큼 몬스터가 행동을 멈춘다 하지만 0이 나올시 바로 공격함
연막탄 코드
●작성방법 Math.random() 메서드를사용해 0~3의 값을 랜덤으로 나오게하는 코드를작성후 클래스 몬스터 안에 몬스터가 연막을 맞을시 행동 로직을 작성 이후 swhich문을 통해 연막탄 값에 따라 일정시간 행동을 멈추는 로직을 작성함 연막탄의 값이 0 보다 클경우 행동을 멈춘후 연막탄의 값이 1씩 줄어들고 연막탄의 값이 처음부터0이나왔다면 몬스터가 공격함
//몬스터가 연막을맞을시 행동
if (this.stopTime > 0) {
this.stopTime--; // 행동을 멈추고 턴 수 감소
return;
}
4-2. 연막탄 남은 턴수의 조건에 따라 멈추거나 공격하는 switch문 작성
if (monster.stopTime >= 1) {
//연막탄이 유지되는동안 몬스터가 행동을 멈춤
//턴이 지날떄마다 연막탄의 남은 턴수를 알려주고 1씩 빠짐
logs.push(
chalk.red(
`몬스터가 당신을 찾고있습니다.(${monster.stopTime - 1}턴 남음)`
)
);
monster.stopTime--;
} else {//연막탄의 남은 턴수가 1보다 작다면
switch (choice) {
case "1":
logs.push(
chalk.red(
`몬스터가 공격합니다! ${player.attackDmg}의 피해를 받습니다.`
)
);
player.userHitDmg(monster.attackDmg);
break;
case "2":
if (monster.stopTime === 0) {//연막탄 선택지 선택시 0이 나왔다면
logs.push(
chalk.red(
`몬스터가 연막을 뚫고 당신을 공격합니다! ${player.attackDmg}의 피해를 받습니다!`
)
);
player.userHitDmg(monster.attackDmg);
}
break;
연막탄 사용시
몬스터의 제력이 0 보다 작을경우 2스테이지로 넘어가며 스테이지*체력 스테이지*공격력 이 오르는 로직구현
스테이지++ 몬스터LevelUp 코드
export async function startGame() {
console.clear();
const player = new Player();
let stage = 1;
while (stage <= 10) {
const monster = new Monster(stage);
await battle(stage, player, monster);
stage++;
스테이지 클리어 조건 정의 (미완)
class Monster {
constructor(stages) {
this.maxHp = 100 * stages; //최대 체력
this.hp = this.maxHp; //현재 체력
this.attackDmg = 20 * stages; //공격력
this.stopTime = 0;
}
정의한 stage 값을 Monster클래스에 생성자함수에 인자로 받아와 몬스터가 죽고 새로
생성될때마다 스테이지에 비례하여 곱해주는 로직작성