function doneGuess() {
numRightSpot = 0;
numRightColor = 0;
(1) → // Пять кнопок становятся неактивными.
for (i=0;i<5;i++) {
_root["rock"+row+"-"+i].active = false;
}
(2) → // Определяем, сколько имеется кнопок одного цвета.
temp = [0,0,0,0,0];
for (i=0;i<5;i++) {
temp[solution[i]]++;
}
(3) → // Выясняем, сколько цветов правильно угадано.
for (i=0;i<5;i++) {
color = _root["rock"+row+"-"+i]._currentFrame – 2;
if (color == solution[i]) {
numRightSpot++;
temp[color]–;
}
}
(4) → // Проверяем, сколько цветов угадано,
// но находится не на своих местах.
for (i=0;i<5;i++) {
color = _root["rock"+row+"-"+i]._currentFrame – 2;
if (color != solution[i]) {
if (temp[color] > 0) {
numRightColor++;
temp[color]–;
}
}
}
(5) → // Создаем белые камешки.
level = row*10+5;
x = rightColLoc;
for(i=0;i attachMovie("rock","white rock"+level,level); clip = _root["white rock"+level]; clip.gotoAndStop("white"); clip._x = x; clip._y = topRowLoc + row*vertSpace; level++ x+=horizSpace; } // Создаем черные камешки. for(i=0;i attachMovie("rock","black rock"+level,level); clip = _root["black rock"+level]; clip.gotoAndStop("black"); clip._x = x; clip._y = topRowLoc + row*vertSpace; level++; x+=horizSpace; } (6) → // Удаляем кнопку Done. done.removeMovieClip(); (7) → // Выясняем, выиграл ли игрок. if (numRightSpot == 5) { gotoAndPlay("win"); } else { row++; // Проверяем, проиграл ли игрок. if (row >= 10) { showSolution(); gotoAndPlay("lose"); } else { createRow(); } } Когда игрок проигрывает, функция showSolution создает пять новых экземпляров клипа и с их помощью отображает правильный вариант. В ролике, размещенном на Web-сайте, это решение располагается в нижней части игрового поля. function showSolution() { // Размещаем правильный вариант внизу экрана. for(i=0;i<5;i++) { attachMovie("rock","solution"+i,1001+i); clip = _root[“solution”+i]; clip._x = solutionx + i*horizSpace; clip._y = solutiony; clip.foroAndStop(solution[i]+2); }
На рис. 14.6 показан фрагмент ролика, когда игра уже проиграна. Функция showSolution поместила правильную последовательность (решение) внизу экрана.
Единственный оставшийся фрагмент кода – небольшой сценарий, прикрепленный к кнопке в каждом клипе «rock». Его задача состоит в том, чтобы переключать цвета один за другим и возвращаться к первому кадру (пустому месту), если пользователь щелкнул определенное число раз. Этот код также проверяет свойство active, чтобы убедиться, что ряд – текущий.
on (press) {
if (active) {
f = _currentFrame+1;
if (f > 6) f = 1;
gotoAndStop(f);
}
}
К сведению
Не забудьте присвоить последним двум кадрам клипа «rock» метки «white» и «black». Также обязательно поместите кнопку Done внутрь клипа «done», которому потом необходимо присвоить имя «done» в панели Linkage Properties. К сожалению, это необходимо, так как ActionScript не может динамически создавать кнопки сами по себе. Считайте, что клип «done» – это просто «обертка» для кнопки Done.
Другие возможности
Важно помнить о том, что если вы хотите изменить какие – либо элементы игры, надо соответственно подкорректировать константы, представленные в начале кода. Если вы не будете о этом забывать, с игрой можно делать практически что угодно.
Чтобы изменить уровень сложности игры попробуйте изменить количество попыток угадать решение. Также можно увеличить или уменьшить число цветов и мест для них.