Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Написания кода для построения фигур тетриса (http://www.flasher.ru/forum/showthread.php?t=128866)

rregistratorr 19.08.2009 13:04

Написания кода для построения фигур тетриса
 
Доброго времени!
Для построения одной из фигур тетриса использую такую функцию:
Код AS3:

private function T_figura():void
                {
                        _rows = 2; // объявлена в конструкторе
                        _cols = 3; //  объявлена в конструкторе
                        _figurs = new Array(); // объявлена в конструкторе
 
                        var i:uint; // счетчик для 1 цикла
                        var j:uint; // счетчик для 2 цикла
                        var cub:Cub;
 
                        for (i = 0; i < _rows; i++)
                        {
                                for (j = 0; j < _cols; j++)
                                {
                                        if (i == 0 && j == 1)
                                        {
                                        cub = new Cub(); // объект описан в классе Cub
 
                                        /* определяем координаты по x и y где
                                        *Cub.SIZE_CUB-размер составляющего куба,
                                        *GAP - на сколько двигаем куб.
                                        */

                                        cub.x = j * (Cub.SIZE_CUB + GAP);
                                        cub.y = i * (Cub.SIZE_CUB + GAP);
 
                                        addChild(cub); // Добавляем объект
                                        _figurs.push(cub); // Добавляем объект в массив
                                        }
 
                                        if (i == 1 && j == 0)
                                        {
                                        cub = new Cub();
                                        cub.x = j * (Cub.SIZE_CUB + GAP);
                                        cub.y = i * (Cub.SIZE_CUB + GAP);
                                        addChild(cub);
                                        _figurs.push(cub);
                                        }
 
                                        if (i == 1 && j == 1)
                                        {
                                        cub = new Cub();
                                        cub.x = j * (Cub.SIZE_CUB + GAP);
                                        cub.y = i * (Cub.SIZE_CUB + GAP);
                                        addChild(cub);
                                        _figurs.push(cub);
                                        }
 
                                        if (i == 1 && j == 2)
                                        {
                                        cub = new Cub();
                                        cub.x = j * (Cub.SIZE_CUB + GAP);
                                        cub.y = i * (Cub.SIZE_CUB + GAP);
                                        addChild(cub);
                                        _figurs.push(cub);
                                        }
                                }
                        }
                }

Так вот вопрос, насколько "чист" код или может есть другой алгоритм?
Спасибо!

P.S. Код работает, фигура отрисовывается.

wvxvw 19.08.2009 13:38

Эрм... вообще-то вся идея тетриса в том, что любая фигура состоит из 4 квадратов... т.е. вам не нужны вложеные циклы для того, чтобы построить фигуру... я бы просто заранее создал 5 шаблонов (количество вариаций фигур) и использовал их случайным образом.

Dezar 19.08.2009 13:40

Цитата:

любая фигура состоит из 4 квадратов
ну это уже от версии тетриса зависит))может быть и 5 и 8 кубиков..а может и один.
но вот суть про макеты согласен.

rregistratorr 19.08.2009 13:47

Цитата:

Сообщение от wvxvw (Сообщение 843869)
... я бы просто заранее создал 5 шаблонов (количество вариаций фигур) и использовал их случайным образом.

Т.е. если я правильно понял, расставить составляющие кубы в заранее известные места?
Например: куб1 в позицию с координатами (0, 1), куб 2 (0, 2), куб 3 (0, 3), куб 4 (1, 2), тем самым получаем Т-фигуру.

Добавлено через 1 час 24 минуты
Сделал так:
Код AS3:

...
private function I_figura():void
{
        var cub:Cub;
 
        cub = new Cub();
        cub.x = 0 * (Cub.SIZE_CUB + GAP);
        cub.y = 0 * (Cub.SIZE_CUB + GAP);
        addChild(cub);
 
        cub = new Cub();
        cub.x = 0 * (Cub.SIZE_CUB + GAP);
        cub.y = 1 * (Cub.SIZE_CUB + GAP);
        addChild(cub);
 
        cub = new Cub();
        cub.x = 0 * (Cub.SIZE_CUB + GAP);
        cub.y = 2 * (Cub.SIZE_CUB + GAP);
        addChild(cub);
 
        cub = new Cub();
        cub.x = 0 * (Cub.SIZE_CUB + GAP);
        cub.y = 3 * (Cub.SIZE_CUB + GAP);
        addChild(cub);
 
}
...

Это есть хорошо?


Часовой пояс GMT +4, время: 21:05.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.