내일배움캠프 TIL

본캠프 11/13 TIL

parkcw0325 2024. 11. 13. 19:35

오늘 추가한 기능

 

도망치기 기능 구현
도망치기시 한번 더 물어보는 로그 출력 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