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라는 숫자를 뽑아준다.
프롬프트는 숫자로 입력해도 문자로 인식되니까 split 으로 분할해준후 map으로 숫자로 변환시켜줌
i가 0,1,2 까지 제한생성되고 (result.length=3)
indexOf는 반환값을 내보내는데
자바스크립트에서 indexOf -1은 정해놓았다 (인덱스의 값이 없는 경우 -1로)
1)index가 -1인 경우에 ball도 아닌 strike도 아닌 아무값도 안나오게 함
2)index가 있는 경우에 스트라이크 or 볼이 뜨도록 함
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번이되면 게임오버
아닐 경우에 남은횟수를 보여준다.
'javascript' 카테고리의 다른 글
map 함수의 정의,코테 연습 (0) | 2023.04.07 |
---|---|
배열메소드 (0) | 2023.04.06 |
프로토타입,클로저,즉시 실행 함수 작성법, 이터러블 (0) | 2023.04.05 |
자기소개 웹사이트 만들기 (0) | 2023.04.03 |
클래스의 생성자 함수와 static함수 (0) | 2023.03.31 |