В 2000 году мне попалась олимпиадная задача по математике. К сожалению, ее оригинальный текст у меня не сохранился, поэтому привожу его по памяти: «Дано поле 8 на 8 клеток. Каждая клетка может быть закрашена в один из двух цветов. Изначально все клетки имеют один цвет. За один ход вы можете изменить цвет любого поля и цвета всех сопряженных с ним клеток, находящихся на вертикали и горизонтали относительно данного поля. Можно ли таким способом получить любой заданный узор?». С нее все и началось.

Я не смог сходу решить эту задачу. Ситуация на поле меняется очень быстро, а вариантов полученных узоров было слишком много, чтобы перебрать их все. Математическое описание задачи я тогда не нашел и слава Богу. Я решил написать программку, в которой можно будет увидеть данное поле и получаемые на нем узоры. Такая программка была написана мной на языке Pascal. Во время написания, задача стала трансформироваться в игру, причем в игру, которую можно играть не только на компьютере. У каждой игры есть правила и есть цель, которую нужно достичь.

Правила следующие: «Перед вами поле 8 на 8 клеток. На каждом поле лежит карточка, окрашенная с двух сторон в два разных цвета, например, синий и желтый. Изначально, все карточки повернуты к игроку одинаковым цветом, например, синим. За один ход игрок меняет цвет (переворачивает) все карточки, которые находятся на вертикали и горизонтали, пересекающие любое игровое поле, включая поле пересечения. Целью игры является получение заданного узора за минимальное кол-во ходов».

Я был горд, что у меня есть своя собственная игра, в которую с интересом играла моя семилетняя дочь. Во время написания программы я нашел математическое доказательство, что по описанным правилам можно построить любой узор. Также я был несколько разочарован графическими возможностями, которые предлагал Pascal. К тому же для ввода каждого хода необходимо было набирать координаты нужного поля, мышь в программе отсутствовала.

В 2001 году я познакомился с программой Macromedia Flash. Я был восхищен ее графическими возможностями, анимацией, встроенным языком программирования. Все вместе это дает возможность создавать интересные интерактивные проекты. Поэтому для более глубокого изучения этой программы я поставил цель - перевести мою игру на Flash . Тогда же я дал игре название «Перекресток».

Каково же было мое разочарование, когда я узнал, что придуманная мной игра совсем не моя. Она уже реализована в известной российской компьютерной игре «Братья Пилоты». Там она представлена, как эпизод с "взломом холодильника" В игре необходимо подобрать код к холодильнику, закрытому на шестнадцать замков (матрица 4 на 4), и меняющих свое состояние закрытый - открытый по описанным выше правилам (рисунок 1). Кстати, этот эпизод считается самым сложным в игре.


Рис. 1. Скриншот программы «Братья Пилоты», эпизод со «взломом холодильника».

Описывая сейчас эту историю, я хочу подчеркнуть, что каждая программка, даже незначительная, должна иметь какую-то сверхзадачу, помимо написания кода. В моем случае это было создание игры и изучение Flash. Изученными мною приемами я и хочу с вами поделиться.

Данное описание - не интроспекция «как это было у меня». Во-первых, я уже не помню, как тогда я решал поставленные цели, о чем думал и т.д. А во-вторых, намного интереснее выделить основные приемы, средства, используемые для создания любого проекта и не только на Flash.

Когда я только приступал за написание данной статьи у меня был соблазн, просто привести код, написанный мной несколько лет назад и сделать комментарии к нему. Но едва ли кому-нибудь пригодится код, написанный для Flash 4. Поэтому я полностью переписал программу для Flash MX. Оптимизировал код, так, то программа в результате стала занимать вдвое меньше места, добавил новые функции, применил новые приемы о которых и хочу вам рассказать. Кстати, на момент написания данной статьи я был почти не знаком с версией программы Macromedia Flash - Flash MX. В этой версии программы изменен интерфейс, значительно расширены программные средства. И сверхзадачей при написании этой статьи лично для меня было изучение этой версии программы.

В своем описании, я буду предполагать, что на вашем компьютере установлена программа Macromedia Flash MX с русским интерфейсом (Внимание! Flash MX и Flash MX 2004 не одно и то же. Все скриншоты и программный код написан для версии Flash MX, в некоторых местах, будет показан код для самой последней версии программы от Macromedia). Также я предполагаю, что читатель знаком с основами Flash - умеет создавать простейшие изображения, создавать символы и т.п. а также владеет основами программирования.