til

숫자 기억 게임 만들기 2일차

fpzmfks 2024. 6. 25. 17:02

오늘은

function generateRandomNumber()와

function startGame()을 구현해 보려고 노력했다. 
 
 

function startGame()은 function generateRandomNumber()을 불러와 랜덤한 숫자를 위쪽 박스에 띄우고, 3초 뒤에 보이지 않게 하는 함수이다. 저번에는 숫자를 지워야 한다고 생각했었는데 오늘 이 기능을 위한 코드들을 찾아보니, 이 기능을 숫자 기억 게임에 맞추어서 수행시키려면 '삭제'가 아니라 '보이지 않음' 상태로 만들어야 한다는 것을 깨달았다. 

 

이를 구현하기 위한 두 가지 방법을 찾았는데

 

첫번째는 <head>에서 랜덤한 숫자가 표기되는 위쪽 박스 

number_display를

display: none(비표시)상태로 만들고 

 
number_display.show를
display:flex(표시)상태로 만든다. 

 

그리고 스크립트를 이용해 function startGame()이 시작 버튼으로 작동하면 

 

number_display에 .show를 붙여서  number_display.show(표시상태)로 만들고 

3초 뒤에 .show를 지워서 number_display(비표시상태)로 돌려놓는 것이다. 

 

show를 붙이는 방법은 number_display.classList.add('show')이고

show를 떼는 방법은 number_display.classList.remove('show')이다. 

 

두번째 방법은 함수로 박스의 표시/비표시 스타일을 변경하는 것이다. 

number_display.style.display = none;(비표시)

number_display.style.display = flex;(표시)

 

여기까지 알아보았지만 아직 작동을 성공하지는 못했다. 이후로는 함수 연동에 대해 더 많이 알아보아야겠다. 

 


 

function generateRandomNumber()으로 불러온 랜덤한 숫자는 함수 내에서 일회용으로 사용되는 것이 아니라 스크립트 전체에서 사용되는 변수이므로 함수 밖에서 let randomnumber;로 선언을 해두어야 한다. 또한 가장 앞에 위치하는 것이 적절하다. 

let randomnumber;
 
그리고 1000에서 9999 사이의 정수를 반환하는 함수를 작성해야 한다. 작동되는 건지는 모르겠지만 일단 아래와 같은 함수를 작성했다. 

        function generateRandomNumber() {
 
            randomnumber = Math.floor(Math.random() * (9999- 1000) + 1000);
 
            return randomnumber;
        }

 

내가 찾은 글에서는 Math.random의 범위를 지정하기 위해서는 먼저 최대값을 지정하고, 최소값을 지정한 뒤, 최소값 지정 시의 문제를 해결해야 한다고 했다. 이 말인즉, 다음과 같다. 

 

Math.random() ==> 0~1

 

최대값

Math.random()*9999 ==> 0~9999

 

최소값

(Math.random()*9999)+1000 ==> 1000~10999

 

최소값 문제 해결

(Math.random()*(9999-1000))+1000 ==> (0~8999)+1000 ==> 1000~9999

 

마무리로 정수값 지정

Math.floor(Math.random()*(9999-1000))+1000 ==> 1000, 1001, 1002, 1003......9999

 

이렇게 랜덤한 정수를 생성하는 부분은 완성된 것 같다. 나중에 잘 작동되었으면 좋겠다. 일단 오늘은 여기까지 했고, 다음에는 이 스크립트들을 본문과 연동하는 문법을 조사할 것이다.