App.js
의 play
메서드이다. 아래와 같이 프로그램을 실행시킬 수 있어야 한다.예시
const app = new App();
app.play();
package.json
을 변경할 수 없고 외부 라이브러리(jQuery, Lodash 등)를 사용하지 않는다. 순수 Vanilla JS로만 구현한다.process.exit()
를 호출하지 않는다.ApplicationTest
의 모든 테스트가 성공해야 한다. 테스트가 실패할 경우 0점 처리한다.@woowacourse/mission-utils
의 Random
및 Console
API를 사용하여 구현해야 한다.Random.pickNumberInRange()
를 활용한다.Console.readLineAsync
, Console.print
를 활용한다.docs/README.md
에 구현할 기능 목록을 정리해 추가한다.1스트라이크
이다.3볼
이다.낫싱
이 출력된다상수화를 잘 시켜 놓으면, 나중에 게임의 규칙이 변경될 경우 조금 더 수월하게 리팩토링을 진행할 수 있다.
export const ANSWER = {
MIN: 1,
MAX: 9,
LENGTH: 3,
};
export const RESULT = {
NOTHING: '낫싱 ',
BALL: '볼 ',
STRIKE: '스트라이크',
};
export const GAME_END = {
RETRY: '1',
EXIT: '2',
};
export const TEXT = {
INITIAL: '숫자 야구 게임을 시작합니다.',
GET_USER_NUMBER: '숫자를 입력해주세요 : ',
CORRECT_ANSWER: `${ANSWER.LENGTH}개의 숫자를 모두 맞히셨습니다! 게임 종료`,
RETRY: `게임을 새로 시작하려면 ${GAME_END.RETRY}, 종료하려면 ${GAME_END.EXIT}를 입력하세요.\n`,
};
export const ERROR = {
INVALID_USER_NUMBER: '잘못된 값을 입력하였습니다.',
INVALID_RETRY: '1이나 2가 아닌 값을 잘못 입력하였습니다.',
};
export const REG_EXP = {
INPUT_VALIDATION: /^[1-9]{3}$/,
};
폴더 분리를 아래와 같이 진행했습니다.
랜덤하게, 숫자를 출력하는 함수를 generateRandomNumber.js
결과를 출력하거나, 확인하는 함수는 result.js
입력값을 변경하거나, validation 판단을 하는 곳을 userInput.js
그리고, 큰 틀에서 App.js
에서는 게임을 시작하거나, input을 확인하거나, 결과를 비교하는 주체 역할을 하거나, 게임을 종료하고, 재시작할건지 여부를 판단하는 로직을 담았습니다.
Airbnb 코딩 세팅을 위해 eslint와 prettier를 통해 적용하였다.
// .eslintrc.json
{
"env": {
"browser": true,
"es6": true,
"node": true
},
"extends": ["airbnb", "plugin:prettier/recommended"],
"rules": {
"react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }]
}
}
// .prettierrc
{
"singleQuote": true,
"semi": true,
"useTabs": false,
"tabWidth": 2,
"trailingComma": "all",
"printWidth": 80,
"arrowParens": "avoid"
}
하지만, 여기서 실수를 저질렀다!
설치 과정중에 package.json을 건들여버렸다. 제출 전까지 알지 못했다..
추후에 알아보니 현재 작업하고 있는 JAVASCRIPT-BASEBALL 파일에 설정하지말고, 그 바깥에 폴더에 Airbnb 세팅을 하면, JAVASCRIPT-BASEBALL의 package.json을 건들이지 않고 작업할 수 있음을 알게 되었다.
1주차 프리코스 이후에, 여러 사람들의 코드를 확인한 결과 2주차 부터는 새로운 코드스타일로 작업해봐야 할 것 같다고 생각했다.
순수, 자바스크립트로 무엇인가 만들어본 경험이 많지않아서 생각보다 어려움을 겪었던 과제였지만, 다른 사람의 코드를 보면서 부족한 점을 학습하고, 학습 방향성을 잡을 수 있는 좋은 프리코스 1주차 시간이었던 것 같다.
4주차 끝나면 발전한 내모습이 보이지 않을까 생각된다!