Список форумов Русский TADS Русский TADS
Русский TADS. Разработка текстовых игр на русском языке. Интерактивная литература.
Второй форум находится здесь.
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Двумерные массивы

 
Начать новую тему   Ответить на тему    Список форумов Русский TADS -> Русифицированный ТАДС
Предыдущая тема :: Следующая тема  
Автор Сообщение
Ulla



Зарегистрирован: 04.09.2003
Сообщения: 4
Откуда: Ukraine, Kiev

СообщениеДобавлено: Чт Сен 04, 2003 2:29 pm    Заголовок сообщения: Двумерные массивы Ответить с цитатой

Прошу подсказать, плиз. Недавно, не вспомню где, видел инфу, в которой кроме всего прочего упоминались двумерные массивы (не обьекты) в ТАДС.
Т.е. что-то вида:

stuff.ary[2][2] := some_thing;

Если кому известно о Subj, подскажите, плиз.
Спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GrAnd
Site Admin


Зарегистрирован: 04.02.2003
Сообщения: 299
Откуда: Россия, Москва

СообщениеДобавлено: Чт Сен 04, 2003 4:41 pm    Заголовок сообщения: Ответить с цитатой

Странно, я не нашёл ничего подобного в своих мануалах
Вот что откопал в архиве. Я думаю, двумерный массив можно сделать и самому, лишь с другим синтаксисом, что, вероятно, тут и сделано.
http://www.ifarchive.org/if-rchive/programming/tads2/examples/d2array.t
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
GrAnd
Site Admin


Зарегистрирован: 04.02.2003
Сообщения: 299
Откуда: Россия, Москва

СообщениеДобавлено: Чт Сен 04, 2003 5:13 pm    Заголовок сообщения: Ответить с цитатой

Посмотрел то, на что ссылку дал. Почти такое я сам использовал в эксперименте с рогуликом. Более серьёзно было бы использовать array состоящий из array'ев(тадс позволяет), чтобы добиться динамических массивов. Это чуть сложнее и медленнее. Если нужно, напишу код.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Ulla



Зарегистрирован: 04.09.2003
Сообщения: 4
Откуда: Ukraine, Kiev

СообщениеДобавлено: Пт Сен 05, 2003 2:43 pm    Заголовок сообщения: Ответить с цитатой

Спасибо, со статикой работает.
С динамическими масивами туговато:

createList: function(len, fill)
{
local i;
local ary := [];
for (i:=1; i<=len; ++i)
ary := ary + nil;
}

...
self.dimension := createList(10, createList(10,someobj));
...

На С++ аналогичная прога (того же принципа) работает без проблем. С ТАДСом это не проходит?
Ошибка времени выполнения (List value required), причем дебаггер показывает, что массив создан...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Ulla



Зарегистрирован: 04.09.2003
Сообщения: 4
Откуда: Ukraine, Kiev

СообщениеДобавлено: Пт Сен 05, 2003 3:42 pm    Заголовок сообщения: Ответить с цитатой

В d2array.t двумерный массив не реализуется - это всего лишь обьект, содержащий список, с методами доступа к нему как к двумерному.
Т.е. для использования его в качестве поля другого обьекта необходимо создать экземпляр класса. И так для каждого обьекта Sad

Приведенный ранее пример по сути должен работать, но...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
GrAnd
Site Admin


Зарегистрирован: 04.02.2003
Сообщения: 299
Откуда: Россия, Москва

СообщениеДобавлено: Пт Сен 05, 2003 3:56 pm    Заголовок сообщения: Ответить с цитатой

Да, извиняюсь. Похоже, элементами массива могут быть лишь объекты (или строки и числа). Т.е. нужно создавать объект со массивом, элементы которого - объекты с массивами. И так до нужной глубины.
При добавлении элемента, нужно создавать экземпляр, при удалении - соответственно убирать, чтобы не засорять память. Громоздко получается, и не очень быстро. Уж лучше статикой.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Русский TADS -> Русифицированный ТАДС Часовой пояс: GMT + 4
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group