![]() |
Работа с двумерным массивом
Доброго времени суток. Помогите разобраться с массивом. Есть код, заполняющий матрицу числами от 1 до 3:
Код AS3:
|
Код AS3:
|
Цитата:
Код AS3:
|
Оу, получается двумерным его сразу создать нельзя? Спасибо большое.
Добавлено через 41 секунду А в чем разница между Код AS3:
Код AS3:
|
Конечно нельзя. Как он узнает, что должно быть в каждой его ячейке?
|
Ну раз уж зашла речь про массивы, то вдогонку еще пара вопросов.
1. На сайте адоба написано: Цитата:
2. Можно ли при инициализации массива жестко указать, какой тип данных будет в нем храниться? |
Цитата:
|
Цитата:
Код AS3:
Цитата:
|
Спасибо за ответы, все понятно.
|
Цитата:
Цитата:
|
С векторами не совсем все понятно, но до них очередь еще дойдет. Спасибо за развернутые ответы.
|
Цитата:
Если, конечно, строковые ключи в Array использовать - то память жрать не будет, но и смысла как-бы нет использовать Array в этом случае вместо Object |
Еще вопрос возник. В процессе заполнения матрицы и последующей работы с ней необходимо проверять значения в заданной ячейке и в соседних ячейках (по вертикали и горизонтали). Если матрица уже создана и заполнена то проблем нет, а если только создается - то вылетает ошибка, описанная выше, так как ячейки выше и левее еще не существуют. Не хотелось бы делать две функции проверки - отдельно для новой матрицы и отдельно для существующей. Как можно выйти из положения, кроме заполнения всех ячеек матрицы на этапе инициализации нулями?
|
Если размерность "матрицы" известна заранее, то создавать массивы с размерностью, тогда ячейки "будут", со значением undefined (если не ошибаюсь). То есть их можно будет проверять, не проверяя существование их самих.
|
Да, это помогло решить проблему, спасибо. Но возникла следующая проблема =) В принципе ничего сложного - массив заполняется случайными числами от 1 до 6. Надо сделать проверку, чтоб не было трех и более одинаковых чисел подряд по вертикали и горизонтали. Сложность в том, что проверять приходится ячейки с индексами [n+2] и [n-2] - на краях матрицы вываливается ошибка о несуществующем элементе, как и выше. Может быть есть готовый алгоритм для таких проверок? А то не хотелось бы расписывать условия для каждого возможного варианта - левый край, правый край, и тп когда индекс оказывается за границей массива.
|
Матч 3? =)
Это придётся массивчики помучать таки и голову включить) На такое нет алгоритмов (хотя в сети всё может найтись). "Назад" проверять смысла нет, сзади всё уже проверено и не может быть неправильно. От [n] до [n + 2] только. Если MxN массив, то цикл проверки на 3 по горизонтали делается до M-2 (по вертикали N) и цикл проверки по вертикали аналогично. Можно слить в один цикл, просто сделать условие типа "если при проверке текущих координат будет вылезание, то проверку не проводить, считать, что она прошла успешно". А вообще нет ничего сложного и в "расписывании вариантов". Вариант на самом деле всегда один, просто делать проверку на вылезание надо всегда и если за массивом, то не пытаться достать значение) Есть ещё фокус, когда делаешь массив "с бордюрчиками", т.е. большего размера, чем надо, чтоб проверки только на бордюрчики могли залезть) Но ни разу их после школы не использовал. |
Насчет матч3 угадали, да и во всем остальном все верно - так и поступил. Идею с "бордюрчиками" отмел сразу как бредовую и не оптимальную =)
Готовые алгоритмы в сети нашлись, но половина из них как-раз с бордюрчиками =) Вообще неплохая подборка исходников нашлась по этой ссылке http://igdc.ru/igdc_top.php?allkonkurs (4 строчка Bejeweled) |
| Часовой пояс GMT +4, время: 10:42. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.