오늘 추가한 기능
도망치기 기능 구현
도망치기시 한번 더 물어보는 로그 출력 y/n으로 대답가능
y선택시 로비화면으로 이동 n 선택시 전투 계속진행
const battle = async (stage, player, monster) => {
console.clear;
let logs = [];
while (player.hp > 0 && monster.hp > 0) {
displayStatus(stage, player, monster);
logs.forEach((log) => console.log(log));
console.log(
chalk.green(
`\n1. 공격한다 2. 도망친다 `,
),
);
const choice = readlineSync.question('당신의 선택은? ');
logs.push(chalk.green(`${choice}를 선택하셨습니다.`));
if (choice === '1') {
const playerAtk = player.attack();
monster.hp -= playerAtk;
logs.push(chalk.yellow(`몬스터에게 ${playerAtk}만큼의 피해를 입혔습니다!`));
const MonsterAtk = monster.attack();
player.hp -= MonsterAtk
logs.push(chalk.blueBright(`당신은 ${MonsterAtk}만큼의 피해를 받았습니다!!!`));
if (monster.hp <= 0) {
logs.push(chalk.red(`몬스터가 쓰러졌습니다!`));
return true; // 몬스터가 죽으면 true 반환
}
if (player.hp <= 0) {
logs.push(chalk.red(`플레이어가 쓰러졌습니다! 패배했습니다.`))
return false; // 플레이어가 죽으면 false 반환
}
} else if (choice === '2') {
if (readlineSync.keyInYN('정말 도망 치시겠습니까?')) {
console.log('도망쳤습니다! 로비로 돌아갑니다...');
return 'escape'; // 도망친 경우 'escape' 반환
} else {
console.log('다시 전투를 계속합니다...');
}
}
}
플레이어가 사망시에도 로비화면으로 이동기능
export async function startGame() {
console.clear();
const player = new Player();
let stage = 1;
while (stage <= 10) {
const monster = new Monster(stage);
const result = await battle(stage, player, monster);
if (result === 'escape') {
startLobbyCallback(); // 도망쳤으면 로비 화면으로 돌아가게 함
return;
}
if (result === false) {
console.clear();
console.log(chalk.red('게임 오버! 다시 도전해보세요.'));
readlineSync.keyInPause();
startLobbyCallback(); // 도망쳤으면 로비 화면으로 돌아가게 함
// 플레이어가 죽으면 게임 종료
return;
}
// 스테이지 클리어 및 게임 종료 조건
stage++;
}
console.log(chalk.green('게임이 종료되었습니다.'));
startLobbyCallback(); // 게임이 종료되면 로비 화면으로 돌아가기
전투 시 공격하기 누르면 '당신은 공격을 선택했습니다!' 출력기능 추가
while (player.hp > 0 && monster.hp > 0) {
console.clear();
displayStatus(stage, player, monster);
logs.forEach((log) => console.log(log));
console.log(
chalk.green(
`\n1. 공격한다 2. 도망친다 `,
),
);
const choice = readlineSync.question('당신의 선택은? ');
const choose = function (a) {
if (a === '1') {
return a = '공격하기'
}
오늘은 어제 추가한 기능들에 대한 보강 및 로비로 이동하는 기능들을 구현하였다.
내일은 스테이지 클리어시 몬스터 및 플레이어의 능력치 상승을 구현해야할 것이다.
'내일배움캠프 TIL' 카테고리의 다른 글
본캠프 11/15 TIL (0) | 2024.11.15 |
---|---|
본캠프 11/14 TIL (0) | 2024.11.15 |
본캠프 11/12 TIL (0) | 2024.11.12 |
본캠프 11/05 TIL (0) | 2024.11.05 |
본캠프 11/04 TIL (0) | 2024.11.04 |