ТОМ2: функции: различия между версиями
Содержимое удалено Содержимое добавлено
ASBer (обсуждение | вклад) |
ASBer (обсуждение | вклад) |
||
| (не показано 16 промежуточных версий этого же участника) | |||
Строка 60:
# Парсинг
# Выполнение строки
Ели строка однозначно разобрана, она выполняется. Выполняется строка только один раз.
Строка 171:
секция parsing может быть опущена, если дополнительной проверки синтаксиса не требуется.
=====Проверка позиций аргументов=====
описать!
====Секция execute (выполнение) в выражениях====
Секция вычисляет значение выражения.
В выражениях эта cекция исполняется на этапе парсинга, из чего следует:
#выполнение этой секции может происходить многократно;
#результат выражения может быть вариантным;
#в этой секции нельзя менять состояния объектов и переменных (за исключением переменных самой функции);
#результат выражения влияет на дальнейший парсинг команды.
Пример:
выражение (среднее, число А, число Б)
{
==выполнение==
(А + Б)/2
}
В данном примере функция вычисляет среднее значение двух чисел.
Обращаться к функции из кода можно следующим образом.
Пример:
var X = среднее 4 5;
var A = 2
var Б = 7
%{среднее А Б} //переменные А и Б должны содержать числа
===Секции в фактах===
Строка 180 ⟶ 205 :
====Секция check (проверка) в фактах====
Эта секция проверяет факт на его соответствие действительности и возвращает логическое '''да''' или '''нет'''.
Секция исполняется на этапе парсинга, из чего следует:
#выполнение этой секции может происходить многократно;
#в этой секции нельзя менять состояния объектов и переменных (за исключением переменных самой функции);
Именно эта секция позволяет использовать факты в условных конструкциях и вопросах.
Пример:
факт (предмет А, весит, число Б, кг)
{
==проверка==
А.вес = Б?
==выполнение==
... код выполнения ...
}
Пример условия:
если камень весит 100 кг то ...
Пример вопроса:
камень весит 100 кг?
====Секция execute (выполнение) в фактах====
В факте секция execute (выполнение) выполняется после однозначного разбора строки кода или команды.
Эта секция должна сделать так, чтобы факт стал истинным.
Пример:
факт (предмет А, весит, число Б, кг)
{
==проверка==
А.вес = Б?
==выполнение==
А.вес = Б
}
По своей сути факт – это инструмент создателя игры, позволяющий перекроить игровой мир. То, что указывается в факте, становится истинным.
Пример:
камень весит 100 кг. //да будет так
В связи с этим, секция execute (выполнение) для фактов работает только в режиме 'вне игры' (см. раздел Режимы работы ТОМ), иначе игрок мог бы очень сильно изменить игровой мир.
===Секции в действиях===
Строка 188 ⟶ 255 :
====Секция check (проверка) в действиях====
В этой секции мы должны проверить физическую возможность выполнения команды. Есть ли у нас все предметы, названные в команде, соблюдены ли условия, необходимые для начала выполнения действия и т.п.
Секция исполняется на этапе парсинга, из чего следует:
#выполнение этой секции может происходить многократно;
#в этой секции нельзя менять состояния объектов и переменных (за исключением переменных самой функции);
Если действие невозможно, секция должна вернуть ошибку.
====Секция execute (выполнение) в действиях====
В этой секции описывается выполнение действия, соответствующего команде. Здесь можно изменить состояние игры, вывести текст с описанием произошедшего события и т.д.
==Сообщения об ошибках выполнения функций==
описать!
[[Категория:Документация ТОМ2]]
| |||