Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   КорнеКрабья Беда (http://www.flasher.ru/forum/showthread.php?t=50490)

KorneKrabb 24.10.2003 14:57

КорнеКрабья Беда
 
необходимо чтобы в процессе выполненя скрипта двумерый массив ANE полностью принимал значение массива AOL ...
я путаюсь в синтаксисе AS как только начинаю в нем ковырять --- сразу запарываю весь скрипт
Помогите ПЛЗ...

major 24.10.2003 18:38

Уточните задачу. Что есть ANE и AOL? Каковы размеры массивов, по каким правилам осуществляется "прием" в массив и что такое этот "прием"?

KorneKrabb 25.10.2003 01:15

Попытаюсь объяснить....
Игра имеет вид тайловго поля, построенного при помощи двумерного массива(ANE ). При переходе игрока с одного поля на другое необходимо чтобы текущий массив был скопирован в массив AOL а сам ANE при этом примет новые значения...
Грубо говоря,
Новое поле строится генератором случайных чисел (random) , а текущая карта должна сохранятся в отдельном массиве...

По задумке должно запоминаться несколько посещенных карт

.....
теоритически у меня вроде все сходиться и должно работать но как только доходит до AScript получается нелепица.
наверное дело в синтаксисе.
поэтому я спросил как заставить некий двумерный массив полностью перенять все значения другого....

Алексей Бирюков 25.10.2003 19:04

Если у тебя синтаксическая ошибка, смотри окошко output.
Покажи актуальный кусок скрипта, что-ли.

KorneKrabb 28.10.2003 02:24

Код:

map01 = new Array();
for (j=1; j<=13; j++) {
    for (i=1; i<=13; i++) {
        cot = cot+1;
        duplicateMovieClip("_root.baseblox", "baseblox00"+cot, 1000+cot);
        setProperty("baseblox00"+cot, _x, 50+i*30);
        setProperty("baseblox00"+cot, _y, 50+j*30);
        cotar = "baseblox00"+cot;
        zoo = Math.floor(Math.random()*100)+1;
        map01[i][j] = zoo;
        trace(map01[i][j]);
        tellTarget (cotar) {
            gotoAndStop(_root.zoo);
        }
    }
}

это часть кода строящая лабиринт и по идее двумерный массив, но trace(map01[i][j]); выводит лишь - undefined . почему ?

Алексей Бирюков 28.10.2003 16:46

Попробуй добавить такую строку:
Код:

for (j=1; j<=13; j++) {
    map01[j] = new Array();  //  NEW!
    for (i=1; i<=13; i++) {

Смысл: двумерный массив есть массив строк. Но каждая из этих строк - опять же массив, и его надо создавать.

KorneKrabb 29.10.2003 10:41

Интересная идея.
и если j это координата y , а i это x
то как правильно найти значение в точке x=13,y=5 ?

Алексей Бирюков 29.10.2003 17:16

поправка
 
Циклы надо поменять местами, конечно.
Код:

for ( i =1; i <=13; i++) {
    map01[i] = new Array();
    for (j =1; j <=13; j++) {

иначе здесь

map01[i][j] = zoo;

идет работа со строкой, которая еще не создана.

KorneKrabb 30.10.2003 01:13

Алексей Бирюков многочисленные спасибы.
.... Наконец то вместо Undefined появились цифры в output'e
А если написать дальше
Код:

map02 = new Array;
map02 = map01;


то будет ли скажем map02[5][12] = map01[5][12] ?

Алексей Бирюков 30.10.2003 15:41

Эти две строчки эквивалентны одной

map02 = map01;

Дело в том, что переменная map02 есть указатель. В первой строке ты направляешь его на создаваемый массив, а во второй перенаправляешь на тот же массив, на который указывает map01. Равенство map02[5][12] == map01[5][12] выполнятся будет, но у тебя не два массива а один, но с двумя именами. Это как два ярлыка к одному файлу.


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

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