function initGame() { //
Задаем фразу,
phrase = "Imagination is more important than knowledge";
// Создаем отображаемую строку.
display = "" ;
for (i = 0; i
// Рассавляем пробелы там, где нужно.
if (phrase.charAt(i) == " ") {
display = idsplay + " ";
} else {
// Заменяем буквы знаками подчеркивания,
display = display + "_";}
}}
Функция charAt возвращает символ, расположенный на определенном месте в строке. Как во многих функциях языка ActionScript, первый символ располагается в позиции 0.
Каждый раз, когда пользователь нажимает клавишу, клип "actions" передает код символа в функцию makeGuess. Первое, что делает эта функция, - преобразовывает код в букву.Функция fromCharCode получает число, например 65, и преобразует его в символ, такой как "А". У всех символов есть соответствующий код. Числа от 65 до 90 относятся к заглавным буквам. Числа от 97 до 122 - к прописным (имеется в виду английский алфавит); 32 обозначает пробел. Полный список символов и их кодов можно найти в документации по Flash.
Изначально переменной gotOne присваивается значение false. Если найдено хотя бы одно совпадение, оно изменяется на true. Если в конце цикла значение переменной все еще равно false, значит, игрок не угадал букву, и клип с изображением лисы переходит к следующему кадру.Функция toUpperCase() берет любую строчку и преобразует все прописные буквы в заглавные. Эта функция очень полезна в таких ситуациях, когда вы хотите найти совпадающие буквы независимо от их регистра (работает она только для строк, содержащих буквы аиглийского алфавита).
function makeGuess(code) {
// Получаем символ, соответствующий нажатой клавише,
letter = String.fromCharCode(code);
// Проверяем, является ли символ буквой,
if (isAlpha(letter)) {
// Предполагаем, что буква не будет найдена.
gotOne = false;
// Начинаем заново отображать строку.
newDisplay = "";
for (i=0;i
// Проверяем,( совпадают ли буквы.
if (phrase.charAt(i).toUpperCase() == letter.toUpperCase()) {
// Помещаем букву в отображаемый текст.
newDisplay = newDisplay +
letter.toUpperCase();
// Отмечаем найденное совпадение.
gotOne = true;
} else {
// ЕСЛИ совпадения не найдены,
// отображаем те же буквы.
newDisplay = newDisplay + display.charAt(i)}
} // Обновляем строку,
display = newDisplay;
// Если совпадения не найдены, добавляем
// еще один фрагмент в рисунок с лисой,
if (!gotOne) {
fox.mextFrame();
// Проверяем, вся ли лиса изображена,
if (fox._currentFrame ==8) {
gotoAndPlay("lose");
}
} else if (display == phrase.toUpperCase()) {
// Отображаемая строка совпадает с исходной,
// завершаем игру. gotoAndPlay("win");}
}
}
Функция charCodeAt возвращает код любого символа строки. Единственный аргумент, который ей передается, - это местоположение символа То есть для первого символа следует записать charCodeAt (0).
// Запускаем утилиту для проверки,
// расположен ли символ в пределах от А до Z.
function isAlpha(letter) {
// Определяем код символа.
n = letter.charCodeAt(0) ;
// Преобразуем прописную буквы в заглавную.
if (n > 90) n -= 32;
// Проверяем, расположен ли символ в пределах от А до Z.
return ((n >= 65) and (n}
Функция Key.getAscii() возвращает код нажатой клавиши, Она может использоваться внутри функции onClipEvent (keyUp), примененной к клипу.
onClipEvent (keyUp) {
_root.makeGuess(Key.getAscii()));
}