Пятнашки
Создание кода
Большая часть кода находится в основной временной шкале. Он начинается с выравнивания элементов на расстоянии точно в 54 пиксела, затем 100 раз выполняется цикл, перемещающий случайно выбранный элемент на пустую позицию.
function initGame() { // Устанавливаем горизонтальное и вертикальное расстояние // между элементами. tileDist = 54; // Помещаем все элементы на свои места, for (x = l; x <= 4; x++) { for (y = 0; y <= 3; y++) { tile = x + y * 4; _root["tile" + tile]; _x = x * tileDist; _root["tile" + tile]; _y = y * tileDist + tileDist; } } // Совершаем 100 произвольных перемещений, for (tilenum = 0; tilenum < 100; tilenum++) { do { // Выбираем элемент случайным образом. tile = "tile" + (random(15) + 1); // - Проверяем, есть ли рядом свободный квадрат. emptySpace = findEmpty(tile); // Цикл продолжается до тех пор, пока не будет найден // элемент, рядом с которым расположен свободный квадрат. } while(emptySpace == "none"); // Перемещаем элемент на свободное место. moveTile(tile, findEmpty(tile)); } }Когда случайным образом выбирается элемент, с помощью функции findEmpty определяется, есть ли среди смежных элементов свободный квадрат. Прежде чем проверять элемент мозаики, обязательно убедитесь в том, что свободное место не находится за границей игрового поля.
// Проверяем, есть ли свободное место около данного элемента, function findEmpty(tile) { // Определяем положение элемента. tilex = _root[tile]._x; tiley = _root[tile]._y; // Проверяем, есть ли элемент мозаики слева, if (tilex > tileDist) { if (!tileThere(tilex - tileDist, tiley)) { return("left"); } } // Проверяем, есть ли элемент мозаики справа, if (tilex > tileDistM) { if (!tileThere(tilex + tileDist, tiley)) { return("right"); } } // Проверяем, есть ли элемент мозаики сверху .if (tiley> tileDist) { if (!tileThere(tilex, tiley - tileDist)) { return("above"); } // Проверяем, есть ли элемент мозаики снизу, if (tiley > tileDistM) { if (!tileThere(tilex, tiley + tileDist)) { return("below"); } } // Элементы мозаики имеются со всех сторон, return("none"); }Если перед выражением стоит восклицательный знак, значит, Оно отрицается, то есть true превращается в false, a false в true. Эта операция известна как логическое не (not). Например, в предыдущем коде проверяется не tileThere, a not tileThere.
