2024. 8. 22. 21:02ㆍ[Node.js_6기 본캠프 TIL]
▶ CH 2. Rogue like JAVASCRIPT! 개인 과제
조금만 더 구조를 이해하면 청사진이 그려질 것 같은데, 아직 player와 monster가 딜을 주고 받는 구조가 그려지지 않는다. class에 대한 이해가 부족한 것 같아서 자료를 찾아보긴 했는데, object를 양산하는 기능까지만 활용하는 수준이 되어버렸다. 더 뜯어보다가 안되면 튜터님들에게 달려가야겠다. ReadMe도 다들 쓰는 것 같은데, 세계관 풀어내다가 시간을 펑펑 쓸 미래가 보이므로 마지막날에 정리하는 것으로...
1) 최소 공격력, 최대 공격력
class Player {
constructor(player) {
this.hp = 100;
this.minPower = 10;
this.maxPower = 15;
}
skill() {}
attack() {
// 공격
}
}
어제 놓쳤던 player와 monster의 공격력 부분을 추가로 세팅했다. 처음에 코드를 작성할 땐 공격력을 한 줄로 표현하려다가, 스테이지가 진행될수록 각각 강화되는 수치가 다르기도 하고 전투 시스템에서 함수가 괜히 꼬이게 될 것 같았다.
skill()이 class Player가 추가된 이유는 전투 로그에서 누가 어떤 공격을 했는지 표현하고 싶어서 힘내던 흔적이다.
2) 스킬명을 외쳐야 강하게 때릴 수 있는 법
logs.push(chalk.blueBright(`▶ 성공: 오염체에게 ${Player.skill}의 데미지를 입혔다.`));
logs.push(chalk.blueBright(`▶ 성공: 오염체에게 ${player.skill}의 데미지를 입혔다.`));
처음에는 입력값 1, 2, 3에 반응해서 스킬명을 매핑하는 함수를 생각하고 class에 skill() 을 추가하고 강의에서 해당 구조에 항상 썼던 console.log을 시험삼아 넣고 돌렸더니 위와 같은 결과가 나왔다. Player.skill로도 해보고, player.skill로도 해보고 skill() 안에 if문도 채워보고... 한참 삽질을 하다보니 이게 아니란 생각이 들었다. ${ }에 홀려서 내가 지금 시간을 태우고 있구나. switch를 쓰는 게 빠르지 않을까?
switch (choice) {
case '1':
logs.push(chalk.red('[ 오염체의 공격! ]'));
logs.push(chalk.red(`[ 오염체에게 ${monster.minPower}의 데미지를 받았다.]`));
logs.push(chalk.blueBright('[ EVE의 물리 공격! ]'));
logs.push(chalk.blueBright(`▶ 성공: 오염체에게 ${player.minPower}의 데미지를 입혔다.`));
break;
case '2':
logs.push(chalk.blueBright('[ EVE의 반격! ]'));
logs.push(chalk.blueBright(`▶ 성공: 오염체에게 ${player.minPower}의 데미지를 입혔다.`));
break;
case '3':
logs.push(chalk.blueBright('[ EVE의 방어 시스템 복구 시도! ]'));
logs.push(chalk.blueBright(`▶ 성공: 오염체에게 ${player.minPower}의 데미지를 입혔다.`));
break;
}
}
로비에서 쓰던 swith 코드를 가공하니 허무할 정도로 빠르게 해결되었다. 스킬명을...외친다...! 아직 때릴 수 있는 코드를 작성하지 못해서 딜은 들어가지 않지만, 일단 외칠 수 있게 되었다. 팀 페이지를 만들 때, 하드코딩이 많다는 피드백 때문에 하나씩 다 밀어넣는 것을 너무 경계했나 싶다. 스킬이 많아야 5개이고, 캐릭터 선택도 불가능한 게임이라 이 방식이 적합하다는 생각이 드는데... 좀 더 유지보수가 쉽거나 확장할 수 있는 방식이 있는지는 조언을 구해봐야 할 것 같다.
'[Node.js_6기 본캠프 TIL]' 카테고리의 다른 글
[Node.js_6기 본캠프] CH 2. 개인과제 트러블 슈팅_0826 (0) | 2024.08.26 |
---|---|
[Node.js_6기 본캠프] CH 2. 개인과제 트러블 슈팅_0823 (5) | 2024.08.23 |
[Node.js_6기 본캠프] CH 2. 개인과제 트러블 슈팅_0821 (0) | 2024.08.21 |
[Node.js_6기 본캠프] Today I Learned_0820 (0) | 2024.08.20 |
[Node.js_6기 본캠프] Today I Learned_0819 (0) | 2024.08.19 |