Node.js 환경에서 터미널의 입력값을 읽어오는 readline 모듈.
rl.on("line", (line) => {
// 한 줄씩 입력받은 후 실행할 코드
// 입력된 값은 line에 저장된다.
rl.close(); // 필수!! close가 없으면 입력을 무한히 받는다.
});
rl.on('close', () => {
// 입력이 끝난 후 실행할 코드
process.exit();
})
확인해보니 Callback 함수이다. 입력값을 받으면, 메소드 안에서만 활용해야 하는 상황.
숫자 야구이므로, While 반복문을 돌리거나 다른 방법을 찾아야한다.
→ 당연히 안됨. Scope 자체가 달라지기 때문
→ 이것도 안됨. readline을 여러번 호출해야 하기 때문
→ Scope가 달라서 안된다.
→ 아쉽게도 없었다.
// 함수 지정 후, 그 안에 readline 메소드를 사용.
// 반복문으로 삽질해보기 readline 메소드 밖에도 써보고, 안에도 써보고..
// 결국 답은 GPT에 물어보기였다.
// 재귀 호출 사용을 위해 함수로 먼저 정의 후, readline 메소드를 사용했다.
const askanswer = () => {
rl.question(`${count}번째 시도:`,(input) => {
// input 문자열을 숫자형으로 바꾼 후, 배열로 정리
const My = input.split('').map(x => Number(x));
// 채점 실행
const result = scoring(answer, My);
// 조건문을 통해 게임을 끝낼지, 계속할지 설정
if (result.s === 3) {
console.log(`${count}번만에 맞히셨습니다.`);
console.log('게임을 종료합니다.');
// 끝난 경우, readline을 끄고 밖으로 나가기.
rl.close();
} else {
console.log(`${result.s}S${result.b}B`);
count++;
// 틀렸을 경우 다시 돌아가는 기능 (재귀함수 사용)
askanswer();
}
})
}
// play함수 내에서 askanswer 함수 실행하기
askanswer();
}