Форматирование и оформление вывода
Обычно INSTEAD сам занимается форматированием и оформлением вывода. Например, отделяет статическую сцену от динамической. Выделяет курсивом действия игрока. Переводит фокус на изменение в тексте и т.д. Модули вроде "fmt" улучшают качество вывода игры без дополнительных усилий со стороны автора.
Например:
require 'fmt'
fmt.para = true -- включить отступы параграфовИ ваша игра будет выглядеть гораздо лучше. Если вам нужна какая-то автоматическая обработка выводимого текста, вы можете включить модуль "fmt" и определить функцию 'fmt.filter'. Например:
require "fmt"
fmt.filter = function(s, state)
-- s -- вывод
-- state -- true, если это такт игры (вывод сцены)
if state then
return 'Эта строка будет добавлена к началу вывода\n'..s;
end
return s
endМногие хорошие игры на INSTEAD никак не занимаются своим оформлением, кроме разбиения текста 'dsc' на параграфы с помощью символов '^^', поэтому подумайте, а так ли вам хочется заниматься оформлением своей игры вручную?
Тем не менее, иногда это всё-таки необходимо.
Внимание! По умолчанию, все конечные и начальные переводы строк, пробелы и символы табуляции вырезаются из вывода обработчиков. Так как обычно они не имеют смысла и даже вредны. В редких случаях, автору может понадобиться более полный контроль над выводом, тогда он может задать std.strip_call как false в init() или start(), например:
std.strip_call = false
obj {
dsc = [[Тут лежит {яблоко}.^^^^]] -- теперь переводы строк
-- не будут вырезаны, хотя это странное желание
}Но обычно такое ручное форматирование свидетельствует о плохом стиле. Для оформления сцены лучше использовать decor и/или подстановки $.