본문 바로가기
깃허브 링크!
javascript

야구 미니게임

let result 배열안에 0~8까지의 인덱스를 숫자 1~9 중 랜덤 3개를 뽑은것과 매칭시켜 놓았다. (여기는 컴퓨터가 임의의 3개의 숫자를 선정)

만약 렌덤 인덱스에 358 이렇게 선정되면

result.push(numbers[randomIndex]); 

result.push(numbers[3]);

result.push(numbers[5]);

result.push(numbers[8]);

 

numbers의 인덱스 3번째 5번째 8번째 를 뽑아주는 거니까 숫자는 4,6,9이렇게 뽑아주고

콘솔창에는 0,1,2 가 4,6,9 랑 매칭이 되어준다.

 

콘솔 창에 숫자 9가 뜨는 이유는 랜덤값 0~8중에 8이 떴을때 numbers의 8번째 인덱스를 찾는거니까 9라는 숫자를 뽑아준다.

let tries = 10; // 플레이어가 시도할 수 있는 횟수
while (tries > 0) {
  let guess = prompt("숫자 3개를 입력하세요 (1~9): ");
  let guessArray = guess.split("").map(Number); // 문자열로 입력된 guess를 배열로 변환하여 guessArray에 저장
  let strike = 0;
  let ball = 0;

프롬프트는 숫자로 입력해도 문자로 인식되니까 split 으로 분할해준후 map으로 숫자로 변환시켜줌

 

 

 

 

 

i가  0,1,2 까지 제한생성되고 (result.length=3)

indexOf는 반환값을 내보내는데 

자바스크립트에서 indexOf -1은 정해놓았다 (인덱스의 값이 없는 경우 -1로)

1)index가 -1인 경우에 ball도 아닌 strike도 아닌 아무값도 안나오게 함

2)index가 있는 경우에 스트라이크 or 볼이 뜨도록 함

 

 let index = result.indexOf(guessArray[i]);

result(컴퓨터 임의 선택값 예를 들어 3,5,7)이

guessArray(플레이어 임의 선택값 예를 들어 4,5,8)인데

 

index ==i 인 경우는 스트라이크인 경우인데

i가 1일 경우에 

 

0 1 2 인덱스

3 5 7 컴퓨터 선택

4 5 8 플레이어 선택

 

세로줄을 보면 1번째 인덱스일때 스트라이크가 된다라고 설정해 놓은것이고

이것도 아닐 경우 ball 이 뜨도록 해주었다.

 

스트라이크 3번 모두 맞으면 게임 종료 

아닐경우에 strike 몇번 ball 몇번 적어주고

tries 시도 횟수 빼주고

만약 시도횟수가 0번이되면 게임오버

아닐 경우에 남은횟수를 보여준다.