|
Помогите с Javascript кодом
Добрый вечер. Написал код игры виселица. Возникли проблемы. Если значение переменной numberAttempt поменять на > 5, то игра начинает работать некорректно. Помогите пожалуйста разобраться с чем это связано. Заранее огромное спасибо.
P.S Если неправильно оформил тему, что-то не написал, тема не отражает сути и т.д. Сообщите пожалуйста, буду признателен. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Hangman!</title> </head> <body> <h1>Hangman!</h1> <script> var pickWord = function () { var words = ["программа", "детерминант", "обезьяна" , "кошка", "компьютер", "волна", "портрет", "корабль", "космос", "интернет", "цепочка", "дротик", "человек", "мандарин", "машина", "автобус", "автомобиль", "озарение", "идея", "страх", "ужас", "номер", "комната", "оружие", "балкон", "терраса", "картина", "светофор", "семафор", "индейка", "курица", "фонарь", "рыба", "фотография", "строка", "огонь", "вода", "сказка", "орудие", "броня", "инновация", "пруд", "речка", "чудовище", "шапка", "нитка", "бочка", "мусор", "останки", "клавиатура", "процессор", "блок", "видеокарта", "наушники", "портфель", "банка", "мозг", "рука", "конфета"]; return words[Math.floor(Math.random() * words.length)]; }; var setupAnswerArray = function (word) { var answerArray = [] for (var i = 0; i < word.length; i++) { answerArray[i] = "_"; } return answerArray; }; var showPlayerProgress = function (answerArray) { alert(answerArray.join(" ")); }; var getGuess = function () { return prompt("Угадайте букву или нажмите Отмена для выхода из игры"); }; var updateGameState = function (guess, word, answerArray) { var appearances = 0; for (var j = 0; j < word.length; j++) { if (word[j] === guess) { answerArray[j] = guess; appearances++; } } return appearances; }; var showAnswerAndCongratulatePlayer = function (answerArray, numberAttempt) { showPlayerProgress(answerArray); }; var word = pickWord(); var answerArray = setupAnswerArray(word); var remainingLetters = word.length; var numberAttempt = 5; while (remainingLetters > 0 && numberAttempt > 0) { showPlayerProgress(answerArray); var guess = getGuess(); if (guess === null) { break; } else if (guess.length !== 1) { alert("Пожалуйста, введите только одну букву."); } else { numberAttempt--; guess = guess.toLowerCase(); var correctGuesses = updateGameState(guess, word, answerArray); remainingLetters -= correctGuesses; remainingLetters--; } } alert(answerArray.join(" ")); if (numberAttempt > 0) { alert("Отлично! Было загадано слово " + word); } else { alert("Плохо! Вас повесили! Было загадано слово " + word); } showAnswerAndCongratulatePlayer(answerArray); </script> </body> </html> |
Omnia,
[HTML run]ваш код[/HTML] |
рони,
благодарю. |
Omnia,
какие правила, в чём некорректно? |
Omnia,
может строка 65 лишняя? |
рони, если выбирать одну и тужу букву определенное кол-во раз (4-6), при значение переменной numberAttempt > 5 (если кол-во попыток будет 6 и больше ), то выдаст, что якобы слово угадано ( хотя это не так).
|
рони,
Ого, вроде теперь все работает корректно. Огромное спасибо! |
Omnia,
тогда введите проверку -- такая буква уже не входит в слово |
Цитата:
Цитата:
|
Omnia,
протестируйте этот вариант <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Hangman!</title> </head> <body> <h1>Hangman!</h1> <script> var pickWord = function () { var words = ["программа", "детерминант", "обезьяна" , "кошка", "компьютер", "волна", "портрет", "корабль", "космос", "интернет", "цепочка", "дротик", "человек", "мандарин", "машина", "автобус", "автомобиль", "озарение", "идея", "страх", "ужас", "номер", "комната", "оружие", "балкон", "терраса", "картина", "светофор", "семафор", "индейка", "курица", "фонарь", "рыба", "фотография", "строка", "огонь", "вода", "сказка", "орудие", "броня", "инновация", "пруд", "речка", "чудовище", "шапка", "нитка", "бочка", "мусор", "останки", "клавиатура", "процессор", "блок", "видеокарта", "наушники", "портфель", "банка", "мозг", "рука", "конфета"]; return words[Math.floor(Math.random() * words.length)]; }; var setupAnswerArray = function (word) { var answerArray = [] for (var i = 0; i < word.length; i++) { answerArray[i] = "_"; } return answerArray; }; var showPlayerProgress = function (answerArray) { alert(answerArray.join(" ")); }; var getGuess = function () { return prompt("Угадайте букву или нажмите Отмена для выхода из игры"); }; var updateGameState = function (guess, word, answerArray) { var appearances = 0; for (var j = 0; j < word.length; j++) { if (word[j] === guess && answerArray[j] !== guess) { answerArray[j] = guess; appearances++; } } return appearances; }; var showAnswerAndCongratulatePlayer = function (answerArray, numberAttempt) { showPlayerProgress(answerArray); }; var word = pickWord(); var answerArray = setupAnswerArray(word); var remainingLetters = word.length; var numberAttempt = 5; while (remainingLetters > 0 && numberAttempt > 0) { showPlayerProgress(answerArray); var guess = getGuess(); if (guess === null) { break; } else if (guess.length !== 1) { alert("Пожалуйста, введите только одну букву."); } else { guess = guess.toLowerCase(); var correctGuesses = updateGameState(guess, word, answerArray); remainingLetters -= correctGuesses; if(!correctGuesses) numberAttempt--; alert("осталось " +numberAttempt+ " попыток"); } } alert(answerArray.join(" ")); if (numberAttempt > 0) { alert("Отлично! Было загадано слово " + word); } else { alert("Плохо! Вас повесили! Было загадано слово " + word); } showAnswerAndCongratulatePlayer(answerArray); </script> </body> </html> |
Часовой пояс GMT +3, время: 03:43. |
|