ТОМ2 - платформа для парсерных игр

Объявление

Платформа ТОМ предназначена для создания текстовых игр на русском языке и имеет развитый парсер, позволяющий взаимодействовать с играми с помощью команд на близком к естественному языке. В данный момент активно разрабатывается версия ТОМ 2.
Последнюю версию платформы можно скачать здесь.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Версия 0.10.0.х

Сообщений 1 страница 17 из 17

1

Это экспериментальная версия.
Совместимости с предыдущими версиями не будет!

Делается на базе версии 0.9.4.7 alpha.
От движка оставлены только рожки да ножки основы: объекты, интерпретатор, меню  - чтобы было на чём эксперементировать.
Убраны: парсер, синонимы, относительные значения свойств, сохранение игр - это всё будет переделываться заново.

Задачи на первое время:
- Полиморфизм для методов и свойств объектов (большая интересная и очень полезная задача).
- Классы для лексем (тоже давно напрашивалось).

2

ASBer написал(а):

Убраны: парсер, синонимы, относительные значения свойств, сохранение игр

Забавно, что даже в таком виде все игры загружаются :D
Правда играть можно только в "Остров". В мышках можно ходить по локациям, а в спелеологисте ни одно действие недоступно.

3

Тип bool будет расширен новыми значениями и дополнен текстовым комментарием.
null как независимый тип исчезнет, и перейдет в булевое ложное значение "пусто".

Любые действия или функции обязательно будут возвращать осмысленные значения.
По умолчанию будут подставляться булевы значения с системными комментариями.

4

Лозунг: "Догнать и перегнать RUBY !" :flag:

ASBer написал(а):

Тип bool будет расширен новыми значениями и дополнен текстовым комментарием.

Как это отразится на логических операциях? if, while...
Для чего нужен текстовый комментарий? Выводить значение в виде строки?
Могу предположить что-то вроде этого:

Код:
var b:bool;
b = true
b.comment = "Зеркало треснуло"
if(b)
  {%b}     // Выводится строка "Зеркало треснуло"

5

ASBer написал(а):

Правда играть можно только в "Остров"

А он полностью работоспособен? Ну то есть глюков не замечено?

6

Apromix написал(а):

А он полностью работоспособен? Ну то есть глюков не замечено?

Глюков не замечено, работоспособен.
Парсерная и менюшная подсистемы между собой никак не связаны, а парсер в Острове не использовался.

7

Alexandr написал(а):

Как это отразится на логических операциях? if, while...

На логических операциях не отразится, все значения будут отнесены к ложным или истинным, булева алгебра остаётся классической.

Alexandr написал(а):

Для чего нужен текстовый комментарий? Выводить значение в виде строки?
Могу предположить что-то вроде этого:

Да, примерно так. Только строка будет: "Да, зеркало треснуло."
Булево значение будет выводиться перед комментарием.
Скоро тех.демо выложу. Вот только примерчик подберу подходящий для мини-демки.

Alexandr написал(а):

Лозунг: "Догнать и перегнать RUBY !"

Из RUBY можно много хорошего позаимствовать ;)

8

Технологическая демка UPD: файл удалён

Новые булевы значения можно увидеть, если в командной строке вводить различные команды языка.
Например:
  unique X
  rnd()
  и т.п.

В архиве есть пример про "заложить за воротник". Понимает только одну команду - "заложить".
При этом хочу заметить что парсер в этой версии полностью отсутствует! Пример работает исключительно на вызове из командной строки функции заложить().

9

UPD:
Тип null пока еще не удалён из системы окончательно, поэтому иногда выскакивает красным - Null

10

ASBer написал(а):

Технологическая демка.

Ссылка не работает.

11

Alexandr написал(а):

Ссылка не работает.

Сорри, поправил.

12

UPD: логические операции и всяческие сравнения в демке работают не корректно!
Сейчас перебиваю код операций под расширенный bool.

13

Обновил технологическую демку  UPD: файл удалён.
Достижений не много, но поиграться можно.
В демо-примере работает только 1 глагол - "заложи", после глагола вводите что хотите, могут получиться забавные варианты.

14

ASBer написал(а):

В демо-примере работает только 1 глагол - "заложи", после глагола вводите что хотите, могут получиться забавные варианты.

Помучил немного. Вот лог:

ты> заложи
что заложить?

ты> заложи вилку
ты не знаешь как закладывать вилку    !

ты> заложи стол
ты не знаешь как закладывать стол    !

ты> заложи водку
куда заложить?

ты> заложи свой
куда заложить?

ты> заложи свой за свою
<font color=gray>Хм[], неоднозначность в слове "свою "</font>
ты> заложи свою
<font color=gray>Хм[], неоднозначность в слове "свою "</font>
ты> заложи рюмку за сво

ты> error!

ты> заложи рюмку за свой
__рука неуверенно потянулась к рюмке и вернулась назад^^^ Нет! воспитание не позволяет пить без салфетки^^^

ты> заложи свой за свой
ты не хочешь закладывать воротник за воротник.

ты> заложи запотевшую за накрахмаленный

ты> заложи запотевшую за накрашмаленную

ты> заложи запотевшую за накрахмаленную
ты не знаешь как закладывать рюмку за салфетка!

ты> заложи за рюмку воротник
куда заложить?

ты> заложи воротник за рюмку
ты не знаешь как закладывать воротник за рюмка!

ты> заложи накрахмаленную за воротник
__ты взял салфетку, неторопясь расправил ее и аккуратно заложил за воротник, провел по ней рукой, еще раз  убедившись, что она на месте.

ты> заложи свою запотевшую рюмку водки за воротник
<font color=gray>Хм[], неоднозначность в слове "свою "</font>
ты> заложи запотевшую рюмку водки за воротник
__ты хорошо выверенным молниеносным движением схватил рюмку, потянулся к ней дрожащими губами, шумно выдохнул и одним махом заложил за воротник!

ты> ну нада-же! Заложил. Грац!
<font color=gray>хм[], не понял^^^.</font>

Кстати, ошибки не записываются в лог. Там постоянна вылетала ошибка

if(Arg2==Arg3){ Arg3 = Arg4
  Arg4 = Arg5
  Arg5 = null
}

object x string!

например, на фразу "заложи за воротник сво".
Не склоняет слова: "рюмку за салфетка", "воротник за рюмка".
Слово "свой" путает. Ясно же указано, что "свою запотевшую рюмку водки".
В общем не плохо, но много вариантов перестановок слов ещё не учтено. ^.^

Отредактировано Alexandr (2011-01-17 16:33:06)

15

Но исходники меня убили. %-) И это только набросок для неполной обработки глагола "заложи".

16

Alexandr написал(а):

Но исходники меня убили. %-)

Код функции "заложи" - это попытка сымитировать действия, которые должна делать платформа.
Т.е. всё это потом уберётся внутрь платформы и будет автоматически выполняться для любой функции.

17

Работы по экспериментальной версии закрыты, наработки перенесены в версию ТОМ 2, где получили дальнейшее развитие.
Тема закрыта.