Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #1
30.12.2010 21:13

Olegus t.Gl.
Участник (+1053, -249)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2879
Вебсайт

Модуль для работы с таблицами данных

Пару-тройку дней назад присутствовал при дискуссии goraph и Ajenta насчёт структур данных QSP. Под впечатлением от слов goraph, что ограничения работы с массивами, мешают написать настоящее текстовое RPG, набросал модуль работы с таблицами.

Данный модуль предоставляет следующие возможности:

  • Создавать таблицу с произвольным числом колонок.
  • Добавлять, находить и удалять строки в таблице.
  • Получать и устанавливать значения произвольных ячеек в таблице.
  • Сортировать строки таблицы как по одной, так и по нескольким колонкам в порядке возрастания и убывания.
  • Для доступа к отдельным строкам (чтение или запись значений ячеек) использовать не только номера строк, но и уникальные значения из какой-либо колонки (работа с индексом).
  • Выгружать строку таблицы в ассоциативный массив.
  • Перебирать таблицу в любом направлении: от первой строки до последней и наоборот.
  • Выбирать, копировать и удалять строки таблицы (как все, так и по заданному фильтру).
  • Получать число строк в таблице (как всех, так и по заданному фильтру).

Текущая версия: 1.3.1 (скачать)
Документация on-line: https://ifiction.ru/h/otg_lib_tables_help.html

Пример работы с таблицей:

Код:

GS 'Таб.Создать','Персонажи','Имя, Здоровье, Раса'

GS 'Таб.СоздатьИндекс','Персонажи','Имя'

GS 'Таб.ДобавитьСтроку','Персонажи','Крокодил',90,'Варвар'
GS 'Таб.ДобавитьСтроку','Персонажи','Арабелла',77,'Амазонка'
GS 'Таб.ДобавитьСтроку','Персонажи','Адельм',60,'Монах'
GS 'Таб.ДобавитьСтроку','Персонажи','Каннибал',75,'Варвар'
GS 'Таб.ДобавитьСтроку','Персонажи','Марина',77,'Амазонка'

GS 'Таб.Сортировать', 'Персонажи', 'Раса,Здоровье-'

GS 'Таб.Установить','Персонажи','Адельм','Здоровье',25

GS 'Таб.Выбрать','Персонажи','Раса','=','Варвар'
:перебор_строк_таблицы
if func('Таб.Следующая','Персонажи','Герой'):
    *NL func('Таб.Значение','Персонажи','Номер строки')+'. '+$Герой['Имя']+' ('+Герой['Здоровье']+')'
    JUMP 'перебор_строк_таблицы'
end

GS 'Таб.Удалить','Персонажи'

Прикрепленные файлы:
otg_lib_tables_v1_2.zip, Размер: 24,312 байт, Скачано: 873
otg_lib_tables_v1_3.zip, Размер: 25,449 байт, Скачано: 567
otg_lib_tables_v1_3_1.zip, Размер: 25,532 байт, Скачано: 1,113

Неактивен

0    0    #2
29.10.2014 19:28

testament
Участник
Зарегистрирован: 29.10.2014
Сообщений: 1

Re: Модуль для работы с таблицами данных

Не удается добавить  строку больше 8-и элементов

gs 'Table.NewLine', 'test', 1, 2, 3, 4, 5, 6, 7, 8 - все норм
Добавляешь 9-й элемент - Неверное число аргументов оператора / функции!

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru