var answerArray = [];
массив
for (var i = 0; i с ответом
answerArray[i] = "_";
}
Remaining
letters —
var remainingLetters = word.length;
оставшиеся
буквы
7. Пишем игру «Виселица» 117
В строке в начале цикла for создается переменная цикла i, кото-
рая сначала равна 0, а затем возрастает до word.length (не включая,
однако, само значение word.length). При каждом повторе цикла мы
добавляем в массив новый элемент — answerArray[i]. Когда цикл
завершится, длина answerArray будет такой же, как длина слова.
Например, если было выбрано слово «макака» (в котором шесть букв),
answerArray примет вид [" _ ", " _ ", " _ ", " _ ", " _ ", " _ "]
(шесть знаков подчеркивания).
Наконец, создадим переменную remainingLetters, приравняв ее
к длине загаданного слова. Эта переменная понадобится, чтобы отсле-
живать количество букв, которые осталось угадать. Каждый раз, когда
игрок угадает букву, мы будем декрементировать (то есть уменьшать)
значение этой переменной: на 1 для каждого вхождения буквы в слово.
Программируем игровой цикл
Основа игрового цикла выглядит так:
while (remainingLetters > 0) {
// Основной код
// Показываем состояние игры
// Запрашиваем вариант ответа
// Обновляем answerArray и remainingLetters для каждого
// вхождения угаданной буквы
}
Мы используем цикл while, который будет повторяться
до тех пор, пока условие remainingLetters > 0 дает true.
В теле цикла надо будет обновлять remainingLetters
для каждого правильного ответа игрока; когда игрок уга-
дает все буквы, remainingLetters примет значение 0,
и цикл завершится.
Далее мы рассмотрим код, составляющий тело игро-
вого цикла.
Отображение состояния игры
Первым делом в теле игрового цикла нужно показать игроку текущее
состояние игры:
alert(answerArray.join(" "));
Мы делаем это, объединяя элементы answerArray в строку с про-
белом в качестве разделителя, а затем с помощью alert показываем
эту строку. Например, пусть загадано слово «макака» и игрок угадал
118 Часть I. Основы

буквы «м» и «а». Тогда итоговый массив примет вид: ["м", "а", " _ ",
"а", " _ ", "а"] и answerArray.join("") вернет строку "м а _ а _ а".
Диалог alert в этом случае будет выглядеть как на рис. 7.4.
Рис. 7.4. Отображение состояния игры с помощью alert
Обработка введенного ответа
Теперь нужно запросить у игрока ответ и убедиться, что он ввел одиноч-
ную букву.
var guess = prompt("Угадайте букву или нажмите Отмена для выхода
Guess —
из игры.");
предположе-
if (guess === null) {
ние
break;
} else if (guess.length !== 1) {
Break — здесь
alert("Пожалуйста, введите только одну букву.");
«отмена»
} else {
// Обновляем состояние игры
}
В строке prompt запрашивает у игрока ответ и сохраняет его
в переменной guess. Далее возможен один из четырех вариантов разви-
тия событий.
Первый вариант — если игрок нажмет кнопку «Отмена», guess при-
мет значение null. Этот вариант мы проверяем в строке командой
if (guess === null). Если это условие даст true, мы с помощью break
выйдем из цикла.
! Ключевое слово break можно использовать для немедленного выхода
из любого цикла, независимо от того, где именно внутри цикла это про-
исходит, или от того, выполняется ли на этот момент условие while .
Читать дальше
Конец ознакомительного отрывка
Купить книгу