TIL-4 JavaScript로 숫자야구게임 구현하기
prologue. 재미있는 야구 게임을 만드는 사람은
재미가 없을 수 있다..😀..
오늘은 팀과제를 제출하기 하루전 과제는 숫자로 하는 야구 게임 만들기!!
게임을 만들 생각에 아주 신이난다.
분명 .. 신이 났었는데.. 만들기 시작한 이후..
어라 눈에서 왜 눈물이.. 😭
1. 주차별 팀과제
주차별 팀과제는 위 사진과 같다.
|
중점은 위 To do 과제조건에 부합하는 프로그램을 구현하는 것이다.
2. 설계 및 구현
이를 반복문과 조건문을 통합하여 구현할 수 있었는데..
세가지 정도의 반복문과 조건문을 포함한 함수를 사용하여 만들어 보았다.
첫번째 무작위 0~9 까지의 랜덤숫자를 생성하는 함수
두번째 무작위 랜덤 숫자 함수에서 나온 값을 활용하여 심판을 보는 함수(스트라이크, 볼 판단)
세번째 위 두가지 함수를 합쳐서 게임을 진행할 수 있게 하는 함수다.
// 랜덤 숫자 생성함수
function genRandomNumbers() {
var gameNum = [];
for (var i = 0; gameNum.length < 3; i++) {
var num = Math.floor(Math.random() * 10);
if (!gameNum.includes(num)) {
gameNum.push(num);
}
}
return gameNum;
}
var cpuNumbers = genRandomNumbers();
// 랜덤 숫자 생성 이후 심판역할 함수
function refereeGame(cpuNumbers, userNumbers) {
var strikes = 0;
var balls = 0;
for (var i = 0; i < 3; i++) {
if (userNumbers[i] == cpuNumbers[i]) {
strikes++;
} else if (cpuNumbers.includes(parseInt(userNumbers[i]))) {
balls++;
}
}
return { strikes, balls };
}
// 위 두가지 함수를 활용하여 게임을 진행하는 함수
function playGame() {
var cpuNumbers = genRandomNumbers();
var attempts = 0;
var gameOver = false;
while (!gameOver) {
var userGuess = prompt('세 자리 숫자를 입력하세요 :');
if (userGuess.length !== 3 || isNaN(userGuess)) {
console.log('유효한 세 자리 숫자를 입력하세요.');
continue;
}
attempts++;
var result = refereeGame(cpuNumbers, userGuess);
console.log(`${attempts}번째 시도 : ${userGuess}`);
console.log(`${result.balls}B${result.strikes}S`);
if (result.strikes === 3) {
console.log(`${attempts}번 만에 맞히셨습니다. 게임을 종료합니다.`);
gameOver = true;
}
}
}
playGame();
맨 처음에는 최대한 for문을 활용하여 설계 하여 진행하려고 했고
JavsScript 문법 상 이상없도록 하려고 노력했으며
부족한 부분은 GPT와 브레인 스토밍 하며 약 3시간 정도 걸쳐 작성하였다.
챗GPT는 한번에 답을 찾기 보다는 본인의 로직 가설이 실제 적용 가능한지 원리를 브레인 스토밍 하며 진행하길 바란다..
안그러면.. 그냥 복사 붙여넣기.. 수준에 불과하다.. (특정원리에 대한 최소한의 이해라도 하려는 노력이 정말 필요하다..)
그러나 해당 과제는 실제 구현할 수 있도록 구현한 모습을 캡쳐하여 보내는 것도
과제에 포함되어 있었기 때문에 HTML로 구현해야 했고
막상 HTML로 구현을 해야하니 적용법에 익숙치 않아서
해당 부분은 챗GPT에게 도움을 받아서 작성을 완료 했다.
그랬더니 JS 파일과 HTML 파일의 연동이 안되는지 오류가 발생했고
해당 오류를 최종적으로 해결하기 위한 코드 수정을 진행한 이후에는
아래와 같이 재밌는 게임을 완성단계 까지 구현 할 수 있었다.
궁금한 사람들은 아래 깃 주소를 남겨 놓으니 확인 해 보기 바란다.
https://github.com/genaileepro/team-test
GitHub - genaileepro/team-test: team-test
team-test. Contribute to genaileepro/team-test development by creating an account on GitHub.
github.com
'코딩일기 > TIL' 카테고리의 다른 글
TIL-6 데이터 타입(심화) (0) | 2024.06.20 |
---|---|
TIL-5 프로그래밍 기초1 테스트 (JavaScript) (2) | 2024.06.20 |
TIL-3 ES 6 문법과 일급객체로서의 함수 그리고 Map과 Set (2) | 2024.06.18 |
TIL-2 JavaScript의 꽃 조건문과 반복문 그리고 배열과 객체의 기초 (2) | 2024.06.17 |
TIL-1 JavaScript의 기초 (2) | 2024.06.17 |
댓글