- Вывод текста
- Программирование
- Оформление
- Расширенные возможности
- Нюансы написания игр под разные плееры
-
- x AeroQSP
- Утилиты и средства разработки
Это старая версия документа.
В QSP есть два типа данных: числовой 1) и строковый.
Строковый тип данных отличается тем, что в начале названия строковой переменной или массива должен быть символ '$'.
Рекомендуется к названиям всех функций, возвращающих строковые значения, тоже приписывать символ '$' для улучшения читаемости кода.
Если с числовыми константами в QSP всё просто (просто записывается числом, например, 4593), то со строковыми есть несколько нюансов:
*PL 'Byte Soft''s "QSP"' *PL "Byte Soft's ""QSP""" !Byte Soft's "QSP"
'Данный текст будет расположен на нескольких строках' $a='И этот текст также' a=2 & act 'Многострочное название':gt 'next'
$res = ('x=' & x & ' y=' & y) &! Результат 'x=5 y=6' $res = 'x=' & x &!'Результат 'x=', а '5' выведется в основное окно описания.'
$res = 'x=' + x + ' y=' + y &! Результат 'x=5 y=6'
x = 1 $res = '1' + x !Результат '2' вместо '11'
В строковые константы, в базовые описания локаций и названия базовых действий существует возможность вставлять значения выражений. Такие "подвыражения" должны находиться между двойных угловых скобок: "<<" и ">>", до и после которых может идти любой текст, включая подобные "подвыражения".
pl 'i='+str(i) !эквивалентно pl 'i=<<i>>' число_гоблинов=5 'Тебя окружили <<число_гоблинов>> гоблинов!' pl 'Вас зовут <<$PlayerName>>, вы находитесь в <<$curloc>>.' !Вложенные подвыражения: pl val('<<val("<<i>>")>><<j>>') pl val('<<str(val("<<i>>"))>>') !'При использовании вложенных подвыражений необходимо использовать вложенные строковые константы'
Если нужно вывести последовательность "<<" на экран, можно использовать два способа:
$text = '<'+'<var>>' 'string <'+'<var>>'
DISABLESUBEX=1 $text = '<<var>>' 'string <<var>>' DISABLESUBEX=0
$MID('abcd', 1, 2) &! 'ab' $MID('abcd', 2, 3) &! 'bcd' $MID('abcd', 2) &! 'bcd'
$UCASE('TexT#') &! 'TEXT#'
$LCASE('TExT#') &! 'text#'
$TRIM(' TRIM TEST ') &! 'TRIM TEST'
$REPLACE('test', '12', '4') &! 'test' $REPLACE('test', 'e', 's') &! 'tsst' $REPLACE('test', 't', '34') &! '34es34' $REPLACE('test', 't') &! 'es'
INSTR(1,'ABCDefgh','BC') &! 2 INSTR(1,'ABCDefgh','Be') &! 0 INSTR('abcdef','abc') &! 1
Функция полезна при проверке введённой играющим строки на число. Примеры:
ISNUM('9999 ') равно -1
ISNUM(' -888') равно -1
ISNUM('777a6') равно 0
VAL([$выражение]) - переводит строку цифр [$выражение] в соответствующее число. Если [$выражение] равно (пустая строка) или если оно содержит не-цифры, то возвращается 0.
STR([#выражение]) - переводит число (числовое выражение) [#выражение] в соответствующую строку. Например,
PL STR(56)
выведет строку "56".
STRCOMP([$выражение],[$шаблон]) - проводит сравнение строки [$выражение] на соответствие регулярному выражению [$шаблон]. Возвращает -1, если строка соответствует шаблону, иначе 0. Сравни с функцией "STRFIND".
STRFIND([$выражение],[$шаблон],[#номер]) - возвращает подстроку в строке [$выражение], соответствующую группе с номером [#номер] регулярного выражения [$шаблон]. Если подстрока с указанным номером отсутствует, то возвращается пустая строка. Нумерация групп подстрок начинается с 1. Если параметр [#номер] отсутствует или равен 0, то возвращается подстрока, соответствующая всему регулярному выражению [$шаблон]. Примеры:
STRFIND(' идти к пещере', '^(\S+)\s(\S+)\s(\S+)$', 0) =
STRFIND('идти к пещере', '^(\S+)\s(\S+)\s(\S+)$', 1) = 'идти'
STRFIND('идти к пещере', '^(\S+)\s(\S+)\s(\S+)$', 2) = 'к'
STRFIND('идти к пещере', '^(\S+)\s(\S+)\s(\S+)$', 3) = 'пещере'
STRFIND('идти к пещере', '^(\S+)\s(\S+)(\s(\S+))?$', 4) = 'пещере'
STRFIND('искать ключ', '^(\S+)\s(\S+)(\s(\S+))?$', 1) = 'искать'
STRFIND('искать', '^(\S+)\s(\S+)(\s(\S+))?$', 0) =
STRFIND('искать', '^(\S+)\s(\S+)(\s(\S+))?$', 1) =
STRFIND('искать', '^(\S+)(\s(\S+)(\s(\S+))?)?$', 1) = 'искать'
STRFIND('идти к дому', 'к\s(\S+)', 0) = 'к дому'
STRFIND('идти к дому', 'к\s(\S+)') = 'к дому'
STRFIND('идти к дому', 'к\s(\S+)', 1) = 'дому'
STRFIND('идти к своему дому', 'к\s(\S+)', 1) = 'своему'
STRPOS([$выражение],[$шаблон],[#номер]) - возвращает позицию символа, с которого начинается вхождение подстроки в строке [$выражение], соответствующей группе с номером [#номер] регулярного выражения [$шаблон]. Если подстрока с указанным номером отсутствует, то возвращается 0. Нумерация групп подстрок начинается с 1. Если параметр [#номер] отсутствует или равен 0, то возвращается позиция символа, с которого начинается вхождение подстроки, соответствующей всему регулярному выражению [$шаблон].
Примеры:
STRPOS(' идти к пещере', '^(\S+)\s(\S+)\s(\S+)$', 0) = 0
STRPOS('идти к пещере', '^(\S+)\s(\S+)\s(\S+)$', 1) = 1
STRPOS('идти к пещере', '^(\S+)\s(\S+)\s(\S+)$', 2) = 6
STRPOS('идти к пещере', '^(\S+)\s(\S+)\s(\S+)$', 3) = 8
STRPOS('идти к пещере', '^(\S+)\s(\S+)(\s(\S+))?$', 4) = 8
STRPOS('искать ключ', '^(\S+)\s(\S+)(\s(\S+))?$', 1) = 1
STRPOS('искать', '^(\S+)\s(\S+)(\s(\S+))?$', 0) = 0
STRPOS('искать', '^(\S+)\s(\S+)(\s(\S+))?$', 1) = 0
STRPOS('искать', '^(\S+)(\s(\S+)(\s(\S+))?)?$', 1) = 1
STRPOS('идти к дому', 'к\s(\S+)', 0) = 6
STRPOS('идти к дому', 'к\s(\S+)') = 6
STRPOS('идти к дому', 'к\s(\S+)', 1) = 8
STRPOS('идти к своему дому', 'к\s(\S+)', 1) = 8