Динамический список данных

Pixilang по русски
Post Reply
VladTheCat
Posts: 10
Joined: Thu Oct 16, 2014 12:29 am

Динамический список данных

Post by VladTheCat » Sun Oct 19, 2014 5:08 pm

Привет всем. Возникла проблема с созданием "экземпляров" какого-либо объекта. Система примерно такая, что в двумерном массиве первый индекс означает номер объекта, а второй - его параметр. (Objects[4, OBJ_X] = 100; например). Удалить этот экземпляр не удастся. Даже если всё заполнить нулями, он будет занимать место в памяти. Возможно ли в Pixilang каким-либо образом создать динамический список, чтобы в нем хранились массивы параметров для экземпляров и при их удалении все последующие элементы смещались, тем самым заполняли "пробелы" в списке?

Или же есть возможность создать другую систему экземпляров? Если так, то был бы рад узнать, какая именно.

User avatar
NightRadio
Site Admin
Posts: 3042
Joined: Fri Jan 23, 2004 12:28 am
Location: Ekaterinburg. Russia
Contact:

Re: Динамический список данных

Post by NightRadio » Sun Oct 19, 2014 7:17 pm

Привет!
В данный момент функций для работ со списками нет. Но их очень легко написать самому. Возможно, в новых версиях языка будут какие-то встроенные

VladTheCat
Posts: 10
Joined: Thu Oct 16, 2014 12:29 am

Re: Динамический список данных

Post by VladTheCat » Sun Oct 19, 2014 7:22 pm

Можно по подробнее? Нашел несколько реализаций на C, но не особо представляю, как такое можно сделать именно в Pixilang.

User avatar
NightRadio
Site Admin
Posts: 3042
Joined: Fri Jan 23, 2004 12:28 am
Location: Ekaterinburg. Russia
Contact:

Re: Динамический список данных

Post by NightRadio » Sun Oct 19, 2014 10:25 pm

В вашем случае, кстати, логичнее было бы пустое место заполнять -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 )
}

VladTheCat
Posts: 10
Joined: Thu Oct 16, 2014 12:29 am

Re: Динамический список данных

Post by VladTheCat » Mon Oct 20, 2014 12:01 am

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

Post Reply