91 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const inputField = document.querySelector("input"),
 | 
						|
    wordText = document.querySelector(".word"),
 | 
						|
    hintText = document.querySelector(".hint span"),
 | 
						|
    timeText = document.querySelector(".time b"),
 | 
						|
    scrambleContainer = document.querySelector(".scramble-container"),
 | 
						|
    checkBtn = document.querySelector(".buttons .check-word");
 | 
						|
 | 
						|
let correctWord, timer;
 | 
						|
 | 
						|
const checkWord = () => {
 | 
						|
    let userWord = inputField.value.toLowerCase();
 | 
						|
    if (!userWord) return alert("Please enter the word to check!");
 | 
						|
 | 
						|
    const action = userWord === correctWord ? "scrambleCorrect" : "scrambleIncorrect";
 | 
						|
 | 
						|
    fetch(`https://${GetParentResourceName()}/${action}`, {
 | 
						|
        method: "POST",
 | 
						|
        headers: { "Content-Type": "application/json; charset=UTF-8" },
 | 
						|
        body: JSON.stringify({}),
 | 
						|
    }).catch((err) => console.error("Error with fetch:", err));
 | 
						|
};
 | 
						|
 | 
						|
const initTimer = (maxTime) => {
 | 
						|
    clearInterval(timer);
 | 
						|
    timer = setInterval(() => {
 | 
						|
        if (maxTime > 0) {
 | 
						|
            maxTime--;
 | 
						|
            timeText.textContent = maxTime;
 | 
						|
        } else {
 | 
						|
            clearInterval(timer);
 | 
						|
            fetch(`https://${GetParentResourceName()}/scrambleTimeOut`, {
 | 
						|
                method: "POST",
 | 
						|
                headers: { "Content-Type": "application/json; charset=UTF-8" },
 | 
						|
                body: JSON.stringify({}),
 | 
						|
            }).catch((err) => console.error("Error with fetch:", err));
 | 
						|
        }
 | 
						|
    }, 1000);
 | 
						|
};
 | 
						|
 | 
						|
const shuffleWord = (word) => {
 | 
						|
    let wordArray = word.split("");
 | 
						|
    for (let i = wordArray.length - 1; i > 0; i--) {
 | 
						|
        let j = Math.floor(Math.random() * (i + 1));
 | 
						|
        [wordArray[i], wordArray[j]] = [wordArray[j], wordArray[i]];
 | 
						|
    }
 | 
						|
    return wordArray.join("");
 | 
						|
};
 | 
						|
 | 
						|
const initGame = (scrambledWord, gameHint, gameTime) => {
 | 
						|
    const shuffledWord = shuffleWord(scrambledWord);
 | 
						|
    wordText.textContent = shuffledWord;
 | 
						|
    hintText.textContent = gameHint;
 | 
						|
    correctWord = scrambledWord.toLowerCase();
 | 
						|
    inputField.value = "";
 | 
						|
    inputField.setAttribute("maxlength", correctWord.length);
 | 
						|
    initTimer(gameTime);
 | 
						|
    scrambleContainer.style.display = "flex";
 | 
						|
};
 | 
						|
 | 
						|
checkBtn.addEventListener("click", checkWord);
 | 
						|
 | 
						|
const resetGame = () => {
 | 
						|
    scrambleContainer.style.display = "none";
 | 
						|
    clearInterval(timer);
 | 
						|
    correctWord = "";
 | 
						|
    wordText.textContent = "";
 | 
						|
    hintText.textContent = "";
 | 
						|
    inputField.value = "";
 | 
						|
    inputField.setAttribute("maxlength", 0);
 | 
						|
    timeText.textContent = 0;
 | 
						|
};
 | 
						|
 | 
						|
document.addEventListener("keydown", (event) => {
 | 
						|
    if (event.key === "Escape") {
 | 
						|
        fetch(`https://${GetParentResourceName()}/closeScramble`, {
 | 
						|
            method: "POST",
 | 
						|
            headers: { "Content-Type": "application/json; charset=UTF-8" },
 | 
						|
            body: JSON.stringify({}),
 | 
						|
        }).catch((err) => console.error("Error with fetch:", err));
 | 
						|
        resetGame();
 | 
						|
    }
 | 
						|
});
 | 
						|
 | 
						|
window.addEventListener("message", (event) => {
 | 
						|
    let data = event.data;
 | 
						|
    if (data.action === "wordScramble") {
 | 
						|
        initGame(data.word, data.hint, data.time);
 | 
						|
    } else if (data.action === "close") {
 | 
						|
        resetGame();
 | 
						|
    }
 | 
						|
});
 |