Если клавиши со стрелками нажаты, происходит обновление переменной charpos.В конце этой функции вызывается функция showCursor,и правильная буква выделяется полужирным шрифтом.
Если нажата буква, происходит обновление
userMap,чтобы показать, что пользователь хочет поставить нажатую клавишу в соответствие с текущей закодированной буквой. Текстовое поле обновляется с помощью
showPhrase.После этого расшифрованная фраза сравнивается с исходной, чтобы выяснить, насколько она ей соответствует.
function getLetter() {
// Считываем ascii код и код клавиатуры.
var ascii = Key.getAscii();
var code = Key.getCode();
// Передвигаем курсор.
if (code == Key.LEFT) {
charpos–;
if (charpos < 0) charpos = 0;
} else if (code == Key.RIGHT) {
charpos++;
if (charpos > phrase.length-1) charpos = phrase.length-1;
} else {
// Считываем клавиши.
var keyChar = String.fromCharCode(ascii);
keyChar = keyChar.toUpperCase();
// Убеждаемся, что была нажата буква.
if ((keyChar >= "A") and (keyChar <= "Z")) {
// Считываем символ из фразы.
phraseChar = phrase.toUpperCase().charCodeAt(charpos)-65;
// Если это буква.
if ((phraseChar >= 0) and (phraseChar < 26)) {
// Получаем ее значение в карте
letterNum = letterMap.charCodeAt(phraseChar)-65;
// Заменяем букву во второй карте.
userMap = replaceChar(userMap,letterNum,keyChar);
// Обновляем фразу
showPhrase();
//Проверяем, не окончена ли игра.
if (phrase.toUpperCase() == decrypted) {
gotoAndStop("game over");
}
}
}
}
// Обновляем курсор.
showCursor();
}
К сожалению, нет такой команды ActionScript, позволяющей легко заменять одну букву в строке на другую. Поэтому придется сделать для этого собственную функцию. Функция берет буквы до замены и присоединяет их к буквам после замены, с новой буквой в середине.
// Заменяем букву в строке.
function replaceChar(mainString, num, newchar) {
newString = mainString.substring(0,num)+newchar+mainString.substring(num+1,mainString.length);
return(newString);
}
Чтобы показать пользователю, к какой букве относится переменная charpos,эта буква выделяется полужирным и в зашифрованном, и в расшифрованном поле. Сделать это можно с помощью объекта типа TextFormat, появившегося в версии Flash МХ. Объекты TextFormat имеют множество свойств. Когда вы применяете формат текста к текстовому полю, в поле меняются только те свойства, которые были специально заданы в объекте. Объект plainFormatтипа TextFormat обозначает только то, что полужирное выделение ошибочно. Таким образом, если он применен к текстовым полям decryptedTextи encryptedTextвсе полужирные буквы заменяются на обычные. Объект cursorFormatимеет противоположное действие. Все буквы, к которым он применен, становятся полужирными. Код устанавливает формат текста только одной буквы в поле, которая соответствует charpos.
function showCursor() {
// Оба поля устанавливаем невыделенным шрифтом.
plainFormat = new TextFormat();
plainFormat.bold = false;
decryptedText.setTextFormat(plainFormat);
encryptedText.setTextFormat(plainFormat);
// Одну букву выделяем полужирным.
cursorFormat = new TextFormat();
cursorFormat.bold = true;
decryptedText.setTextFormat(charpos,cursorFormat);
encryptedText.setTextFormat(charpos,cursorFormat);
}
К сведению
Исходный ролик содержит кадр «game over». Это к нему возвращается ролик, когда головоломка решена. Вы также можете использовать removeListener, если хотите заставить ролик перестать отвечать на нажатие клавиш.
Другие возможности
По мере того, как игрок движется вдоль фразы с помощью клавиш со стрелками, курсор иногда оказывается над пробелом или другим неактивным знаком. Вы можете расширить код, чтобы следить за движением курсора и, когда он находится на пустым пространством, заставить его продолжать движение вперед или назад, пока он не коснется буквы.
Хотя исходный ролик содержит фразу, встроенную в код, вы можете считывать ее с помощью команд LoadVariables или LoadVars. Это дает вам возможность изменять фразу без перекомпилирования swf-файла.
• Пазл
• Пятнашки
• Игра совпадений
• Найди картинку
Игры, использующие изображения в качестве основных элементов, очень разнообразны. Изображения могут быть любыми, поэтому вы можете использовать их на любом Web-сайте. В этой главе будет рассмотрено четыре типа мозаики. Первый – простая составная картинка-загадка, в которой игрок собирает элементы картинки. Во второй игре пользователя просят перемещать квадратные элементы мозаики вдоль сетки, пока не будет составлена картинка. В третьей игре пользователь должен находить совпадающие изображения. В последней игре необходимо обнаружить место отдельного фрагмента в целой картинке.
Исходный файл: Jigsawpuzzle.fla
Игра "Пазл" состоит из элементов одного размера, которые, соединяясь, образуют целостное изображение. Обычно они сделаны из картона и для составления картинки требуется большая площадь, например, обеденный стол. Так как экран монитора слишком мал по сравнению со столом, создать компьютерный аналог такой игры очень сложно.
Читать дальше
Конец ознакомительного отрывка
Купить книгу