Тема закрыта
Язык Разметки Интерактивной Литературы (ЯРИЛ) версии 2.0 проходит стадию формирования и развития. На данный момент существует некий вариант #001 как первая предварительная реализация языка. Приведу пример:
------------------------------------------------------------------//Пример №1 редакция 2
ярил 2.0
//И. Р. Д. В. Т. П.
//ж-женский род, с-средний, <пусто>-мужской
локация Камера "Одиночная камера" ("одиночн"+"ая","ой",р,"ую",р,р) ("камер"+"а","ы","е","у","ой",д) ж:
"Мокрая, холодная камера. Стены в полумраке кажутся серыми. В одной из них виднеется тяжёлая металлическая дверь."
/локация
//*-множественное число
предмет Стены "Стены" ("") ("стен"+"ы",,"е","у","ой",д) * - Камера:
"Серые сырые стены. Полуотваливающаяся штукатурка имеет мерзкий вид. На одной из стен проступает какая-то надпись."
(неподвижен)
/предмет
предмет Надпись "Надпись на стене" ("") ("надпис"+"ь",и,"и",и,"ью",д) ж - Камера:
"С трудом можно прочесть: 'Проба пера... Привет от Соника! '"
(неподвижен)
(читаем)
/предмет
локация Выход "Выход из тюрьмы" ("") ("выход"+,"а","у",,"ом","е"):
"Узкий серый коридор упирается в каменную стену. Массивные металлические ворота приоткрыты..."
/локация
//сказать_з - сказать_заглавная
функция Взять
если неподвижен тогда
сказать_з ип+" неподвиж"+(выбор пол=м:"ен",ж:"на",с:"но",*:"ны")
иначе
переместить сам в инв
сказать_з "Вы взяли "+вп
/если
/функция
функция Читать
если читаем тогда
Описать
иначе
сказать_з ип+" нечитаем"+(выбор пол=ж:"а",с:"о",*:"ы")
/если
/функция
функция Описать
сказать " "+ип
сказать " "+Описание
/функция
функция ПоказатьИнвентарь
сказать "У вас с собой:"
если инв.колво=0 тогда
сказать " (пусто)"
иначе
для а=1 до колво(инв)
сказать " "+инв(а).ип
/для
/если
/функция
//и,р,д,в,т,п - предметы в падежах; "" - неизменяемая часть
команда "взять", "возьми", "забрать", "забери"
* в: Взять
/команда
команда "читать", "читай", "прочесть", "прочти"
* в: Читать
/команда
команда "осмотреться", "осмотрись", "оглядеться", "оглядись"
Описать(ТекЛок)
/команда
команда "осмотреть", "осмотри", "исследовать", "исследуй"
* в: Описать
/команда
команда "осм"
* в: Описать
Описать(ТекЛок)
/команда
команда "инвентарь", "инвентарий", "инв", "и"
ПоказатьИнвентарь
/команда
функция Среда.Нераспознаваема
сказать "Простите, я не понимаю эту фразу."
/функция
функция Среда.Предначало
сказать "Это тестовая история на 'ЯРИЛ 2.0. Релиз #001.'"
/функция
------------------------------------------------------------------
Мне интересно, насколько данный пример понятен IF-писателям - непрограммистам?
Неактивен
Тот-же Inform, только синтаксис другой...
Я, например, разрабатываю нечто похожее, но не надеюсь на понимание непрограммистами (это кусок из 'кода' парсера):
; Команда "Осмотреться"
((Осмотреться)
(Находится Игрок _L)
(Имя _L _Name)(WRITE *_Name*)
(ВывестиОписание _L)
(ДляКаждогоОбъекта _X (УпомянутьЕслиВиден _X)))
((УпомянутьЕслиВиден _X)(Виден _X)(Упомянуть _X))
((Виден _X)(ИмеетСвойство скрытый _X)(CUT)(FAIL))
((Виден _X)(ИмеетСвойство декорация _X)(CUT)(FAIL))
((Виден _X)(Находится _X _A)(Находится Игрок _L)
(РавенИлиПринадлежит _L _A))
((Упомянуть _X)(Имя _X _Y)("Здесь есть " _Y "."))
((Упомянуть _ )("Здесь есть предмет без имени!"))
Неактивен
Да, я и делаю его как некий русский вариант Inform. Вернее, я его взял за основу. Просто он мне кажется почти идеальной системой.
Видимо, твой язык LISP-подобный? Если честно, тяжеловато для понимания, но, думаю, с документацией разобраться можно. Или нет?
Неактивен
Вообще-то мой язык Пролого-подобный но невелика разница
Собственно моя проблема в том, что это мое творение и есть интерпретатор пролога, а не специнструмент создания IF. Тяга к универсализации, блин...
Я стараюсь все (парсер, генератор падежей и т п) создавать на прологе, и минимум функций выносить как встроенные. Проблема со словами - хорошая игра должна понимать 2000-4000 слов, тут нужен базовый словарь и генератор, иначе задолбаешься создавать словарь к каждой игре
Да, чего хочу сказать - нельзя рассчитывать на ПОНИМАНИЕ ЯЗЫКА ПРОГРАММИРОВАНИЯ НЕПРОГРАММИСТОМ, просто по определению.
можно только делать его проще в освоении. так что на это и делай упор. Четкий синтаксис и хорошая документация @:<)
Неактивен
FighteR написал:
Я стараюсь все (парсер, генератор падежей и т п) создавать на прологе, и минимум функций выносить как встроенные.
Тогда выйдет, что каждому IF-писателю придётся эти функции писать самому?
FighteR написал:
Проблема со словами - хорошая игра должна понимать 2000-4000 слов, тут нужен базовый словарь и генератор, иначе задолбаешься создавать словарь к каждой игре.
Базовый - это, конечно, удобно, но тогда реакцию на них тоже придётся писать автору. Хорошо было бы, чтобы автор смог отключать какие-то словари, или подключать новые.
FighteR написал:
Да, чего хочу сказать - нельзя рассчитывать на ПОНИМАНИЕ ЯЗЫКА ПРОГРАММИРОВАНИЯ НЕПРОГРАММИСТОМ, просто по определению.
можно только делать его проще в освоении. так что на это и делай упор. Четкий синтаксис и хорошая документация @:<)
Да, документация - пол дела, а вот хороший синтаксис... :-/ Как бы его сделать таким?
Неактивен
>Тогда выйдет, что каждому IF-писателю придётся эти
>функции писать самому?
Нет, просто продвинутый писатель сможет их изменить по своему усмотрению. Я не хочу 'зашивать' парсер в коды. Кроме того, сила моего языка (версия пролога) прежде всего в парсинге. возможно, я даже сделаю dll-вариант, чтоб можно было вставить парсер в любую платформу. Потому как в ООП мой язык не очень того...
>Базовый - это, конечно, удобно, но тогда реакцию на них
>тоже придётся писать автору. Хорошо было бы, чтобы
>автор смог отключать какие-то словари, или подключать
>новые.
Я имею в виду словарь падежей и т.п. В идеале, автор пишет в программе названия предметов, а компилятор сам создает словарь игры, подгужая падежные формы из базового словаря. про незнакомые слова спрашивает в диалоговом режиме (пытается сгенерировать падежные формы, с возможностью ручной корректировки), и с разрешения пользователя вносит их в базовый словарь. Т. о. базовый словарь - это не 'словарь-минимум', а 'словарь-максимум' , как-бы библиотека, откуда берутся только необходимые куски
Неактивен
FighteR написал:
>Тогда выйдет, что каждому IF-писателю придётся эти
>функции писать самому?
Нет, просто продвинутый писатель сможет их изменить по своему усмотрению. Я не хочу 'зашивать' парсер в коды. Кроме того, сила моего языка (версия пролога) прежде всего в парсинге. возможно, я даже сделаю dll-вариант, чтоб можно было вставить парсер в любую платформу. Потому как в ООП мой язык не очень того...
О! Это было бы хорошо!
FighteR написал:
>Базовый - это, конечно, удобно, но тогда реакцию на них
>тоже придётся писать автору. Хорошо было бы, чтобы
>автор смог отключать какие-то словари, или подключать
>новые.
Я имею в виду словарь падежей и т.п. В идеале, автор пишет в программе названия предметов, а компилятор сам создает словарь игры, подгужая падежные формы из базового словаря. про незнакомые слова спрашивает в диалоговом режиме (пытается сгенерировать падежные формы, с возможностью ручной корректировки), и с разрешения пользователя вносит их в базовый словарь. Т. о. базовый словарь - это не 'словарь-минимум', а 'словарь-максимум' , как-бы библиотека, откуда берутся только необходимые куски
Т.е. он будет идти с проигрывателем? Или же с игрой?
Неактивен
Последние новости:
Пока компилятор отложен. Думаю написать маленький графический редактор, а там посмотрим. Но если быть точным, то сейчас пишу "Парсер фраз" - программу-парсер, основанную на методах языка ЯРИЛ (бОльшая часть взята с Inform).
Неактивен
RealSonic написал:
Но если быть точным, то сейчас пишу "Парсер фраз" - программу-парсер, основанную на методах языка ЯРИЛ (бОльшая часть взята с Inform).
Наконец-то я дописал "Парсер фраз"! Анализирует введённую фразу методом шаблонов, смотрите: http://toysoft.narod.ru/phpars_0.1ap2.zip
Неактивен
Архив битый? Тогда тут: http://toysoft.narod.ru/phpars_0.1ap2.rar (245кб, RAR 3.0)
Неактивен
А если файла по этому адресу нет, то что делать?..
Ты можешь прислать файл почтой (мне или на ТяпЛяп), а я выложу его на нашем сайте?
Неактивен
Тема закрыта