인프런 'ZeroCho'님의 '웹 게임을 만들며 배우는 자바스크립트'를 수강하며 학습한 내용입니다.
숫자야구 순서도
1. 컴퓨터가 임의의 숫자 4자리를 만든다 (중복되지 않게)
2. 사용자가 답을 입력한다.
3. 답이 맞는가??!
3.1 YES - 1번으로 이동 (새로운 문제)
3.2 NO - 스트라이크와 볼을 알려준다.
3.2.1. 2번으로 이동
* 10회 정도 제한을 준다 (너무 많이 기회를 주면 쉽게 맞출테니까)
볼 : 자리는 틀리지만 숫자만 맞춘 경우
스트라이크 : 자리와 숫자 모두 맞춘 경우
배열매소드 _ pop(), push(), shift(), unshift()
pop( ) : 배열의 마지막 원소를 빼냄
push( ) : 배열의 맨 끝에 원소를 추가
shift( ) : 배열의 첫번째 원소를 빼냄
unshift( ) : 배열의 맨 앞에 원소를 추가
숫자야구는 랜덤으로 숫자를 뽑아내야 하기 때문에 splice() 함수를 사용하였다.
배열메소드 _ splice()
splice(위치 , 개수) : 위치로부터 개수만큼 배열에서 뽑는다.
ex) splice(5,2) : 5번째 자리에서부터 2개를 뽑는다.
number=[1,2,3,4,5,6,7,8,9] 에서 6과 7을 뽑게 된다.
splice(Math.floor(Math.random() * 9 ), 1);
- 위치를 랜덤으로 선택해준다. 이때 올림 정수값인 ceil이 아닌 내림 정수값인 floor을 사용하는 이유는
위치값은 1~9가 아니라 0~8이기 때문이다.
그런데 배열로 뽑혀왔다. splice는 숫자를 뽑아낼때 배열로 반환하기 때문이다.
그래서 배열에서 첫번째꺼를 가져오기 위해 splice(Math.floor(Math.random() * 9 ), 1)[0]; 으로 수정하였다.
이번엔 undefined가 뜸.... 이유는 splice을 하면서 number 배열 변수에서 숫자가 하나 씩 빠지게 되기 때문이다.
number = [1,2,3,4,5,6,7,8,9] => 8이 뽑힘 number = [1,2,3,4,5,6,7,9]
숫자가 하나씩 줄어들게 되기 때문에 Math.random() * (9-i) 로 수정해주어야 한다. number.length 를 사용해줘도 된다!
4개의 랜덤한 숫자를 잘 뽑아내는것을 확인하였다.
'Javascript' 카테고리의 다른 글
[Javascript] indexOf( ) (0) | 2020.05.13 |
---|---|
[Javascript] split과 join /문자열 나누기와 합치기 (0) | 2020.05.12 |
[Javascript] 숫자 야구 ( 2 ) (0) | 2020.05.11 |
Javascript 구구단 (0) | 2020.05.10 |
Javascript 끝말잇기 (0) | 2020.05.10 |