MaminProgrammist
@MaminProgrammist
Я слава беброу

Почему скрипт выключается?

Проблема такова: Скрипт спрашивает у пользователя букву и потом должен проводить с этой буквой определённые действия, но вместо этого скрипт просто выключается.
сам код (не полностью доделан, т.к. я большую часть времени пытался решить эту проблему):
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;
    }
}
  • Вопрос задан
  • 73 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы