이번 과제에서 고려해야 할 사항
◆ 트러블 슈팅
좋은 트러블 슈팅 사례, 형식을 찾아보고 트러블 슈팅을 작성하고 발표해 주세요
배경 : 어떤 현상을 발견해서
발단 : 이런 장애가 생길 수 있다는 것을 인지했고,
전개 : 장애를 대응, 해결하던 와중에
위기 : 또 다른 장애 발견 또는 간단하게 해결할 수 없다는 것을 알게되어서,
절정 : 근본적인 해결을 위해 이런 방법으로 접근하였다.
결말 : 따라서, 이런이런 방법을 통해 근본적으로 해결 및 앞으로 유지, 보수에 용이하게 개선하게 되었다.
◆ 과제 필수요건 채우기
완성도 | 필수 | 필수 기능 - 단순 행동 패턴 2가지 구현 - 클래스 문법 활용, 플레이어 스탯 관리 - 간단한 전투 로직 구현 - 스테이지 진행에 따른 이벤트 관리 |
도전 | 도전 기능 - 확률 로직 적용 - 복잡한 행동 패턴 구현 - 새로운 기능 구현- 전체적인 코드 흐름 | |
이해도 | 필수 | - TIL에 트러블슈팅 과정을 기록해보세요. (과제 제출란에 TIL 링크를 제출해주세요.) |
도전 | - 디렉토리 및 파일을 분리해보세요.- 변수명 등 코드를 직관적이고 이해하기 쉽게 작성해보세요.- 주석을 활용해 코드를 설명해보세요. | |
우수성 | 필수 | - ReadMe를 작성해 과제를 소개해보세요. |
도전 | - 특수 상황에 대한 예외 처리를 2가지 이상 구현해보세요.- 커밋 컨벤션을 지킨 커밋을 10회 이상 시행해보세요. |
필수 기능 구현을 우선적으로 완성한 후, 도전 기능에도 도전하여 실력을 더욱 강화해 주시기 바랍니다. 각 기능의 구현 상태에 따라 평가가 이루어지며, 이는 팀 구성과 추후의 팀 프로젝트 성공에 큰 영향을 미칠 수 있습니다. 최선을 다해 모든 기능을 완성해 주시기 바랍니다!
필수 기능 가이드
1. 단순 행동 패턴 2가지 구현
- 공격하기
- 도망치기
2. 플레이어 클래스에서 플레이어 스탯 (공격력, 체력 등) 관리하기
3. 간단한 전투 로직 구현
- 플레이어 공격, 몬스터 피격
4. 스테이지 클리어 시 유저 체력 회복
5. 스테이지의 진행과 비례해서 몬스터의 체력과 공격력 증가 시키기
필수 기능 공통 가이드
1. switch 분기문을 사용하여 유저의 각 행동에 대한 로직을 처리해보세요.
2. while 반복문을 사용할 때는 종료 조건이 무조건 있어야 합니다.
a. 스테이지 클리어 및 게임 종료 조건
b. 몬스터와의 전투 종료 조건
3. Math.random()메서드를 통해서 랜덤한 숫자를 얻을 수 있습니다.
4. 플레이어의 공격은 선택에 의해서 이루어지지만, 몬스터의 공격은 자동으로 처리가 된 뒤 해당 플레이어의 로그에 보여지게 됩니다.
5. 함수의 호출 순서에 따라서 각 변수, 객체들을 관리하는 것이 중요합니다.
도전 기능 가이드
1. 확률 로직 적용
- 연속 공격, 방어, 도망치기
- 스테이지 클리어시 유저 능력치 증가, 증가량
- 몬스터의 공격력, 체력 증가량
2. 복잡한 행동 패턴 구현
- 연속 공격
- 방어하기
- 그 외 다른 행동
도전 기능 공통 가이드
1.랜덤, 확률을 사용하는 것을 어렵게 생각하지 마세요.
a. Math.random() 메서드를 응용하여 0~5 사이의 정수가 랜덤으로 생성된다고 가정할 때, 우리는 [0,1,2,3,4,5]의 6가지 랜덤한 선택지를 가질 수 있게됩니다.
b. 확률의 경우도 마찬가지로 Math.random() 메서드를 응용하여 0~99 사이의 정수를 생성한다고 할 때, 10%의 확률은 0~9사이의 숫자가 생성될 확률이랑 같습니다.
2. 새로운 기능을 추가하는 것을 망설이지 마세요!
코드 정리하기
문법 요약
이미지는 아스키 아트로 넣기
◆ 모듈 가져오기와 내보내기 (Import/Export)
- 모듈 시스템을 통해 함수, 클래스, 변수 등을 다른 파일에서 가져오거나 내보냅니다. `import`와 `export` 키워드를 사용합니다.
import { getRandomInt } from './source.js';
export async function startGame() { /*...*/ }
◆ 랜덤 숫자 생성 함수
- `Math.random()`과 `getRandomInt`를 사용해 랜덤한 수를 생성하는 로직입니다.
Math.random()은 0 이상 1 미만의 난수(임의의 숫자)를 반환합니다.
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
◆ 확률 이벤트 (조건부 연산자 (Conditional Operator))
50% 확률로 두 이벤트 중 하나를 선택하는 데 사용됩니다.
return Math.random() > 0.5 ? squirrelEvent : humanEvent;
◆ 프로퍼티 계산 (Computed Property Names)
- 객체의 프로퍼티를 동적으로 설정할 때 사용하는 문법입니다.
this[stat]는 stat에 전달된 문자열을 키로 사용해 속성(hp, fullness, happiness)을 동적으로 참조/수정합니다.
예를 들어, increaseStat("hp", 10) 호출 시 this.hp가 10 증가합니다.
increaseStat(stat, amount) {
this[stat] = Math.min(this[stat] + amount, 100); // 'stat'에 동적으로 접근
}
'내일배움 과제 > CH 2 Rogue like JAVASCRIPT! 과제' 카테고리의 다른 글
CH2 TIL (0) | 2024.11.14 |
---|---|
텍스트 로그라이크 코드_2 (0) | 2024.11.13 |
0 설계 (1) | 2024.11.12 |
1. 개발환경 세팅 (2) | 2024.11.11 |