![]() |
Динамический массив - способы реализации!
Нужен двухмерный бесконечный массив.
То есть если к примеру number-это бесконечность, то мне нужен такой массив, если его представлять в обычной форме: Dim MyArray(number, number) ;Ну типа создаем квадрат для морского боя, только размер ничем не ограничен - это мне надо! :) Посоветовали пользоваться банками(банки памяти всмысле), дак что-то так ссебе впечатление оставили. Какие-то неповоротливые они, трудно с ними работать, они очевидно не дают всех тех возможностей, что могут дать обыкновенные массивы...Ну хотя бы например тем, что банки могут быть только одномерными, чтобы создавать двухмерность или трёхмерность в одном банке, придётся сильно извращаться :( И вообще что-то странное с ними творится: я в цикле работаю с PokeInt ну и ResizeBank естественно, дак вот поличить правильный указательнь на ентити из банка получается только в этом цикле, если же за его пределы написать - PeekInt(bank, 4) - то с этим энтити будет программа вылетать со всем изместной мав.((( Вообщем что делать? Типы... |
Ответ: Динамический массив - способы реализации!
Цитата:
Тип в блитце - это и есть безразмерный динамический массив |
Ответ: Динамический массив - способы реализации!
ELIAS
пользуйся n-мерной проекцией масива в 1-мерный (в данном случае 2д проекция это X1 = Y2 * SizeX2 + X2), а 1-мерным масивом "неограниченого" размера может быть даже файл на диске под понятием "неограниченый" я представляю себе такой масив данных обьемом 1 - 1.5 гигабайта, потому про производительность таких решений не важна для работы системы, потому если обьем данных не превышает 1-5 мегабайт то следует это всё тупо засунуть в динамические структуры (типы хотя бы) и не мучать себе голову |
Ответ: Динамический массив - способы реализации!
А зачем же нужны банки памяти???
Мне доверенные люди точно сказали что динамический массив в блитце - банк памяти!..:dontknow: |
Ответ: Динамический массив - способы реализации!
ELIAS
банк памяти это особенная структура данных, нужна она к примеру для создания пакетов для отправки через сеть, работу как буфер который может создаватся из зашифрованого файла и тд |
Ответ: Динамический массив - способы реализации!
Банки очень удобны, но из встроенных типов данных там
byte short int float К тому же, так или иначе, для удобной работы их скорее всего понадобиться обёртывать в типы и писать ряд методов. В идеале - написать на их базе класс-контейнер для произвольного типа данных. Так же можно используя только типы и команды object-handle написать связанный список произвольной архитектуры, но "разыменование" достаточно долгая по выполнению команда. www.boolean.name > Программирование в широком смысле слова > Алгоритмика Туториальчик по Связанным спискам http://forum.boolean.name/showthread.php?t=1194 www.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ Контейнер данных http://forum.boolean.name/showthread.php?t=5730 |
Ответ: Динамический массив - способы реализации!
В блице можно много раз юзать Dim допустим следующий код :
PHP код:
Полный безразмерный массив либо через типы либо так: PHP код:
Пример на практике: PHP код:
Через типы всё немного посложнее: Опять же если речь идёт о 2D карте: PHP код:
Личная заметка: Както так получилось, что первый способ у меня работает быстрее(который без типов) В принципе способ живой и не возбраняется его использовать |
Ответ: Динамический массив - способы реализации!
В blitz-FAQ от avel написано:
Цитата:
Если писать так field array[100,2] - то блитц выдает ошибочку :((( |
Ответ: Динамический массив - способы реализации!
Никак
|
Ответ: Динамический массив - способы реализации!
А как тогда создать тип в типе?...
|
Ответ: Динамический массив - способы реализации!
type a
field x end type type b field internal.a end type |
Ответ: Динамический массив - способы реализации!
Мдеее... А никто не может хотя бы словестно описать, как на блитце замутить такую вещь: при нажатии на ентер создаётся некоторое количество кубиков, расположенных по клеткам на поле Rand(1,100)xRand(1,100) - то есть всего за одно нажатие создаётся от 1 до 10000 кубиков. Причём этими кубиками можно манипулировать позже - то есть указатели на них сохраняются!!! И ещё, у каждого кубика есть по три свойства, определяющих например его цвет, которые можно считать и изменить отдельно(это соотвектсвенно свойсва r g b).
Вот... сложно! Помогите пожалуйста! :) Хотя все было бы аццко просто, если бы не это ограничение на создание многомерных массивв в типе!!! Вот как бы выглядел этот код без этого обидного недостатка блица: Код:
Type A sq[1,1,1] - это сам ентити куба sq[1,1,2] - r sq[1,1,2] - g sq[1,1,2] - b |
Ответ: Динамический массив - способы реализации!
Код:
Type A |
Ответ: Динамический массив - способы реализации!
Любой n-мерный массив можно спроецировать на одномерный. Если конечно его размеры известны.
АВТОМАТ +1, тока не 100, а 10 000 |
Ответ: Динамический массив - способы реализации!
Я с проекциями массивов не разобрался, (jimon говорил про них)...
Кстати, что только массивами здесь выкрутиться можно??? А нельзя никак использовать типы в типах или массив типа? Мне кажется что раюотать с проекциями массивов жутко трудно и неудобно :((( даже если научиться. Зы: АВТОМАТ, я не понял как это с цветом???.. Как объявлять такую перемнную, присваивать ей значение и потом красить цветом из этой переменной объект??? У меня выдает ошибку :( А вообще я же сказал, что цвет - это только пример, мне нужно просто помимо самого ентити 3 свойства...Пускай это будет posX, posY, posZ :) |
Часовой пояс GMT +4, время: 12:19. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot