• Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом


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

    Игра "Жизнь"

    Подготовка ролика

    В дополнение к четырем кнопкам (рис 6.15) необходимо создать клип-ячейку. Назовем этот клип "gridbox". Он не должен изначально находиться на рабочем поле, но ему надо присвоить имя в панели Linkage Properties, чтобы можно было создавать его копии с помощью ActionScript.

    Клип "gridbox" должен содержать два кадра – один с точкой, а второй – в виде пустой ячейки. Первому кадру назначьте сценарий с командой stop (). В отдельный слой клипа поместите кнопку, чтобы пользователь мог кликать по ячейке.

    Наконец, создайте клип "actions", который будет содержать обращение к основной функции нашего кода.

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

    Первая функция создает сетку из 25x15 ячеек и двумерный массив, Каждая строка массива представляет собой столбец (одномерный массив) булевых переменных. Таким образом, для доступа к верхнему левому элементу сетки надо написать grid[0][0], а для доступа к пятому элементу и седьмому сверху – grid[4] [6] (то есть центр координат находится в верхнем левом углу).

    function createGridO {
        // Создаем клипы и заполняем массив,
        grid = new Array();
        for (y = 0; y < 15; y++) {
            var temp = new ArrayO;
            for (x = 0; x < 25; x++) {
                me = attachMovie("gridbox", "gridbox " + x + " " + y, y * 25 + x);
                mc._x = x * 20 + 30;
                mc._y = y * 20 + 30;
                mc.x = x;
                mc.y = y;
                temp.push(false);
            }
            grid.push(temp);
        }
    }

    Функция cycle является центральным моментом нашей программы. Она используется для вычисления правил применительно к каждой ячеке. Обратите внимание, что мы дублируем массив grid. Это делается для того, чтобы при изменении значения какого-нибудь элемента массива grid это не повлияло на дальнейшие вычисления на данном шаге программы. Все вычисления происходят опираясь на значения элементов массива baseGrid.

    function cycle() {
        // Дублируем массив grid.
        var baseGrid = duplicateGrid();
        // Делаем проход по всем ячейкам,
        for (y = 0; y < 15; y++) {
            for (x = 0; x < 25; x++) {
                thisBox = baseGrid[y][x];
                mc = this["gridbox " + x + " " + y];
                // Вычисляем количество "заселенных" ячеек вокруг
                // данной.
                n = 0;
                n += baseGrid[y - 1][x - 1];
                n += baseGrid[y - 1][x];
                n += baseGrid[y - 1][x + 1];
                n += baseGrid[y][x - 1];
                n += baseGrid[y][x + 1];
                n += baseGrid[y + 1][x - 1];
                n += baseGrid[y + 1][x];
                n += baseGrid[y + 1][x + 1];
                // Если в этой ячейке уже была точка и если количество
                // "жильцов" вокруг равно 2 или 3, то точка остается,.
                if (thisBox) {
                    if ((n == 2) or (n == 3)) {
                        newValue = true;
                    }
                    else {
                        newValue = false;
                    }
                    // Новая точка"рождается", если ячейка была пуста
                    //и если в смежных ячейках находится ровно 3 точки.
                }
                else {
                    if (n == 3) {
                        newValue = true;
                    }
                    else {
                        newValue = false;
                    }
                }
                // Меняем текущий кадр клипа mc.
                grid[y][x] = newValue;
                if (newValue) {
                    mc.gotoAndStop(2);
                }
                else {
                    mc.gotoAndStop(1);
                }
            }
        }
    }

    Функция duplicateGrid() создает копию массива grid и возвращает ее в качестве своего значения.

    function duplicateGrid() {
        var newGrid = new Array();
        for (y = 0; y < 15; y++) {
            var temp = new Array();
            for (x = 0; x < 25; x++) {
                temp.push(grid[y][x]);
            }
            newGrid.push(temp);
        }
        return(newGrid);
    }
    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.