JSFiddle - React, Tailwind, and code Playground
JavaScript
var words = [
"фараон",
"фарбаути",
"фарватер",
"фарерский",
"фарингеальный",
"фарингит",
"фаринкс",
"фарисей",
"фарисейский",
"фарисейство",
"фармазон"
];
var word = words[Math.floor(Math.random() * words.length)];
var answerArray = '_'.repeat(word.length).split('');
var attRemain = word.length + 5;
var isCancelled = false,
isWin = false,
guess, position, code, wrongLetters = [],
addition = '';
while (attRemain > 0) {
addition = (wrongLetters.length > 0) ? "\nОтброшенные буквы: [ " + wrongLetters.join(" , ") + " ]" : '';
guess = prompt("Угадайте букву или нажмите 'Отмена' для выхода из игры.\nСлово: " + answerArray.join(" ") + ". Осталось " + attRemain + " попыток. " + addition);
if (guess === null) {
isCancelled = true;
break;
} else {
if (guess.length != 1) {
alert("Пожалуйста, вводите ровно одну букву.");
continue;
} else {
code = guess.toLowerCase().charCodeAt(0);
if (code < 1072 || code > 1105) {
alert("Допустимы только кириллические буквы.");
continue;
} else {
if (answerArray.includes(guess) || wrongLetters.includes(guess)) {
alert("Вы уже называли эту букву.");
continue;
} else {
if (word.includes(guess)) {
for (var i = 0, l = answerArray.length; i < l; i++) {
if (word[i] == guess) {
answerArray[i] = guess;
}
}
} else {
alert("Буквы '" + guess + "' в загаданном слове нет.");
wrongLetters.push(guess);
attRemain--;
}
}
}
}
}
if (answerArray.join("") == word) {
isWin = true;
break;
}
}
if (isCancelled) {
alert("Игра прервана");
} else {
if (isWin) {
alert("Отлично! Вы угадали слово '" + word + "'");
} else {
alert("Вы проиграли. Ваша последняя попытка: " + answerArray.join(" ")...