Просмотр полной версии : КорнеКрабья Беда
KorneKrabb
24.10.2003, 14:57
необходимо чтобы в процессе выполненя скрипта двумерый массив ANE полностью принимал значение массива AOL ...
я путаюсь в синтаксисе AS как только начинаю в нем ковырять --- сразу запарываю весь скрипт
Помогите ПЛЗ...
Уточните задачу. Что есть 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] выполнятся будет, но у тебя не два массива а один, но с двумя именами. Это как два ярлыка к одному файлу.
KorneKrabb
31.10.2003, 01:18
хм, тогда как создать новый массив (map02) и скопировать туда все значерия map01 ?
Алексей Бирюков
31.10.2003, 17:00
Посимвольно, как.
newMap = new Array();
for ( i =1; i <=13; i++) {
newMap[i] = new Array();
for (j =1; j <=13; j++)
newMap[i][j] = newMap[i][j];
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.