forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Динамический массив - способы реализации! (http://forum.boolean.name/showthread.php?t=7902)

ABTOMAT 07.03.2009 19:50

Ответ: Динамический массив - способы реализации!
 
Ну тогда три массива в типе :(

Делать массив из типов тоже можно, надо указывать в качестве типа массива свой тип, например
Cubes.A(100)
Где A - твой тип

А цвет - там хытренько
Код:

Function ARGB(A#,R,G,B)
        Return (Int(A*255) Shl 24) Or (R Shl 16)  Or (G Shl 8)  Or B       
End Function

Возвращает 1 инт
Как прочитать из этого цвета обратно думаю догадаешься ;)

HolyDel 07.03.2009 20:05

Ответ: Динамический массив - способы реализации!
 
Код:

Type A
Field Cubes[10000]
Field Colors[10000]
End Type

100 * 100 = 10000

пишеш простую функцию - типа
Код:

function index(int a, int b)
retrun 100*a + b;
end function

и дальше тупая, как тибетская овца, операция:
Код:

some.A = new A
some\Cubes[index(10,20)] = бла_бла_бла


ABTOMAT 07.03.2009 20:22

Ответ: Динамический массив - способы реализации!
 
В попу лишнее умножение и вызов функции

HolyDel 07.03.2009 20:39

Ответ: Динамический массив - способы реализации!
 
умножение и сложение - это минимум. чтобы получить 1д индекс из 2д.
вызов функции - для удобства. ну нет в блице макросов и инлайн функций.

как ты предлагаеш еще решить эту задачу?

ABTOMAT 07.03.2009 21:04

Ответ: Динамический массив - способы реализации!
 
Я уже предложил выше. Это намного разумнее. Во-первых, потому что всякой хрени вроде доп функций не надо, а во-вторых вот поменяешь размер массива - и функцию переписывать придётся. Или использовать Глобалы. Или константы, но тогда функция для каждого случая своя, что тоже ФПС не увеличит.

ELIAS 07.03.2009 21:55

Ответ: Динамический массив - способы реализации!
 
Спасибо, HolyDel, твою идею я понял, может воспользуюсь ею:) Но, там у тебя функция построена так что заранее сказано что типа квадрат 100х100, у меня будет не обязательно квадраты и не обязательно будет 100...
АВТОМАТ,(пост 16) я не понял если мы пишем так:
dim Cubes.A(100)
То какой смысл вообще использовать типы, обычный массив можно сдлелать n-мерным. Или я не понял твою идею...?.%%%

Блин! Ничего себе! Вот не поодумал бы что так придётся извращаться из-за казалось бы не сложной для понимания вещи... Неужели не существует ещё более лаконичного и понятного для восприятия способа?..

ABTOMAT 07.03.2009 22:21

Ответ: Динамический массив - способы реализации!
 
Наверноя я просто не понял что ты хочешь - вот и предложил не то...

Можно вообще всё сделать на массивах без типов (так покойный WarTech был сделан)


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot