자바스크립트로 같은 그림 찾기 페이지 만들기 5

 안녕하세요 느종입니다

오늘은 같은 그림 찾기 페이지를 마무리 지어보도록 하겠습니다. 저번 시간에 이어서 메인 페이지 자바스크립트 함수를 작성하도록 하겠습니다. 그럼 바로 시작하도록 하겠습니다. 함께 해요!


자바스크립트 코드

같은그림찾기 메인3-1

[ scripts.js ]

itemClickFunc(itemList) : 카드 아이템을 2개 클릭 했을 때 실행 되는 함수입니다. 카드 아이템에 이벤트 리스너를 추가하거나, 삭제를 해야 되기 때문에 카드 아이템 리스트를 인자로 받아옵니다.

isDisabled = true : 카드 아이템들이 클릭이 되지 않도록 true값을 넣어줍니다.

halfItemListLength : 카드 아이템은 2개씩 한 묶음이기 때문에 절반의 수를 변수로 넣어줍니다.

itemList[i].removeEventListener('click', itemList[i].clickHandle) : 카드 아이템을 2개 클릭하고 나면 클릭이 되지 않도록 하기 위해서 카드 아이템 리스트를 전체적으로 돌면서 클릭 이벤트 리스너를 삭제해줍니다. 앞선 포스팅에서 프로퍼티로 만든 clickHandle를 사용할 수 있도록 itemList를 인자로 받아와서 코드를 작성해줍니다.

setTimeout(function() { 내용 }, 1000);: 카드 아이템 2개를 클릭하고 나면 2개가 일치하는지 일치하지 않는지 판별하는 시간을 가지는데 그 때 잠깐의 공백을 주기 위해서 setTimeout을 사용합니다. 1000이 1초입니다. 

if(clickedItemList[0].querySelector(".back-item").innerHTML === clickedItemList[1].querySelector(".back-item").innerHTML) { : 클릭 한 카드 아이템이 추가 되어져 있는 배열(clickedItemList)에 첫 번째 뒷면 값과 두 번째 뒷면 값이 같은지 확인합니다.

clickedCount++ : 카드 아이템 2개의 값이 일치하면 clickedCount를 하나 더해줍니다. clickedCount는 카드가 전부 뒤집어 졌는지 판단하기 위한 변수입니다.

} else { : 카드 아이템 2개의 값이 일치하지 않다면

clickedItemList[j].style.transform = "rotateY(0deg)" : clickedItemList를 돌면서 클릭된 카드 아이템을 다시 앞면으로 돌리는 코드를 작성합니다. 

itemList[i].addEventListener('click', itemList[i].clickHandle) : 2개가 일치하는지 하지 않는지 판단이 모두 끝나면 다시 카드 아이템이 클릭 될 수 있도록 반복문을 통해 클릭 이벤트 리스너를 추가해줍니다.

clickedItemList = [] : 클릭 된 2개의 카드 아이템들에 대해 판단이 끝났으므로, clickedItemList는 초기화 시켜줍니다.

isDisabled = false : 다시 클릭이 될 수 있도록 false를 넣어줍니다.

if(clickedCount === halfItemListLength) { : 일치할 때마다 clickedCount를 1씩 더하다 보면 전체 카드 아이템을 다 뒤집었을 때 카드 아이템의 개수의 절반 값과 동일하게 됩니다. 이 때 결과 화면 페이지로 갈 수 있도록 코드를 작성합니다. 이 때도 바로 결과 페이지로 가기 보다는 1초정도 공백을 두어 사용자가 맞춘 카드를 확인 할 수 있도록 하였습니다.

chapter = "result" : 결과 화면 페이지 이므로 result를 넣어줍니다.

quizNumber.innerHTML = "결과 확인" : 퀴즈 번호 영역에는 결과 확인 문구를 넣어줍니다.

resultTitle.innerHTML = "축하합니다." : 결과 화면에는 축하합니다 문구를 넣어줍니다.

mainPage.classList.toggle("hidden") : 메인 페이지는 사라지도록 합니다.

resultPage.classList.toggle("hidden") : 결과 페이지는 나타나도록 합니다.


같은그림찾기 메인3-2

[ scripts.js ]

retryFunc() : 다시 하기 함수입니다.

switch(chapter) { : 스위치문을 사용하여 chapter에 따라서 어떤 페이지가 나타날지를 결정합니다.

init() : 초기화 함수입니다.


이렇게 해서 장장 5개의 포스팅만에 같은 그림 찾기 페이지를 완성하였습니다. 코드 상으로 어렵고 복잡한 내용은 아닌데 자세하게 설명을 쓰다보니 5개로 나누진 것 같네요. 다음 시간에는 스톱 워치를 만들어 보고, 다시 하기 페이지가 아닌 모달창을 만들어 보도록 하겠습니다.

댓글 쓰기

다음 이전