HTMLify
script.js
Views: 4 | Author: cody
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | const word = document.getElementById('word'); const text = document.getElementById('text'); const scoreEl = document.getElementById('score'); const timeEl = document.getElementById('time'); const endgameEl = document.getElementById('end-game-container'); const settingsBtn = document.getElementById('settings-btn'); const settings = document.getElementById('settings'); const settingsForm = document.getElementById('settings-form'); const difficultySelect = document.getElementById('difficulty'); // List of words for game const words = [ 'sigh', 'tense', 'airplane', 'ball', 'pies', 'juice', 'warlike', 'bad', 'north', 'dependent', 'steer', 'silver', 'highfalutin', 'superficial', 'quince', 'eight', 'feeble', 'admit', 'drag', 'loving' ]; // Init word let randomWord; // Init score let score = 0; // Init time let time = 10; // Set difficulty to value in ls or medium let difficulty = localStorage.getItem('difficulty') !== null ? localStorage.getItem('difficulty') : 'medium'; // Set difficulty select value difficultySelect.value = localStorage.getItem('difficulty') !== null ? localStorage.getItem('difficulty') : 'medium'; // Focus on text on start text.focus(); // Start counting down const timeInterval = setInterval(updateTime, 1000); // Generate random word from array function getRandomWord() { return words[Math.floor(Math.random() * words.length)]; } // Add word to DOM function addWordToDOM() { randomWord = getRandomWord(); word.innerHTML = randomWord; } // Update score function updateScore() { score++; scoreEl.innerHTML = score; } // Update time function updateTime() { time--; timeEl.innerHTML = time + 's'; if (time === 0) { clearInterval(timeInterval); // end game gameOver(); } } // Game over, show end screen function gameOver() { endgameEl.innerHTML = ` <h1>Time ran out</h1> <p>Your final score is ${score}</p> <button onclick="location.reload()">Reload</button> `; endgameEl.style.display = 'flex'; } addWordToDOM(); // Event listeners // Typing text.addEventListener('input', e => { const insertedText = e.target.value; if (insertedText === randomWord) { addWordToDOM(); updateScore(); // Clear e.target.value = ''; if (difficulty === 'hard') { time += 2; } else if (difficulty === 'medium') { time += 3; } else { time += 5; } updateTime(); } }); // Settings btn click settingsBtn.addEventListener('click', () => settings.classList.toggle('hide')); // Settings select settingsForm.addEventListener('change', e => { difficulty = e.target.value; localStorage.setItem('difficulty', difficulty); }); |