Вначале выделим основные идеи, которые после сформулируем в виде задач и преобразуем в программный код.

1. Итак, дано поле «восемь на восемь», где каждая клетка поля может находиться в двух состояниях. Как это можно реализовать - конечно, с помощью массива. В двумерном массиве будут храниться нули и единицы. Выбирая элемент массива [i,j] нужно будет изменить значения, хранящиеся в строке и столбце, на противоположные (рисунок 2). Для этого нужно пройти все элементы строки j от [i,1] до [i,8], а также все элементы столбца i от [1,j] до [8,j]. Так как элемент [i,j] меняет свое значение дважды и возвращается к исходному состоянию, то необходимо дополнительно, третий раз изменить значение массива [i,j].

Элемент массива
Рис. 2. Элемент массива mas[i.j] и сопряженные с ним элементы «креста».

Так как такое действие выполняется в процессе игры многократно, имеет смысл оформить его в виде отдельной процедуры. Вот ее алгоритм, представленный в виде блок-схемы:

Блок-схема процедуры
Рис. 3. Блок-схема процедуры, изменяющей значение элементов массива «в кресте» на противоположное.

2. Игровое поле должно состоять из кнопок, щелкая на которую в компьютер передаются значения переменных x и y, соответствующие номеру столбца и строки соответственно. Далее эти переменные должны передаваться процедуре, изменяющей элементы массива.

 Кнопка поля и код, соответствующий ей
Рис. 4. Кнопка поля и код, соответствующий ей.

3. Поверх квадратных кнопок, имеющих единый цвет, например желтый, должны располагаться объекты, имеющие другой цвет, например синий. Эти объекты должны изменять свою видимость и тем самым то заслонять, то открывать лежащие под ними кнопки. Во Flash свойства могут изменять только символы библиотеки. У каждой копии символа на основной сцене должно быть уникальное имя.

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

5. Необходимо предусмотреть отдельную процедуру, которая «очищает поле», а по своей сути просто обнуляет все элементы массива. Для вызова этой процедуры необходима отдельная кнопка «очистить».

6. Для придания игре драматизма желательно подсчитывать количество сделанных ходов. Для этого необходимо задать отдельную переменную и увеличивать ее на единицу при любом сделанном ходе.

7. Для придания игре драматизма необходимо высчитывать минимальное количество ходов, необходимых для построения каждого заданного узора и сравнивая расчетное и реальное количество сделанных ходов высчитывать «качество игрока».

8. Не смотря на то, что правила игры достаточно просты, необходима кнопка, выводящая окно, эти правила объясняющие. Вообще, проектирование удобного интерфейса - это отдельная задача и она может быть даже более сложной, чем написание программного кода.