Проблема такова: Скрипт спрашивает у пользователя букву и потом должен проводить с этой буквой определённые действия, но вместо этого скрипт просто выключается.
сам код (не полностью доделан, т.к. я большую часть времени пытался решить эту проблему):
var flag1 = true;
var Game = {
words: ['orange', 'computer', 'javascript', 'python', 'code'],
lastNumber: 4
};
while (flag1) {
var flag2 = true;
if (Game.words.length == 5) {
var startGame = prompt('Вы готовы начать новую игру? (да/нет)')
} else if (Game.words.length == 0) {
alert('Ура! вы отгадали все слова!')
flag1 = false;
break;
}
else {
var startGame = prompt(`Ещё не отгаданы это кол-во слов - ${Game.words.length}. Продолжить игру? (да/нет)`)
};
startGame = startGame.toLocaleLowerCase();
if (startGame === 'да') {
alert('Уточнение: все слова на английском и с маленькой буквы')
const randomChoice = (obj) => { //выбиратель рандомных слов
let random = Math.random();
if (random <= 0.2 && obj[0] !== undefined) {
return obj[0]
} else if (0.21 <= random && random <= 0.4 && obj[1] !== undefined) {
return obj[1]
} else if (0.41 <= random && random <= 0.6 && obj[2] !== undefined) {
return obj[2]
} else if (0.61 <= random && random <= 0.8 && obj[3] !== undefined) {
return obj[3]
} else if (0.81 <= random && random <= 1 && obj[4] !== undefined) {
return obj[4]
}
};
var word = randomChoice(Game.words)
var Tries = {
badLetters: [],
nowInputIs: function(att) {
while (flag2) {
let wordLength = word.length
if (att == 0) {
//если это первая попытка пользователя - в this.nowWordIs добовляется строка из "_" длинной в слово выбранное рандомайзером
var underlineWord = '_'.repeat(wordLength);
this.nowWordIs.push(underlineWord)
} else {
var underlineWord = this.nowWordIs;
//иначе берется уже слово из this.nowWordIs
}
if (underlineWord.includes('_') == true) {
//проверка на - содержит ли слово подчеркивания, если да - пользователь может выбрать букву - нет - слово отгадано
var j = parseInt(prompt(`Нужно угадать слово - ${this.nowWordIs}\nБукв в слове - ${wordLength}\nКакую букву вы хотите отгадать? (цифра)\nНапишите "выход" для выхода`)) - 1;
if (j === 'выход') {
flag2 = false;
} else if (0 < j && j <= this.hideWordIs.length) {
//проверка, чтобы пользователь мог выбрать только букву из доступных, то-есть если букв 6, то пользователь может выбрать максимум 6 букву
let userInput = prompt('Назовите эту букву')
if (userInput.length == 1) {
//ввод пользователя должен быть только 1 буквой
String.prototype.replaceAt = function(index, replacement) {
//заменитель букв в нужных местах
return this.substr(0, index) + replacement + this.substr(index + replacement.length);
}
if (this.hideWordIs.includes(userInput) == false) {
this.badLetters.push(userInput)
att += 1
return alert('не угадал)')
} else {
let nowWord = this.nowWordIs
let changedUnderlineWord = nowWord.replaceAt(j, userInput);
att += 1
//заменяем слово только с подчеркиваниями на слово с угаданной буквой (или больше, если пользователь угадал 2 раза)
delete this.nowWordIs[0]
this.nowWordIs.push(changedUnderlineWord)
}
}
}
} else {
flag2 = false
}
}
},
hideWordIs: word,
nowWordIs: []
}
let attemp = 0;
attemp = 0;
let flag3 = true;
while (flag3) {
Tries.nowInputIs(attemp)
}
Tries.nowWordIs = [];
delete Game.words[Game.lastNumber]
Game.lastNumber -= 1
} else {
flag1 = false;
break;
}
}