오늘은 구현하고 싶었던 기능을 하나 구현 해보고,
지저분한 코드를 깔끔하게 정리하는 시간을 가져보았다.
상당히(?) 개선된 메인 화면
어제 예상보다 오래걸렸던 setTimeout.. 이녀석을 좀 더 활용해 보기로 했다.
4. 지름길 개척에 성공할 경우 출력되는 화면이다.
figlet 모듈을 사용하여 간단하게 문자열을 표현하는 코드인데,
시작 화면에서 출력되던 HIKING 의 그것이다
이 figlet 출력에 딜레이를 줘 보자.
일종의 연출효과를 얻을 수 있고, 코드에 대한 학습도 될테니 일석 이조 !
크게 어려운 부분은 없었다.
delay 함수는 이미 전역에 뿌려두었고, 어제 했던것 처럼, 호출부에 await 를 걸어주고
async를 함수선언 앞에 달아준 뒤 await delay를 적당히 써 주면 된다.
문자 출력 부분은, for 문을 통해 구현했고,
주어진 문자열을 0인덱스부터 하나씩 추가하며
console.clear 와 출력을 반복하면 된다 .
만들고 보니 꽤 그럴싸한듯 !
그래서, 패배시 game-over 의 표현이나,
엔딩에도 적용하면 좋을것 같다는 생각이 들었다.
하드코딩 결과물을 다시 함수로.. 만들어보자.
변동이 필요한 부분만 인자로 받게 만들면 끝이겠죠?
// TEST 문자 출력
async function TestText (text, setDelay, color) {
let TestTextMes = ""
for (let i = 0; i < text.length ; i++){
console.clear()
TestTextMes += text[i]
console.log(chalk.red(('='.repeat(75))));
console.log(chalk.red(figlet.textSync(TestTextMes)));
console.log(chalk.red(('='.repeat(75))));
await delay(setDelay);
}
await delay(0.5);
}
뭔가... 뭔가 부족하다 !
위에 보이는 것 처럼, color 또한 임의로 지정할 수 있었으면 좋겠는데...
불이 꺼지는 매개변수 color ..
매개변수 : 아 되겠냐고 ㅋㅋ
어떻게 이해해야 하는 부분일까?
쉬울줄 알았는데...
콜백함수 쓰면..? 아니면..메서드를 통쨰로? 아니면..
되긴 해?
결국 검색과 고민 끝에, 튜터님에게 질문하기로 했다 !
chalk.color 를 통째로 인자로 받아오면 가능하다는 것이다 !!
저 위의 되겠냐고의 방법은,
변수chalk와 실행() 사이에 매개변수가 들어가서 뭐 어쩌라는건지 모르겠는 상황이 되지만,
chalk.color 를 받아넣으면 함수() 와 같은 방식으로 실행처리가 가능해지기 때문에,
정상적으로 기능을 한다는 것이었다 !!
이것은 고차 함수의 작동에 해당하는 방법으로
내 머리로 이해할 수 있는 부분은
매개변수가 함수명을 인자로 받아오면
본문에서 매개변수() 를 통해 그 함수를 실행시킬 수 있다고 이해가 되어진다.
맞..나?
결론
JS의 펑션.. 당신은 대체...
이해가 다 안되는데도 놀라운 힘이야 !
(솔직히 이것도 의도한 기능인지 의심됨)
추가로, 조심해야 할 부분이 있다면,
모듈의 함수마다 바인딩하는 대상이 다를 수 있다고 하셨는데,
그럴 땐 바인드까지 해버려서 인자로 넣어버리면 green이 집을 찾는것을 도와줄 수 있다고 하셨다 !
위 과정으로 만든 함수로, 게임 오버 출력과, 게임 클리어 출력까지 해먹으면 될 듯 하다.
음.. 초기 시작 화면 (오프닝) 까지 날로 먹으면 좋을것 같다 !
'내일배움캠프' 카테고리의 다른 글
[내일배움캠프] 24.08.28 TIL (1) | 2024.08.28 |
---|---|
[내일배움캠프] 24.08.27 TIL (1) | 2024.08.27 |
[내일배움캠프] 24.08.22 TIL (0) | 2024.08.22 |
[내일배움캠프] 24.08.21 TIL (0) | 2024.08.21 |
[내일배움캠프] 24.08.20 TIL (0) | 2024.08.20 |