Иллюстрированный самоучитель по созданию Flash-игр

Пятнашки

Создание кода

Большая часть кода находится в основной временной шкале. Он начинается с выравнивания элементов на расстоянии точно в 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.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.