Страница 3 из 7

Re: Criss-Cross или научите быть не быдло кодером

Добавлено: 06 дек 2012, 20:13
gpv123
Упс... Небольшой недочет. После 15 строки добавить:

Код: Выделить всё

stage.removeEventListener(MouseEvent.CLICK, createFields);
Alazaur, создавай, в чем проблема? :D

Re: Criss-Cross или научите быть не быдло кодером

Добавлено: 06 дек 2012, 20:37
Alazaur
gpv123, мне мораль не позволяет чужую идею присваивать :D

А ежели по теме. Тут затронули тему построения объектов по сетке.
И я уже второй раз вижу предложенную Санычем модель построения с использованием одномерного массива. И хоть лопни в голове у меня никак не рисуется, как оную использовать в реальных условиях, где может понадобится сетка. Например реализация алгоритма поиска пути. Как в такой сетке перебрать и проверить только соседние ячейки от текущей.
Или такая модель построения используется только чисто в графических целях?
UPD: Поправил немного пост, не правильный вопрос задал изначально)))

Re: Criss-Cross или научите быть не быдло кодером

Добавлено: 06 дек 2012, 22:06
gpv123
Alazaur, лично я сразу понял, что тут лучше использовать одномерный массив. Выглядит как-то так:

Изображение

UPD: i равно гигантскому числу в клетке

Re: Criss-Cross или научите быть не быдло кодером

Добавлено: 06 дек 2012, 22:16
Alazaur
gpv123, это как раз ты приводишь пример вывода сетки в графических целях. С этим вопросов нет. Я имею ввиду другое.
Например есть сетка 100 x 100, каждая клетка имеет свойство проходима/непроходима. И стоит у меня юнит в какой-то клетке. Как мне имея сетку в одномерном массиве узнать какие вокруг него клетки проходимы, а какие нет.

Re: Criss-Cross или научите быть не быдло кодером

Добавлено: 06 дек 2012, 22:25
Casperovskii
Alazaur
Будь бобр, можешь в личку ответить, че мутишь? Потому что я такой движок мутил на C++, только у каждой клетки было 4 свойства - проходима ли каждая её граница (делал это, чтобы была возможность разноуровневых объектов и для спрыгивания). Поле было 50х50 и генерилось порядка минуты (на слабеньком компе).

Сорь за оффтоп, но да - в графических целях быстрее так, а в прогерских - никак нет.

Re: Criss-Cross или научите быть не быдло кодером

Добавлено: 06 дек 2012, 22:27
Alazaur
Casperovskii писал(а):Alazaur
Будь бобр, можешь в личку ответить, че мутишь?
Ничего не мучу, это я привел просто как пример :)))

gpv123, ты не подумай что я цепляюсь к этому способу построения или еще что))) Просто здесь ТС посоветовали построить сетку именно так несмотря на то что цели у него как раз таки программные. Вот я и думаю, если имеются такие возможности у "одномерной сетки" и они окажутся быстрее чем у "двухмерной" то я бы переписал некоторые алгоритмы из своих загашников)))

Re: Criss-Cross или научите быть не быдло кодером

Добавлено: 07 дек 2012, 06:13
sanych_dv
Воспринимайте массив в AS3 как объект и все значительно упростится. Одномерные они там или многомерные - это дело десятое. Важно представлять объект просто как пару "ключ => значение", в котором значением может быть что угодно, в том числе другой объект, с возможностью любого расширения своих значений. А, к примеру, в объекте Dictionary и ключом может быть что угодно. Если надо "быстрее", то используются типизированный массив Vector.<TYPE>, все элементы которого относятся к одному типу.

Re: Criss-Cross или научите быть не быдло кодером

Добавлено: 07 дек 2012, 06:36
sanych_dv

Код: Выделить всё

     // запишем значения в массив                        var arr:Array = [new Sprite, new MovieClip];                        arr[1].newProperty = "NEW MOVIECLIP PROPERTY";             for (var str:String in arr)             {                trace(str, " => ", arr[str]);            }                        trace(arr[1].newProperty);                        // return             // 0  =>  [object Sprite]                        // 1  =>  [object MovieClip]                        // NEW MOVIECLIP PROPERTY                        // ==============================================                        // теперь запишем то же самое, но с именованными ключами                        var obj:Object = { spr : new Sprite, mc: new MovieClip };                        // или            /*  var obj:Object = { };               obj.spr = new Sprite;             obj.mc = new MovieClip;*/                         for ( str in obj)             {                trace(str, " => ", obj[str]);            }                        obj.mc.newProperty = "NEW MOVIECLIP PROPERTY";                        trace(obj.mc.newProperty);                    // return             // spr  =>  [object Sprite]                        // mc  =>  [object MovieClip]                        // NEW MOVIECLIP PROPERTY 

Re: Criss-Cross или научите быть не быдло кодером

Добавлено: 07 дек 2012, 06:51
Alazaur
sanych_dv, спасибо конечно, но что такое массивы, объекты и вектора и как их использовать я знаю) Вопрос был далеко не в этом.

Re: Criss-Cross или научите быть не быдло кодером

Добавлено: 07 дек 2012, 07:04
sanych_dv
Ну раз знаете, то считайте, что это написано не для вас.