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
Да, я уже подумал о заполнении минусами. Спасибо, подтвердили мои мысли :) Тем более, что больше сотни экземпляров мне и не нужно
Спасибо большое :good: