Открыть главное меню

Flags

Версия от 14:58, 3 марта 2019; Nikita (обсуждение | вклад) (Nikita переименовал страницу Модуль для удобной работы с флагами (RTADS) в Flags)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)


Модуль для удобной работы с флагами TADS.

Flags
Тип Библиотеки TADS
Разработчик(и) Антон Жучков
Языки интерфейса
Операционные системы TADS 2
Написано на TADS 2
Язык разработки
Читаемые форматы файлов
Создаваемые форматы файлов
Дата первого выпуска
Последняя версия
Дата последней версии 12 августа 2008
Состояние
Лицензия Freeware
Сайт

Содержание

Общая информация

Часто бывает необходимым выдать некий текст в зависимости от состояния игры (флага). Иногда удобно сосредоточить все флаги в одном месте. Чаще всего, это делается на объекте global.

Я написал несколько удобных для меня функций, которыми можно легко управлять флагами, выводить текст и начислять очки в зависимости от значения того или иного флага. Конечно, есть и другие способы "помечать" состояния игры, но мне показалось, что эти функции могут быть полезны.

Итак, в первую очередь необходимо скачать сам модуль и вставить его в код игры директивой #include.

Флаги будут храниться в объекте global в виде списка строк flags. Если перед началом игры требуется, чтобы какие-то флаги были установлены по умолчанию, то в описание объекта global нужно вставить их определение:

global: object
...
flags = ['isDrunk' 'isHeadache']
;

Далее, приведу описание функций модуля.

isFlag

Формат: isFlag(flag)

Возвращает значение флага flag. flag - строковое значение (в одинарных кавычках).

setFlag

Формат: setFlag(flag)

Устанавливает флаг flag.

unsetFlag

Формат: unsetFlag(flag)

Сбрасывает флаг flag.

ifFlagSay

Формат: ifFlagSay(flag, message [doUnset, score])

Выводит сообщение message, если флаг flag установлен. При этом, если doUnset = true (по умолчанию nil), то сбрасывает флаг flag. Если параметр score определен, то начисляет количество очков, равное его значению.

ifNotFlagSay

Формат: ifNotFlagSay(flag, message [doSet, score])

Выводит сообщение message, если флаг flag НЕ установлен. При этом, если doSet = true (по умолчанию nil), то устанавливает флаг flag. Если параметр score определен, то начисляет количество очков, равное его значению.

sayOnce

Формат: sayOnce(flag, message [, score])

Полностью аналогична функции ifNotFlagSay с параметром doSet = true. Определена для удобства "единичного" вывода текста. Для той же цели определен символ:

#define _FL __FILE__+cvtstr(__LINE__)

Т.е., если требуется вывести текст один раз за всю игру, то достаточно написать:

sayOnce(_FL, 'Глядя на все это, ты чувствуешь себя как-то неуютно...');

В этом случае, флагом будет служить название файла исходника и номер строки, из которой производился вызов sayOnce. Как видно, символ _FL очень удобен для таких "одноразовых" флагов.