[Вопрос] vJass и двумерный массив
|
|
Ty3uK | Дата: Пятница, 03 Февраля 2012, 09:45:32 | Сообщение # 1 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Сабж- как с помощью vjass сделать массив двумерным? Добавлено (03 Февраль 2012, 09:45:32) --------------------------------------------- Прошу прощения, нашел ответ на хгм. Code integer array test[8192][8192] является двумерным?
|
|
|
|
lawson | Дата: Пятница, 03 Февраля 2012, 11:28:46 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Quote (Ty3uK) как с помощью vjass сделать массив двумерным Используй динамические массивы. type array1 extends integer array[5] type array2 extends array1 array[5]
local array2 a = array2.create()
set a[1] = array1.create()
set a[1][0] = number
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 03 Февраля 2012, 11:29:53 |
|
|
|
SirNikolas | Дата: Пятница, 03 Февраля 2012, 13:08:12 | Сообщение # 3 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (Ty3uK) integer array test[8192][8192] Не совсем. Максимальное количество элементов (произведение индексов) не может превышать 409550.Добавлено (03 Февраль 2012, 13:08:12) ---------------------------------------------
Quote (lawson) type array1 extends integer array[5] type array2 extends array1 array[5] Тоже интересный вариант.
|
|
|
|
Ty3uK | Дата: Пятница, 03 Февраля 2012, 13:08:13 | Сообщение # 4 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| SirNikolas, как же тогда его реализовать?
|
|
|
|
SirNikolas | Дата: Пятница, 03 Февраля 2012, 13:09:44 | Сообщение # 5 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Писать индексы чуть меньше, чем 8192 * 8192.
|
|
|
|
Ty3uK | Дата: Пятница, 03 Февраля 2012, 13:16:06 | Сообщение # 6 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| SirNikolas, угу, [639][639]. А все-таки? Способа нет?
|
|
|
|
SirNikolas | Дата: Пятница, 03 Февраля 2012, 13:34:15 | Сообщение # 7 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Как нет? Ты же сам написал его в первом посте.Code globals integer array test[20][10] endglobals
function abc takes integer x, integer y, integer value returns nothing set test[x][y] = value endfunction
function def takes integer x, integer y returns integer return test[x][y] endfunction
|
|
|
|
DragoN | Дата: Пятница, 03 Февраля 2012, 22:41:28 | Сообщение # 8 |
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
| this
El Psy Congroo
|
|
|
|
FatalBlade | Дата: Суббота, 04 Февраля 2012, 01:09:01 | Сообщение # 9 |
10 уровень
Группа: Проверенные
Сообщений: 1523
Награды: 0
Репутация: 439
Блокировки:
| А как вам такой вариант двумерного массива? Например наш массив реальных назовём Array. Дадим ему индекс (интежер) = Index, но этот индекс тоже сделаем массивом, и создадим ещё 1 переменную, тоже интежер, назовём её N. Что же получается? Например что бы обратиться к какой то ячейке, нам нужно написать: set real = Array[Index[N]]. Это не двухмерный массив на самом деле, потому что Index[N] - это единая ячейка массива, ведь это тоже целочисленное значение, но всё равно, для удобства пользователя это может вполне заменить двумерный массив.
|
|
|
|
SirNikolas | Дата: Суббота, 04 Февраля 2012, 14:19:20 | Сообщение # 10 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Это не двумерный массив.Code set a[0][1] = 2 set a[1][1] = 3 call BJDebugMsg(I2S(a[0][1]) + " " + I2S(a[1][1])) Code set b[0] = 0 set b[1] = 0 set a[b[0]] = 2 set a[b[1]] = 3 call BJDebugMsg(I2S(a[b[0]]) + " " + I2S(a[b[1]])) Выдаст совершенно не то, что нужно.
|
|
|
|
Dreii | Дата: Суббота, 04 Февраля 2012, 14:23:00 | Сообщение # 11 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Quote (SirNikolas) set b[1] = 0 =1 может так?
|
|
|
|
SirNikolas | Дата: Суббота, 04 Февраля 2012, 15:09:11 | Сообщение # 12 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Не знаю. Я слабо понял, что имел в виду FatalBlade. Вообще можно расписать двумерный массив как одномерный:Code set a[x * WIDTH + y] = value
|
|
|
|