GrAndrey написал:
Вот что я надумал:
- extendr.t нужно прочесать и даптировать стоящее в основную библиотеку
- это, а также любые другие небольшие расширения вносить как модификации в новом extendr.t
При этом код должен сопровождаться подробным комментарием для чего, он и как используется
Если бы все модификации можно было бы сделать, используя modify и replace - я бы и не возражал. Но все не так просто. Бывает так, что код просто неудачно построен. Наверное, что касается takedesc и dropdesc, их еще можно внести как дополнение (хоть гимору и больше), но что-то - явно нельзя...
Неактивен
fireton написал:
Но все не так просто. Бывает так, что код просто неудачно построен.
...
[Что-то] еще можно внести как дополнение, но что-то - явно нельзя...
В таких случаях в необходимый код вставляется вызов пустой функции, которую можно переопределить в модуле.
Например, так можно вставить дополнительную обработку в предпарсере.
Похожим образом я поступил с проверкой орфографии. Основной модуль запускается без неё, но простое включение сразу её активирует без изменения любых стандартных функций (типа преинита, коминита, интродьюса и т.п.), только специальной функции additionalPreparsing, по умолчанию пустой.
Неактивен
Ура, ура! Вышел юбилейный, 25-ый релиз библиотек! Масса изменений и усовершенствований, среди которых генератор, встроенный в систему. Качаем! http://rtads.org/libr25.rar
В скором времени подготовлю обновленную версию обучалки про волка, козу и капусту.
Просьба жестоко протестировать!
Обратите внимание:
gdesc стал просто desc
в библиотеки включен следующий код:
modify room dispBeginSdesc = "<b>" dispEndSdesc = "</b>" ;
т.е. все название комнат выделены жирным. Нужно удалить старые теги
Неактивен
Есть комментарии. С новым генератором у меня проблемы при перечислении объектов в комнате - выдает список запятых.
Неактивен
Gesperid написал:
О великий и могучий, русский язык! О великие и могучие, регулярные выражения!
GrAndrey, при всем уважении, не думаю, что такой подход может упростить разработку.
Gesperid, не ты ли автор?
башорг написал:
Некоторым программистам, когда они сталкиваются с какой-то проблемой, приходит в голову такая мысль
— О, я знаю! Это можно сделать с помощью регулярных выражений!
Это означает, что у этого програмиста теперь ДВЕ проблемы.
Неактивен
Это стало программистским фольклором задолго до появления на баше.
Если интересно, вот что по поводу этой цитаты думает Jeffrey Friedl (автор знаменитой книги по регулярным выражениям) :
http://regex.info/blog/2006-09-15/247
Неактивен
Спасибо, очень интересно. Но при всей справедливости этой шутки, в нашем случае регекспы оказались очень эффективным и наглядным средством реализации генератора. В самой первой версии все было через ветвистые ifы, что несомненно гораздо хуже.
Неактивен
Обновил версию в гугловском репе.
П.С. Не понял, как там выложить файл для всеобщей скачки.
Неактивен
Не совсем подходящий момент, но вот текущая версия библиотек. Генератор существенно доработан благодаря самоотверженной обкатке его участником конкурса.
Доработки с момента 25 релиза:
- в advr.t добавлена функция opro, которая подставляет "об"
или "про" в зависимости от слова, с которым предлог должен
быть согласован
- исправлен механизм отдачи приказов актерам фразами
"попросить таню взять мячик", "приказать Рексу укусить Боба"
Обновременно исправлен глагол "спросить об"
- генератор доработан для определения существительных, прилагательных
и предлогов в коротких описаниях (desc). Данные флагов записывются в
список info_list. Например, для фразы "ржавый/м ключ/м от
сундука/-" он будет выглядеть как ['мп' 'мс' '+' 'п-'].
- генератор формирует местный падеж. В базе - 49 слов (+несколько
упомняуты в комментариях)
- Доработки правил. Главная - окончания -ок. Осталось небольшое
количество исключений.
- Генератор оптиимзирован. Флаги переводятся в двоичный формат,
что существенно ускоряет обработку. Для этого введены функции binarize и
debinarize.
Неактивен
Игра "Башня-между-мирами" после того как напишешь "заново", иногда теряет объекты и не отрабатывает элементарные команды, которые понимала минуту назад. Автор в недоумении...
Неактивен
Итак: после перезагрузки (reset) текущей игры не сохраняются все сгенерированные лексемы. При этом есть сгенерированные короткие описания.
Проблема есть только в игре откомпилированной для релиза.
решение: пока нет и не ясно как исправлять. Видимо, нужно обращаться к Майклу Робертсу.
Как временная мера - запретить перезагрузку или по этой команде загружать начальное состояние (это требует создания файла сохранения в папке с игрой в момент запуска и очистит экран при запуске).
Неактивен
Как вариант - можно выкладывать игру откомпилированную не для релиза - там все работает. Только в начале приходится ждать семь секунд, пока сгенерируются лексемы. Спасибо за пояснение!
Неактивен
Вообще ситуация очень странная - остаются свойства описаний, которые в реалтайме никак генерироваться не могут, но исчезают лексемы. Даже если при перезапуске программа уничтожает все динамически созданные лексемы, ещё один проход генератора (в отладочной версии он происходит) должен вернуть их на место.
Баг только в версии для релиза и потому не могу просмотреть отладчиком. Буду просматривать с помощью отладочных сообщений, решение точно найдется.
Неактивен
Толком так и не разобрался в проблеме, но сделал быстрый хак:
replace initRestart: function(parm) { global.restarting := true; #ifndef __DEBUG "\n\tПожалуйста, подождите, идет генерация падежей.\n"; generator.start; #endif }
Неактивен