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

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

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

Сообщение Alazaur »

sanych_dv, ну так вроде только я тут задавал вопросы по теме массивов))) Ну раз вы здесь может заодно и мне ответите? Я просто не понимаю, в чем смысл строить сетку основанную на одномерном массиве, если она впоследствии никуда не пригодна. Просто ради того чтоб была сетка?
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

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

Сообщение sanych_dv »

Я не оперирую категориями "одномерный массив", "многомерный массив". Любое значение в паре "ключ => значение" при необходимости должно иметь возможность быть расширенным новым свойством или методом.

В коде

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

 ...            fields[i] = new Field(i % 3, Math.floor(i / 3), i);... 
fields не является никаким одномерным массивом, поскольку каждое его значение является новым экземпляром класса Field с уже измененным свойством id. И никаких проблем доступа к нужным свойствам и методам класса Field через ссылки ОБЪЕКТА fields не существует. А уж какой это будет объект - с именованными ключами или нет, как будут использоваться свойства и методы экземпляров класса - вопрос удобства дальнейшей работы.
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

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

Сообщение Alazaur »

Ок, раз мы друг друга не понимаем на словах, давайте попробуем поговорить кодом :D
Например в своих алгоритмах я строю сетку примерно так:

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

var grid:Vector.<Vector.<Node>> = new Vector.<Vector.<Node>>;for (var i:int = 0; i < 100; i++) {    grid[i] = new Vector.<Node>;    for (var j:int = 0; j < 100; j++)     {        grid[i][j] = new Node(i, j);    }}
Теперь если мне надо к примеру проверить клетки стоящие рядом с текущей я могу написать так:

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

for (var i:int = current.i - 1; i <= current.i + 1; i++) {    for (var j:int = current.j - 1; j <= current.j + 1; j++)     {        //    }}

Вопрос как сделать такое же вот с таким:
sanych_dv писал(а):

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

private var _loc:Object = {};//... for (var i:int = 0; i < 9; i++){_loc["mc" + i] = new MovieClip;_loc["mc" + i].i = i; // задаем идентификацию клипу_loc["mc" + i].x = _loc["mc" + i].width * ( i % 3 );_loc["mc" + i].y = _loc["mc" + i].height * Math.floor( i / 3 );_loc["mc" + i].addEventListener(MouseEvent.CLICK , onClick);  addChild(_loc["mc" + i]);}
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

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

Сообщение Alazaur »

Суть вобщем в том, что хочу узнать возможно ли с тем же успехом использовать предложенный вами в этой теме способ построения сетки. Если можно то я бы просто потестил, а не быстрее ли оно будет. И подправил бы свои алгоритмы.
Последний раз редактировалось Alazaur 07 дек 2012, 08:14, всего редактировалось 1 раз.
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

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

Сообщение sanych_dv »

Ну и работайте с тем же оператором модуля дальше:

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

 for (var i:int = 0; i < 9; i++){trace(i  %  3, Math.floor( i / 3 ));} 
у вас и будет номер клетки по горизонтали и вертикали.
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

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

Сообщение Alazaur »

sanych_dv, а по диагонали?
UPD: Можете не отвечать я понял)))
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

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

Сообщение sanych_dv »

"По кругу, по квадрату, по дрожащим желтым пальцам,
По закону сохранения остатков непонятной красоты." )
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

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

Сообщение Alazaur »

Ну через модули точно не будет быстрее.))) Оставлю значит так как у меня и было. Вобщем это я и хотел узнать. Но тема как-то затянулась.
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

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

Сообщение sanych_dv »

Да можно и в самом начале сохранять положение клеток в свойствах клипа:

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

 ..._loc["mc" + i] = new MovieClip;_loc["mc" + i].xPos = i % 3; _loc["mc" + i].yPos = Math.floor( i / 3 ); // или в одном объекте, как удобнее... 
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

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

Сообщение Alazaur »

sanych_dv, ну доступ то к объекту по его свойству все равно не получишь. В этом есть смысл только для графического вывода. Я же имею ввиду именно внутреннюю логику, у меня сетка графического представления не имеет.
Ответить