본문 바로가기
Effect

searchEffect - 07

by 코딩 냠냠 2022. 10. 21.
728x90
반응형

스크립트를 이용한 서치효과 만들기 07

검색 게임을 만들어 봅시다~!

Script

const searchTime = document.querySelector(".time span");
const searchList = document.querySelector(".search__list");
const searchAnwers = document.querySelector(".search__answers");
const searchMissAnwers = document.querySelector(".search__missAnswers");
const searchStart = document.querySelector(".search__box .start");
const searchInput = document.querySelector("#search2");
const searchAudio = document.querySelector("#audio");
const audioPlay = document.querySelector(".play");
const audioStop = document.querySelector(".stop");
const searchInfo = document.querySelector(".search__info .num");
const scoreInfo = document.querySelector(".search__info .num2");
const scoreResult= document.querySelector(".search__result .result");
const scoreResultWrap= document.querySelector(".search__result");
const scoreRestart= document.querySelector(".search__result .restart");

let timeReamining = 120,    //남은 시간
    timeInterval = "",      //시간 간격
    score = 0,              //점수
    answers = {};           //새로운 정답

function updateList(){
    cssProperty.forEach(data => {
        searchList.innerHTML += `<span>${data.name}</span>`;
    });

}
updateList();

//게임 시작하기
function startQuiz(){
    //시작 버튼 없애기 & 속성 리스트 없애기
    searchStart.style.display = "none";
    searchList.style.display = "none";

    //다시 시작할 때 기존 데이터 초기화
    searchAnwers.innerHTML = "";
    searchMissAnwers.innerHTML = "";
    
    //시간 설정
    timeInterval = setInterval(reduceTime, 1000);

    //뮤직 추가하기
    searchAudio.play();

    //점수 계산 - 전체 갯수
    searchInfo.innerText = cssProperty.length;
    
    //정답 체크
    checkAnswers();
}

//인풋박스 체크
function checkInput(){
    let input = event.currentTarget.value.trim().toLowerCase();

    if(answers.hasOwnProperty(input) && !answers[input]){
        answers[input] = true;

        //정답 표시
        searchAnwers.style.display = "block";
        searchAnwers.innerHTML += `<span>${input}</span>`;
        
        //점수 반영
        score++;
        scoreInfo.innerText = score;
        //정답 초기화
        searchInput.value = "";
    }

}

//정답 체크하기 : 정답을 객체 파일로 만들기
function checkAnswers(){
    cssProperty.forEach(item => {
        let answer = item.name.trim().toLocaleLowerCase();
        answers[answer] = false;
    });
}

//오답 보여주기
function missAnswers(){
    searchMissAnwers.style.display = "block";
    
    cssProperty.forEach(item => {
        let answer = item.name.trim().toLocaleLowerCase();
        if(!answers[answer]){
            searchMissAnwers.innerHTML += `<span>${answer}</span>`;
        }
    });
}


//시간 설정하기
function reduceTime(){
    timeReamining--;

    //시간 끝
    if(timeReamining == 0) endQuiz();

    searchTime.innerText = displayTime();
}

//시간 표시하기
function displayTime(){
    if(timeReamining <= 0){
        return "0:00";
    } else {
        let minutes = Math.floor(timeReamining / 60);
        let seconds = timeReamining % 60;
        
        //초 단위가 한자리수 일 때 0을 추가
        if(seconds < 10) seconds = "0" + seconds;
        return minutes + ":" + seconds;
    }
}

//게임 끝났을 때
function endQuiz(){
    // alert("게임이 끝났습니다!");

    //시작 버튼 만들기
    searchStart.style.display = "block";
    searchStart.style.pointerEvents = "none";     //버튼 누르지 못하게 하기
    
    //오답 보여주기
    missAnswers();

    //음악 끄기
    searchAudio.pause();

    //시간 정지
    clearInterval(timeInterval);

    //메세지 출력
    scoreResultWrap.classList.add("show");
    let point = Math.round((score / cssProperty.length) * 100);
    scoreResult.innerHTML = `게임이 끝났습니다.<br> 당신은 ${cssProperty.length}개 중에 ${score}개 를 맞추었습니다. 
당신의 점수는 ${point}점 입니다.`; } //다시 시작하기 function restart(){ scoreResultWrap.classList.remove("show"); //결과창 없애줌 timeReamining = 120; //시간 셋팅 score = 0; //점수 리셋 scoreInfo.innerText = "0"; //뮤직 다시 재생 searchAudio.play(); //다시 시작 startQuiz(); } //버튼 이벤트 searchStart.addEventListener("click",startQuiz); searchInput.addEventListener("input", checkInput); scoreRestart.addEventListener("click", restart); //다시 시작 //음악 재생 & 정지 audioStop.addEventListener("click", () => { audioStop.style.display = "none"; audioPlay.style.display = "block"; searchAudio.pause(); }) audioPlay.addEventListener("click", () => { audioStop.style.display = "block"; audioPlay.style.display = "none"; searchAudio.play(); })

'Effect' 카테고리의 다른 글

gameEffect - 뮤직플레이어 만들기  (1) 2022.10.23
searchEffect - 06  (1) 2022.10.20
sliderEffect - 05  (1) 2022.10.20
searchEffect - 04  (4) 2022.09.29
mouseEffect - 05  (2) 2022.09.29

댓글


자바스크립트

Javascript

자세히 보기
html
css
광고 준비중입니다.
<