Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CompGraphicsRGUIT.doc
Скачиваний:
72
Добавлен:
21.04.2014
Размер:
2.03 Mб
Скачать

4.11. Решение логических задач на языке ActionScript

Решение логических задач предполагает использование оператора сравнения if. По своему синтаксису языкиActionScriptи Си похожи, в частности конструкция данного оператора выглядит так:

if(условие) группа операторов 1elseгруппа операторов 2;

Если условие истинно, то выполняется группа операторов 1, если ложно – то группа операторов 2.

В данном разделе будут рассмотрены три логические задачи различного уровня сложности.

Проверка правильности значения, введенного пользователем

В задании 4.9 была реализована возможность ввода пользователем числового значения, используемого в дальнейшем для изменения свойств _x,_y, или_rotation. При этом предполагалось, что пользователь будет всегда вводить числовую информацию, причем введенное число будет соответствовать задаче. В данном варианте того же клипа будет проверяться условие, введенное пользователем и, при неправильном вводе значение переменной будет автоматически изменяться на число10.

  1. Открыть файл plane.flaиз предыдущего задания.

  2. Перейти к кадру 3 слоя Control.

  3. Выделить первую слева кнопку управления углом вращения объекта. Обработчик события Отпускание кнопки, связанный с этой кнопкой, имеет следующий вид:

on(release){

plane._rotation+=d;

}

Напомним, что d – это значение, введенное пользователем и полученное через поле ввода. Воспользуемся встроенной функцией isNaN() для проверки условия: введенное значение является числом. Данная логическая функция возвращает Истина, если значение аргумента – не число.

  1. Изменить текст скрипта для приведенного выше обработчика события на следующий:

on(release){

if(isNaN(d)) d=10 // если введенное значение – не число

//то присвоить переменной d значение 10

plane._rotation+=d;

}

Напомним, что двойной слеш исползуется для отметки комментариев – строк программы, которые не содержат операторов.

  1. Отметить поочередно каждую из кнопок управления и изменить тексты обработчиков.

  2. Протестировать клип и убедиться, что функции выполняются.

  3. Сохранить файл на рабочем диске.

Предположим теперь, что нужно ограничить значение числа, вводимого пользователем.

  1. Изменить текст приводимого выше скрипта на следующий:

on(release){

if(isNaN(d)) d=10 // если введенное значение – не число

//то присвоить переменной d значение 10

if(Math.abs(d) > 30) d=10;

plane._rotation+= d )

}

Функция Math.abs возвращает абсолютное значение своего аргумента.

  1. Аналогично изменить обработчики событий для остальных кнопок.

  2. Протестировать клип и убедиться, что функции выполняются.

  3. Сохранить файл на рабочем диске.

Головоломка Угадай число

Создадим клип, который будет предлагать пользователю простую логическую задачу. Каждый раз в начале игры будет генерироваться случайное целое число numв диапазоне от 1 до 100. Пользователю предлагается угадать это число за наименьшее количество попыток. Для этого ему предоставляется поле ввода и кнопка, на которую он нажимает, когда закончит ввод числа. Программа сравнивает полученное от пользователя число со значениемnum и сообщает результат проверки одним из следующих сообщений:

  • Ваше число меньше,

  • Ваше число больше,

  • Вы угадали.

Одновременно подсчитывается количество попыток.

Примерный результат выполнения задания находится по адресу:

http://www.master-teacher.org/compAnimo/examples/logic0.html.

  1. Создать новый клип. Установить параметры: размеры 200х300 пикселей, цвет заднего плана – темно-синий (код #000099).

  2. Создать и установить рамку в соответствии с образцом.

  3. Добавить новый слой. Присвоить нижнему слою имя back, второму – имяwork.

  4. Выделить в слое backтретий кадр и нажать на клавишуF5. В результате первые три кадра этого слоя будут одинаковыми.

  5. Сделать недоступным для редактирования слой back.

  6. Создать в слое workтри пустых ключевых кадра.

  7. Создать символ класса Button. Присвоить символу имяbtn.

  8. Разместить на первом кадре кнопку и надписи в соответствии с образцом.

  9. Выделить первый кадр, открыть панель Actionsи создать следующий обработчик события «Вход в кадр»:

stop();

tryn=0;

ind._heigth=10;

Пояснения. Функцияstop()вызывается для того, чтобы клип не воспроизводился автоматически, а останавливался на первом кадре. Переменнаяtryn- количество попыток. Объектind(индикатор) находится на втором кадре и используется для визуального информирования пользователя о количестве попыток.

  1. Выделить второй кадр и расставить на нем статическое текстовое поле, поле ввода, кнопку, динамическое текстовое поле и рамку в соответствии с рисунком.

  2. Создать символ класса movieClip. Присвоить символу имяindicator. Символ представляет собой прямоугольник размером 10х10 пикселей.

  3. Установить в рамку экземпляр этого символа. Изменить свойства экземпляра: имя = «ind», значениеw(ширина)=1.

  4. Связать с динамическим текстовым полем переменную res.

  5. Выделить кадр 2 и создать следующий обработчик события Вход в кадр:

num=Math.random()*100+1;

num=Math.floor(num);

res="";

Первые две строки скрипта устанавливают значение переменной num(случайное число в интервале от 1 до 100). Последний оператор записывает пустую строку в динамическое поле вывода сообщения.

  1. Выделить кнопку и создать следующий обработчик события Release:

on(release){