Page 1 of 1
Динамический список данных
Posted: Sun Oct 19, 2014 5:08 pm
by VladTheCat
Привет всем. Возникла проблема с созданием "экземпляров" какого-либо объекта. Система примерно такая, что в двумерном массиве первый индекс означает номер объекта, а второй - его параметр. (Objects[4, OBJ_X] = 100; например). Удалить этот экземпляр не удастся. Даже если всё заполнить нулями, он будет занимать место в памяти. Возможно ли в Pixilang каким-либо образом создать динамический список, чтобы в нем хранились массивы параметров для экземпляров и при их удалении все последующие элементы смещались, тем самым заполняли "пробелы" в списке?
Или же есть возможность создать другую систему экземпляров? Если так, то был бы рад узнать, какая именно.
Re: Динамический список данных
Posted: Sun Oct 19, 2014 7:17 pm
by NightRadio
Привет!
В данный момент функций для работ со списками нет. Но их очень легко написать самому. Возможно, в новых версиях языка будут какие-то встроенные
Re: Динамический список данных
Posted: Sun Oct 19, 2014 7:22 pm
by VladTheCat
Можно по подробнее? Нашел несколько реализаций на C, но не особо представляю, как такое можно сделать именно в Pixilang.
Re: Динамический список данных
Posted: Sun Oct 19, 2014 10:25 pm
by NightRadio
В вашем случае, кстати, логичнее было бы пустое место заполнять -1, а потом перед созданием нового объекта просто искать пустую область, заполненную -1
Но если все-таки нужно удалить, тогда вот, например, код удаления: нужно просто весь кусок данных справа от удаляемого сместить влево.
Code: Select all
fn remove_element( $data, $x )
{
$xsize = get_xsize( $data ) - 1
$ysize = get_ysize( $data )
$i = $x while $i < $xsize
{
$y = 0 while $y < $ysize
{
$data[ $i, $y ] = $data[ $i + 1, $y ]
$y + 1
}
$i + 1
}
resize( $data, $xsize, $ysize )
}
Re: Динамический список данных
Posted: Mon Oct 20, 2014 12:01 am
by VladTheCat
Да, я уже подумал о заполнении минусами. Спасибо, подтвердили мои мысли
Тем более, что больше сотни экземпляров мне и не нужно
Спасибо большое