This repository was archived by the owner on Dec 30, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhangman.js
More file actions
50 lines (45 loc) · 1.49 KB
/
hangman.js
File metadata and controls
50 lines (45 loc) · 1.49 KB
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
const givenLetters = [];
const sentence = 'INSERT A PHRASE HERE'.split('') ?? [];
export function update(newLetter) {
if (!givenLetters.includes(newLetter)) {
givenLetters.push(newLetter);
}
return sentence.includes(newLetter);
}
export function draw(hangmanboard, lettersboard, leaderboard) {
sentence.forEach((l) => {
const letterElement = document.createElement('span');
if (l === ' ') {
letterElement.innerText = '-';
} else if (givenLetters.includes(l)) {
letterElement.innerText = l;
} else {
letterElement.innerText = '_';
}
letterElement.innerText += ' ';
letterElement.classList.add('letter');
hangmanboard.appendChild(letterElement);
});
givenLetters.forEach((l) => {
if (!sentence.includes(l)) {
lettersboard.innerText += l;
}
});
const allProfiles = Object.keys(localStorage);
const allEntries = allProfiles
.map((profile) => {
let entry = JSON.parse(localStorage.getItem(profile));
return { profile, ...entry };
})
.sort((current, previous) => previous.points - current.points);
allEntries.forEach((entry) => {
const leaderboardElement = document.createElement('li');
leaderboardElement.innerHTML = `<h1>${entry.profile || 'Unknown'} → ${entry.points} (found: ${entry.wordFound ? 'yes' : 'no'})</h1>`;
leaderboard.appendChild(leaderboardElement);
});
}
export function hasFoundTheWord() {
return sentence
.filter((l) => l !== ' ')
.every((l) => givenLetters.includes(l));
}