Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #1
24.03.2008 13:58

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Выложил альфа-версию

С момента публикации альфы прошло много времени. Платформа была полностью переработана.
Все примеры в этой ветке недействительны, а прикрепленные файлы окончательно устарели!


Версия 0.2.0.0 alpha
http://www.filehoster.ru/files/r4553 (всего 36 закачек.)
В файле проигрыватель + демоигра.
И то и другое все еще "сыровато", прошу больно не бить.
----------------------
Версия 0.2.1.0 alpha
http://www.filehoster.ru/files/r9252 - проигрыватель+демоигра.
http://www.filehoster.ru/files/r9256 - исходники проигрывателя (front-end)
Версия 0.2.1.1 alpha (bug-fix)
http://www.filehoster.ru/files/r9661 - 13 закачек - проигрыватель+демоигра.
http://www.filehoster.ru/files/r9662 - 6 закачек - исходники проигрывателя
Версия 0.2.1.2 alpha (bug-fix)
плеер+демоига
исходники оболочки

----------------------
Версия 0.2.2.0 alpha
проигрыватель+демоигра
исходники консольного проигрывателя

Отредактировано ASBer (16.06.2008 13:15)

Неактивен

0    0    #2
24.03.2008 16:35

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Gesperid написал:

разработка стандартной библиотеки - не менее...

в процессе...

Gesperid написал:

З.Ы.
Тем не менее интересны подробности проектирования и реализации smile На чем все это писалось (язык, среда, инструментальные средства), какая часть системы оказалась наиболее трудоемкой и т.д.

C++, Borland Builder(без использования VCL).
Наиболее трудоемким традиционно является парсер (в альфа версии парсера практически нет, он все еще в разработке).

Отредактировано ASBer (24.03.2008 16:37)

Неактивен

0    0    #3
24.03.2008 17:18

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Gesperid я имел ввиду анализ команд на естественном (русском) языке.
С синтаксическим анализатором я на мой взгляд справился, но за наводки большое спасибо, обязательно поинтересуюсь.

Неактивен

0    0    #4
25.03.2008 14:14

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Korwin написал:

Потестил игру и движок:

Огромное Спасибо! Очень нужен взгляд со стороны, у самого уже "глаз замылился".

Korwin написал:

... но код относительно понятен... хотя не вполне... Вроде бы это ООП, а не  процедурный язык, верно?

Это ООП, хотя местами неклассический. Постараюсь документироваться к бете.

Korwin написал:

2. функции на русском языке... надо посмотреть надо ли переключать раскладку при написании...

Имена объектов, свойств и методов могут быть как на английском, так и на русском. Ключевые слова также будут иметь русские синонимы (сейчас только частично). Раскладку переключать надо. На русской раскладке слишком уж беден набор символов.

Korwin написал:

1. Текст вплотную прижимается к краям, слова переносятся не по правилам переноса и не целиком - читать неудобно.

Исправлю к бете. (сделано)
Вообще есть идея разделить движок и интерфейс. Возможно кто-нибудь из разработчиков захочет сделать мультимедийный интерфейс, а консоль останется как демо-интерфейс или для отладки. (сделано)

Korwin написал:

2. Прокрутки нет, когда свойства окна делаешь по размеру экрана, - бог с ним, но нет возможности выделить и сохранить/скопировать текст

Посмотрю, но не уверен что здесь можно что-то сделать - консоль стандартная -виндузовая.

Korwin написал:

3. Мама-мышь почему-то пишется без дефиса: "мама мышь"

Ок. Исправлю. smile

Отредактировано ASBer (13.04.2008 21:02)

Неактивен

0    0    #5
26.03.2008 09:19

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

2Korwin Переносы слов давно в плане проекта. Обязательно сделаю! smile (сделано)
2Owl Wilson С выбором файла некоторые затруднения... sad
Варианты:
1. передавать имя файла в командной строке параметром. (сделано)
2. открывать файл через стандартное диалоговое окно выбора файла. (сделано)
3. открывать файл специальной командой в консоли с набором вручную.

1. вариант обязательно будет реализован независимо от 2 и 3.
2. вероятно можно сделать, хоть это и ломает концепцию консольного ввода.
3. считаю неудобным, реализовано не будет.

возможно есть еще варианты?

Отредактировано ASBer (21.04.2008 17:22)

Неактивен

0    0    #6
26.03.2008 11:30

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

2Eten
1. В демке использованы не все возможности проигрывателя.
Постараюсь это исправить - демоигра будет дорабатываться.

2. можно использовать формат:
#{"текст
текст
текст"}


хотя проще писать:
#текст
#текст
#текст

результат будет тот же.

Отредактировано ASBer (26.03.2008 11:33)

Неактивен

0    0    #7
27.03.2008 22:48

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Версия 0.2.1.0 alpha
http://www.filehoster.ru/files/r9252 - проигрыватель+демоигра.
http://www.filehoster.ru/files/r9256 - исходники проигрывателя (front-end)
----------------------------------------------------
Спрятал движок в .dll-ку. Консольный проигрыватель выложил в виде исходников (C++ Borland Buider 6).
Сделал перенос слов и загрузку файла по параметру из командной строки.

Отредактировано ASBer (28.03.2008 17:36)

Неактивен

0    0    #8
28.03.2008 06:55

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

упс, ушел разбираться.
с CC3260MC.dll понятно, недосмотрел...
про Windows NT пока не понятно, у меня работает на Viste и на XP...

Неактивен

0    0    #9
28.03.2008 10:23

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Версия 0.2.1.1 alpha (bug-fix)
http://www.filehoster.ru/files/r9661 - проигрыватель+демоигра.
http://www.filehoster.ru/files/r9662 - исходники проигрывателя
Перекомпилировал файл TQ_front.exe - борландовские .dll больше не нужны. smile
Попутно исправил ошибку в переносе слов.
Проверил все на чистой машине под Win XP - работает!

Отредактировано ASBer (07.04.2008 17:48)

Неактивен

0    0    #10
29.03.2008 06:46

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

пока не планирую smile

Неактивен

0    0    #11
31.03.2008 09:10

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Owl Wilson написал:

ASBer Лучший вариант - выбор файла с помощью меню, т.е. чисто консольное окно не прокатывает, если, конечно, ты не захочешь реализовать это в нём в псевдографике на манер старых IDE под DOS.

Да и я тоже склоняюсь к меню. Сделаю. (сделано)
Псевдографику делать сложнее, да и полный изврат это на мой взгляд.

Owl Wilson написал:

Теперь по существу движка :

мышонок> осмотреть стол
Типичная обстановка обычного мышиного домика.

Пусть даже движок не понял/не нашёл указанного в описании стола, но ведь он должен понимать, что действие "осмотреть" вызывается сейчас не к локации вообще, а к определённому объекту.

В данном случае движок нашел объект "Мебель" и вывел его описание. Описание локации выводится по команде "осм", "осмотреться", "осмотреть комнату".

Отредактировано ASBer (21.04.2008 17:28)

Неактивен

0    0    #12
31.03.2008 17:41

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Принципы формирования согласованного текста (часть 1)

В системе имеется возможность формирования текстов по шаблону.
Шаблон – это строка с включениями выражений, заключенных в фигурные скобки. Выражения в фигурных скобках являются вычисляемыми. При использовании такого шаблона в строку вместо фигурных скобок подставляется результат их вычисления.

Примеры:
var X= «X={2+3}»
результат: переменная X содержит строку «X=5»

#{2+3}
результат: на экран выведено сообщение – 5

#у тебя {2+3} яблок.
результат: на экран выведено – у тебя 5 яблок.

Выражения, помимо операций над числами или строками, могут содержать два специальных оператора для согласования объектов (или аспектов объектов).

Оператор «*» производит согласование объект по согласующему ключу. Согласующий ключ может быть указан явно, или получен из объекта (или его аспекта). Результатом действия оператора является строка с требуемой формой.

Пример:
#у {Вася*Рп} {2+3} яблок.
результат: на экран выведено – у Васи 5 яблок.
«Рп» здесь – явно указанный согласующий ключ.
У объекта «Вася» должен быть определен аспект по умолчанию – title:
Вася.title = «Вас%;; Ип; Ип=я; Рп=и; Дп=е; Вп=ю; Тп=ей; Пп=е;»

Оператор «:» указывает что свойство объекта используется как аспект.
Пример:
var X= «у {Вася:ФИО*Рп} {2+3} яблок.»
результат: переменная X содержит строку – «у Василия Ивановича 5 яблок.»
«Вася:ФИО» здесь – аспект объекта «Вася»

Согласующий ключ
Представляет собой строку примерно такого формата: «ИпЕчОд».
(расшифровывается как «именительный падеж единственного числа, одушевленное»)
Четные знаки в ключе именуют параметры ключа (падеж, число, одушевленность), нечетные – являются значениями параметров (Именительный, Единственное, Одушевленное). Порядок следования параметров в ключе неважен.
Имена параметров ключей и их значения задаются в тексте программы при описании объектов и независимы от устройства проигрывателя. Т.е. при отказе от стандартной библиотеки автор свободен выбрать свою собственную систему согласования (исключением является параметр «ч», так как он зависим от числа объекта и жестко задан в коде проигрывателя).

В случае использования нескольких ключей, приоритет имеет ключ, расположенный левее:

Пример:
Выражение Об:Асп*Ип*РпЕч*ВпМчНд эквивалентно выражению Об:Асп*ИпЕчНд.

Отредактировано ASBer (21.04.2008 17:31)

Неактивен

0    0    #13
04.04.2008 09:23

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Dimouse написал:

Очень милая игрушка, мне понравилась!

Сенкс! smile

Dimouse написал:

без заглядывания в текстовые файлы, как обычно пройти не удалось (слов мало понимает) smile

Я сейчас умышленно не расширяю количество альтернативных действий - парсер будет перерабатываться и синтаксис описания действий обязательно изменится.(сделано)

Dimouse написал:

И еще я не понял какой командой выходить, я под фаром играл, поэтому приходилось его каждый раз закрывать, неудобно!

- exit или quit.
Слово "выход" и прочие русские команды в оболочке не использую, т.к. они, возможно, могут быть использованы авторами в играх.
В следующей версии будет файлик с краткой помошью по командам оболочки. (сделано)

Отредактировано ASBer (21.04.2008 17:34)

Неактивен

0    0    #14
04.04.2008 11:59

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

fireton написал:

А вот автор игры не задолбается ли

' вероятно можно заменить на *. (сделано)
а вот как без фигурных скобок обойтись... ф.з. smile

Отредактировано ASBer (13.04.2008 21:06)

Неактивен

0    0    #15
04.04.2008 16:03

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

!"№;%:?*()-_+=/,.
Вот собственно все знаки, доступные на русской раскладке.
Если попытаться обойтись только этим комплектом - это очень сильно снизит читабельность кода игры (авторы задолбаются в коде разбираться).
Максимум что можно сделать - максимально часто использовать эти знаки в синтаксисе, особенно, в часто используемых и многократно повторяющихся конструкциях.
Т.е. переключения раскладки можно значительно сократить, но никак не исключить полностью.

Неактивен

0    0    #16
07.04.2008 17:05

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Версия 0.2.1.2 alpha (bug-fix)
плеер+демоига
исходники оболочки
Основные изменения произошли в движке и интерфейсе. Сама демка почти не изменилась.

Основные изменения:
- сделана загрузка произвольного файла по команде run или start. (правда при открытии окна диалога осталась непобежденная коряфка sad );
- добавил хелп (команда ? или help);
- добавлена функция автоматического форматирования текста;
- исправлено огромное количество ошибок (и вероятно добавлены новые).

Отредактировано ASBer (21.04.2008 17:47)

Неактивен

0    0    #17
07.04.2008 21:15

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

хорошо бы "Краткая справка по командам оболочки"выдавалась при старте игры
- легко smile (сделано)

набрал осмотреться
а где выходы?
как их увидеть?
- а вот это дельное замечание! буду думать как сделать. (сделано)

а сзюв не работает?
- если в локацию добавить выходы "Север","Запад","Юг","Восток" - сзюв будет работать smile

вопрос: почему мама-мышь видна и в домике и во дворе?
- внимательнее отслеживай сообщения, мама-мышь может перемещаться сразу же следом за тобой.

и ещё: попытка хорошая. очень. НО чем твоя оболочка лучше РТАДСа?
- сейчас она значительно ХУЖЕ РТАДСа! (на то она и альфа). В потенциале она лучше тем что русский язык для неё родной. Даже сейчас парсер принимает только синтаксически правильные команды - нельзя "осмотреть мышью".

ага у тебя хорошо прописана работа с горохом, т е с нумерованными объектами
неплохо...
а возможно ли такой квест на РТАДСе исхитриться сделать?
- можно, там вроде бы специальное свойство у объектов есть, чтобы определять их как счетные. Но вот насколько правильно там работает "взять 2 монеты", "взять 5 монет" я незнаю... wink

Отредактировано ASBer (13.04.2008 21:07)

Неактивен

0    0    #18
08.04.2008 15:00

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

про столб, провод и веревку

Код:

unique вязальщик_столбов
.title="%; МрЕч; Ип; Ип=ты; Рп=себя; Дп=себе; Вп=себя; Тп=собой; Пп=себе"
.lex = "%; МрЕч; Ип; Ип=ты; Рп=себя; Дп=себе; Вп=себя; Тп=собой; Пп=себе"
pers=вязальщик_столбов

unique провод
.title="провод%; МрЕч; Ип; Ип=; Рп=а; Дп=у; Вп=; Тп=ом; Пп=е"
.lex = "провод%; МрЕч; Ип; Ип=; Рп=а; Дп=у; Вп=; Тп=ом; Пп=е"

unique веревка
.title="веревк%; ЖрЕч; Ип; Ип=а; Рп=и; Дп=е; Вп=у; Тп=ой; Пп=е"
.lex = "веревк%; ЖрЕч; Ип; Ип=а; Рп=и; Дп=е; Вп=у; Тп=ой; Пп=е"

unique столб
.title="столб%; МрЕч; Ип; Ип=; Рп=а; Дп=у; Вп=; Тп=ом; Пп=е"
.lex = "столб%; МрЕч; Ип; Ип=; Рп=а; Дп=у; Вп=; Тп=ом; Пп=е"

global.Привязать(Нечто,Чемто,КЧемуто)
{ #Ура! ты привязал {Нечто*Вп} к {КЧемуто*Дп} {Чемто*Тп}!}

pattern(привязать {@Нечто*Вп} {@Чемто*Тп} к {@КЧемуто*Дп})
{ Привязать(Нечто,Чемто,КЧемуто) }
pattern(привязать {@Нечто*Вп} к {@КЧемуто*Дп} {@Чемто*Тп})
{ Привязать(Нечто,Чемто,КЧемуто) }
pattern(привязать {@Чемто*Тп} {@Нечто*Вп} к {@КЧемуто*Дп})
{ Привязать(Нечто,Чемто,КЧемуто) }
pattern(привязать {@Чемто*Тп} к {@КЧемуто*Дп} {@Нечто*Вп})
{ Привязать(Нечто,Чемто,КЧемуто) }
pattern(привязать к {@КЧемуто*Дп} {@Нечто*Вп} {@Чемто*Тп})
{ Привязать(Нечто,Чемто,КЧемуто) }
pattern(привязать к {@КЧемуто*Дп} {@Чемто*Тп} {@Нечто*Вп})
{ Привязать(Нечто,Чемто,КЧемуто) }
"привязать"="привяжи"="прикрутить"="прикрути"="пришпандорить"="пришпандорь"

- скопировать в файл, открыть в проигрывате - и привязывайте что хотите, чем хотите и к чему хотите smile

Отредактировано ASBer (08.04.2008 15:01)

Неактивен

0    0    #19
09.04.2008 08:57

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Flint написал:

GrAndrey написал:

"привязать веревкой шею к ветке. Спрыгнуть с ветки."

Как же я смеялся! :-D
Четко подмечено!

Также смеялсо - уронил себя под стол! smile

Неактивен

0    0    #20
09.04.2008 09:18

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

а сколько аргументов(максимум) может быть у команды ?
- специально не ограничивал, теоретически 2147483648 агрумента, фактически зависит от размера оперативки, а реально ограничевается фантазией автора.

а можно ли задавать свои сообщения об ошибках (подсказки) ?
- в текущей версии нельзя, но есть в планах.(сделано)

и вот ещё ВОПРОС: думал ли о диалогах?
- думал. пока не реализовано.

можно ли по ходу игры создавать ещё объекты, комнаты, персонажей?
- создавать можно, удалять нельзя smile

интересно, что интерпретёр Асбера нормально понимает букву Ё
- спасибо за найденную несуразность, это легко поправимо smile (сделано)

как присоединять файлы?
- команда include "FileName" - можно посмотреть в демке, которая состоит из 3х файлов.

один из многих вариантов организации общения с персонажами, которым могут захотеть воспользоваться авторы- менюшные диалоги. собираешься ли ты их реализовать?
- нет, пока не собираюсь, но подумаю...

а как насчёт команд типа: Сеня, возьми мяч и т п ?
- это будет. Не так как в РТАДСе, но будет smile

Отредактировано ASBer (21.04.2008 17:41)

Неактивен

0    0    #21
09.04.2008 10:03

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Меня очень радует интерес, проявленный к моей поделке, и сообщения об найденных ошибках, комментарии и пожелания мне очень помогают.
НО программа находится в стадии разработки, синтаксис языка нестабилен и меняется по ходу -  я стараюсь найти наиболее лаконичные и логичные конструкции.
Не рекомендуется на текущей версии создавать что-то большее чем тестовые примерчики.

Отредактировано ASBer (09.04.2008 10:16)

Неактивен

0    0    #22
09.04.2008 10:50

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

GrAndrey написал:

Интересно посмотреть на обработчики всех случаев, когда какой-либо из объектов не подходит.

Согласен, тут есть над чем подумать! Беру таймаут до выхода следующей версии. smile или ищите меня на ветке..

Отредактировано ASBer (09.04.2008 10:50)

Неактивен

0    0    #23
09.04.2008 12:00

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

пример с обработчиками в функции
пример с обработчиками в шаблонах
В первом случае сообщения определяются автором игры,
Во втором случае выдается стандартное сообщение парсера о невозможности действия.
p.s. по просьбам трудящихся добавлены объекты "шея" и "ветка"

Отредактировано ASBer (21.04.2008 17:46)

Неактивен

0    0    #24
22.04.2008 14:11

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Версия 0.2.2.0 alpha
проигрыватель+демоигра
исходники консольного проигрывателя

Основные изменения произошли в парсере, изменен формат описания действий.

Отредактировано ASBer (16.06.2008 13:09)

Неактивен

0    0    #25
23.04.2008 11:00

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Формат описания действия
Для описания действий создана специальная категория объектов action (действие).
Пример:
действие осмотреть
.шаблон="осмотреть=осмотри=оглядеть=огляди=осм @Объект:description*Вп"
.шаблон="посмотреть на @ Объект:description*Вп"
.Проверка(Актер, Объект_место, Объект){
  if(!Объект.Внешнее & Объект_место!= Актер & Объект_место!= Актер.loc) "{ Объект *Рп} не видно."
}

Объект «действие» содержит шаблоны и проверки.
Шаблоны задаются присвоением строки специальному свойству - .шаблон="строка шаблона"
Строка шаблона состоит из константных слов и переменных.
Для переменных задается класс или свойство, которым должен обладать объект и грамматическая форма, в которой должно находиться слово в команде.
Все методы объекта «действие» являются проверками и вызываются парсером в процессе анализа команды.

Принципы работы парсера v0.2.2.0
1.    Введенная команда разбирается на части.
2.    Слова-синонимы заменяются основными словами.
3.    Перебираются шаблоны, с целью найти шаблон, соответствующий введенной команде.
3.1.    Слова в команде попозиционно проверяются на соответствие константным словам текущего шаблона. Если хотя бы одно слово не совпадает, переходим к следующему шаблону.
3.2.    Для переменных, заданных в шаблоне, происходит подбор объектов.
3.2.1.    Если слово не найдено в списке лексем - выдается сообщение «Слово ‘слово’ мне неизвестно.»
3.2.2.    Если лексема найдена, но не соответствует грамматической форме, обозначенной в шаблоне - выдается сообщение «Слово в неверной форме!»
3.2.3.    Происходит подбор объектов в зависимости от их расположения
3.2.3.1.    Если переменная шаблона обозначена символом «&» месторасположение объекта роли не играет.
3.2.3.2.    Если переменная шаблона обозначена символом «@» происходит поиск подходящих объектов во всевозможных местах текущей локации.
3.2.3.2.1.    Если объект, соответствующий найденной лексеме, является классом, происходит подбор объектов-экземляров данного класса внутри локации.
3.2.3.2.2.    Если в текущей локации ни один подходящий объект не найден - выдается сообщение «Объект отсутствует.»
3.2.4.    Если найденный объект не относится к необходимому классу, или не имеет свойства, обозначенного в шаблоне - выдается сообщение «Объект не подходит для этого действия!»
3.2.5.    После подбора объектов, перебираются все возможные комбинации объектов и для каждой комбинации последовательно вызываются все методы-проверки объекта «действие» текущего шаблона.
3.2.5.1.    Если все методы-проверки вернули Null, комбинация считается прошедшей проверку.
3.2.5.2.    Если метод-проверка возвращает строковое значение, комбинация считается не прошедшей проверку, все последующие проверки для этой комбинации не выполняются. Полученная строка используется как сообщение парсера.
3.2.5.3.    Если после перебора всех комбинаций прошли проверку 2 или более комбинации – выводится сообщение «попробуйте ввести более подробную команду.»
4.    Если подходящий шаблон не найден - выводится сообщение «это невозможно…»
5.    После того, как найден подходящий шаблон -
5.1.    Если у актера отсутствует метод с названием, соответствующим названию действия, - выводится сообщение «Актер не может это сделать!»
5.2.    Иначе вызывается метод актера, соответствующий действию, и работа парсера на этом успешно завершается.

Отредактировано ASBer (23.04.2008 14:45)

Неактивен

0    0    #26
24.04.2008 17:30

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Большая просьба, если у Вас есть собственные варианты действий, глаголов и синонимов, которые я упустил в демке - присылайте, постараюсь добавить.

То, что на данной версии платформы реализовать нельзя:
- несколько действий в одной команде: >стрельни и убегай
- несколько объектов в одной команде: >возьми горох и чечевицу
- прилагательное+существительное в команде: >возьми сушеный горох (реализовать можно, но пока слишком громоздко)

Особенно интересны действия с 2мя и более объектами.
Также буду благодарен за любые замечания и конструктивную критику smile

Неактивен

0    0    #27
25.04.2008 09:19

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Korwin написал:

"метнуть бумеранг в голову кенгуру"

я над этим думаю... smile

Korwin написал:

А по игре - ты может ее на БуКо 2008 выставишь? Или другую, на своем движке?

БуКо 2008 соблазнительно. Только мышек я уже засветил, да и проходится игра за 5-7 ходов. Хотя есть одна мысль...  осталось придумать с какого боку там бумеранг. smile))))))))

Неактивен

0    0    #28
05.05.2008 11:09

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

noname написал:

и ещё:
один из многих вариантов организации общения с персонажами, которым могут захотеть воспользоваться авторы- менюшные диалоги. собираешься ли ты их реализовать?

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

Отредактировано ASBer (05.05.2008 13:47)

Неактивен

0    0    #29
05.05.2008 13:36

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Korwin написал:

А примерчик кода?

вот примерно так:

Код:

location Комната
.title="Комната"
.description="в комнате Вася и Петя
(для разговора с Васей введите 'говорить с Васей')"

unique Вася.title="Вася"
unique Петя.title="Петя"
unique ПетяГоворящийСВасей.title="Петя"
pers=Петя

action Поговорить
.pat="поговорить=говорить=поговори=говори с Васей"
.pat="спросить=спроси Васю"

Петя.Поговорить(){
РазговорСВасей+ПетяГоворящийСВасей
pers=ПетяГоворящийСВасей
}

location РазговорСВасей
.title="Разговор с Васей"
.description="Слушай, Вася, давно тебя хотел спросить...<15>{.menu()}</15>"
.menu_name=" " //не показываем наименование меню
.menu_item(
__про рыбалку){ 
%- Вася, а как ты относишься к рыбалке?
%- да не рыбак я совсем...
%- жаль, очень жаль.<15>{loc.menu()}</15>
}
.menu_item(
__прощай){ 
%- пока Вася, было приятно поболтать.
%- пока Петя.
pers=Петя //возвращаемся в комнату
}

//отдельная тема сокровищ
unique ПроСокровища
.menu_item(
__а где ты хранишь свои сокровища?){ 
global + ПроСокровища //2й раз про сокровища спросить несудьба
%- а где ты хранишь свои сокровища?
%- в тумбочке под столом...
%- спасибо, ты мне очень помог!<15>{loc.menu()}</15>
}

Отредактировано ASBer (08.05.2008 14:05)

Неактивен

0    0    #30
14.05.2008 16:56

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Версия 0.2.2.1 alpha
проигрыватель+демоигра
Исправлены некоторые ошибки в движке и игре;
Расширена демка - теперь можно поиграть за крота (2 линии прохождения, короткая для меня была неожиданностью smile);
Парсер научился понимать числа - > взять 5 горошин (правда пока нет мыслей как это лучше обыграть в демке)

Отредактировано ASBer (16.06.2008 10:01)

Неактивен

0    0    #31
15.05.2008 09:50

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

noname написал:

невозможно ВЗЯТЬ ОЧКИ
более того, невозможно ВЗЯТЬ 1 ОЧКИ
и вообще никак не получается их взять.
...
>взять очки
- this + Obj*N
-очки number!

Упс! а это уже нелогичность в движке вылезла...
Суть в следующем:
Очки являются уникальным объектом, а для них количество всегда =1.
Чтобы количество не менялось, запрещены арифметические действия с уникальными объектами.
Вероятно нужно разрешить арифметику и контролировать сам результат действия, тогда умножение Очков на 1 не будет вызывать ошибку.

noname написал:

найденные некорректности (по памяти):
>осм кровати
- слово кровати употреблено в неверной форме

Для кроватей не заданы формы множественного числа... добавлю.

noname написал:

за маму истории нет (вот уж не стоило тогда этот пунктик вставлять)

эт на вырост... smile

noname написал:

за крота: играть не особенно интересно, но попробую таки всё обтестить в чём собственно фишка игры за него? использует ли он какие-то новые навороты движка?

Крот в основном нужен для лабиринта - а слабо пройти лабиринт слепым кротом? smile Кроме того одни и те же действия кротом и мышонком выполняются по-разному, +есть задумки на будущее...

noname написал:

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

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

P.S. за тестинг огромное спасибо!

Неактивен

0    0    #32
15.05.2008 11:00

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

проигрыватель+демоигра
исправлены баги с очками и кроватями.

Отредактировано ASBer (16.06.2008 13:08)

Неактивен

0    0    #33
16.06.2008 16:22

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Анонос версии 0.2.3.0 альфа
Новое:
+ оконный интерфейс с графикой;
+ конструкции for(), while(), switch();
~ слегка улучшенный парсер.

Неактивен

0    0    #34
24.08.2008 15:23

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

http://www.rapidshare.ru/762288 - ТОМ версии 0.2.3.0 альфа.
В составе консольный/оконный интерфейсы и демоигра про мышек.

Изменения в интерпретаторе:
- добавлены конструкции циклов for и while;
- добавлена конструкция switch - case;
- изменена обработка событий, добавлены функции CheckMove, BefMove, AftMove;
- добавлена команда restart;
- формируется лог-файл, прошу присылать логи smile

Изменения в демоигре:
- добавлена система помощи, мышонок научился думать;
- добавлено ведение счета;
- возможность игры за разных персонажей временно убрана.

PS: оконный интерфейс пока крайне сырой...

Отредактировано ASBer (08.09.2008 22:47)

Неактивен

0    0    #35
02.09.2008 13:13

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

План разработки на ближайшее будущее

v.0.2.3.1 альфа
- исправление работы конструкций if-else, for, while, switch-case;
+ ключевае слова return, break, continue;
(TOM-язык окончательно сформирован)

v.0.2.3.2 альфа
+ ключевое слово actor
+ относительные свойства объектов;
- исправление известных багов;
(модель ООП окончательно сформирована)

v.0.2.4.0 альфа
+ возможность сохранения/восстановления игры;
+ возможность отката на один ход;
(базовая функциональность ТОМа полностью разработана)

v.0.2.4.1 альфа
- исправление найденных багов;

v.0.9.0.0 бета
+ документирование;
+ примеры;
- бета тестирование;

v.1.0.0.0 - релиз базовой версии.

Отредактировано ASBer (10.09.2008 14:04)

Неактивен

0    0    #36
08.09.2008 09:11

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Огромное спасибо за отзыв!
Все замечания надеюсь исправить в ближайшей публикации v.0.2.3.1.
По пунктам необходимо:
1. исправить сообщение парсера, в игре добавить действие "выйди".
2. пока не знаю что тут можно сделать... буду думать.
3. системная команда "Помощь" была переопределена в игре действием "Подсказка", как пример переопределения команд это интересно, но в данном случае неуместно. Убрал.

Неактивен

0    0    #37
09.09.2008 09:30

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

В версии v.0.2.3.1 альфа исправлена работа конструкций языка if-else, for, while, switch-case. Фигурные скобки {} теперь необходимы только для объединения многострочных блоков. Все конструкции (за исключением switch-case) работают аналогично C. Принцип работы switch-case мною изменен, надеюсь, в лучшую сторону.
Также добавлены ключевые слова return, break, continue, работающие аналогично C.
Теперь язык платформы окончательно сформирован и позволяет разрабатывать алгоритмы любой сложности.

Документирование системы пока не начато, но начиная с этой версии в папке "Примеры" можно найти простые файлы с подробными комментариями, позволяющие освоить принципы работы платформы. Файлы, имеющие расширение .tom, открываются текстовым редактором.

Отредактировано ASBer (09.09.2008 09:33)

Неактивен

0    0    #38
10.09.2008 09:32

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

noname написал:

извиняюсь, что я ещё на старой версии, но вот захотел проверить реакцию
на ввод одиночного слова

В новой версии на ввод любого неизвестного слова выдается "Мышонок не может это сделать!". Так как в игре заложен весьма ограниченный словарь, я не вижу возможности для любой произвольной строки провести анализ на бред/мат/команду/прочее, поэтому предполагается, что любая введенная строка - это команда к действию.

noname написал:

а вот на слово взять было бы неплохо выдать
какое-нить другое сообщение, типа:

укажите, что Вы хотите взять. например:
взять яблоко

Для этого парсер должен иметь механизм подстановки умолчаний и механизм уточняющих вопросов. Например как здесь https://forum.ifiction.ru/viewtopic.php … 171#p13171
Когда нибудь дорастем и до этого...

Неактивен

0    0    #39
25.09.2008 12:04

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Версия 0.2.3.2 альфа доступна для скачивания: http://ifwiki.ru/ТОМ

Неактивен

0    0    #40
25.09.2008 12:39

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

В версии v.0.2.3.2 альфа добавлены относительные свойства объектов и ключевые слова actor и act.
В демоигре восстановлена возможность игры любым персонажем.

Неактивен

0    0    #41
25.09.2008 12:59

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

fireton написал:

а как же changelog?

добавил smile

Неактивен

0    0    #42
26.09.2008 09:32

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Мне в вики было бы удобно.
Совсем не хочется тратить время на создание еще одного малопосещаемого ил-сайта.

Неактивен

0    0    #43
03.10.2008 22:21

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

случайно наткнулся на ошибку:

мама-мышь> взять горох
Мама-мышь взяла горох из мешка
В лесу страшно ухнул филин.

мама-мышь> брось
Мышь не может это сделать!
Брось отсутствует.

Дооооолго смеялсо lollollol

Отредактировано ASBer (03.10.2008 22:22)

Неактивен

0    0    #44
09.10.2008 15:45

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Удивительно много ошибок вылезло на поверхность. Сижу в глубокой отладке, убиваю баги...

Неактивен

0    0    #45
10.10.2008 08:58

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Korwin написал:

А я тут уже вставил ТОМ в FAQ. Поторопился?

Нет, все идет по плану. Ошибки не критичные и легко правятся.
Я сейчас добавляю в игру бантики, функциональность под которые давно разработана, но не тестировалась из-за своей второстепенности. Вот жучки и повылазили.

Неактивен

0    0    #46
20.10.2008 11:25

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Анонс версии 0.2.3.3.альфа
Доработки платформы:
- существенно доработан парсер;
- изменены управляющие теги;
- исправлена масса ошибок.

Доработки демоигры:
- добавлены новые объекты (ягоды и грядки во дворе)
- добавлены шаблоны для действий с объектами упомянутыми ранее:

мышонок> брось рогатку
Мышонок бросил рогатку на пол.
мышонок> подними
Мышонок взял рогатку с пола.

- добавлены действия с классовыми именами:

мышонок> позвать зверьков
- мама-мышь! - закричал мышонок.
- дядюшка-крот! - закричал мышонок.
- что тебе нужно, мышонок? - спросил дядюшка-крот.
- что тебе нужно, мышонок? - спросила мама-мышь.

- вероятно еще что-то… эээ не помню smile

Неактивен

0    0    #47
20.10.2008 13:00

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Версия 0.2.3.3 альфа доступна для скачивания: http://ifwiki.ru/ТОМ

Неактивен

0    0    #48
17.11.2008 09:07

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Анонс версии 0.2.4.0 альфа
+ команды save/сохранить и load/загрузить. Теперь можно сохранять игры.
+ исправлены найденные баги.
- команды undo/отменить в версии 1.0 не будет. Нормальная реализация undo требует глубокой переработки ядра платформы с введением некоторого подобия транзакций и их отката. Команда undo будет реализована в одной из следующих версий 1.х

Бета не за горами! smile

Неактивен

0    0    #49
18.11.2008 11:28

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Это чин такой навроде Тайный советник.

Неактивен

0    0    #50
20.11.2008 09:28

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Новая версия 0.2.4.0 альфа доступна для скачивания: http://ifwiki.ru/ТОМ

Добавлены команды save/сохранить и load/загрузить. Теперь можно сохранять игры.
Также исправлены найденные ошибки.

Как дополнительный бонус, в демоигре добавилась возможность командовать другими персонажами, например: крот, возьми горох из мешка

Отредактировано ASBer (20.11.2008 09:48)

Неактивен

0    0    #51
15.12.2008 16:48

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Gesperid написал:

1. Все проверки объектов выполняются в объекте действия (глагол в терминах рТАДСа)
    Объекты, не подходящие действию, дальше не проходят.
2. У персонажа вызывается метод, одноименный с действием.
    switch по действию таким образом исключается.
    Если необходимый метод у персонажа отсутствует - выводится стандартное сообщение.
3. При необходимости никто не запрещает из метода персонажа вызвать метод объекта.
    switch по объекту таким образом исключается.

1. Что имеется в виду?
2. Это просто другая запись switch, а стандартное сообщение – это ветка default.
3. Не понял. Если, например, берётся бомба, в результате чего она детонирует. Какой метод вызвать у объекта, если в методе взять мы ещё не узнали, что это бомба?

1. для примера возьмем действие "взять"

Код:

unique бомба.cls = предмет
  .Вес = 50
  .lex = "бомб%;..;..;..Вп=у;" //лексема для парсера

action взять //объект категории действие (отдаленный аналог verb в TADS)
  .pat = "взять=возьми @Obj:предмет*Вп" //шаблон команды для парсера
  .Obj(Obj) //проверка для объекта, вызывается парсером
  { if(Obj.Вес > 100)
       return "а не надорвешься?" //не прошла проверка по весу
  }

При вводе комады "взять бомбу" парсер попытается подобрать подходящий шаблон и объекты к нему. В нашем случае это будет шаблон действия "взять" и объект "бомба".
При этом для объекта парсер выполнит проверки:
- бомба находится в текущей локации (префикс @ у переменной Obj)
- бомба отноится к классу "предмет" или имеет свойство "предмет" (Obj:предмет)
- вызовет проверку взять.Obj(бомба).
и только в случае если все проверки прошли успешно, парсет будет искать метод "взять(Obj)" у персонажа и выполнит его.
Обычно далее никаких ветвлений не требуется. Все объекты, способные браться, берутся одинаково.
----
2. Давно известно что любые конструкции языка можно заменить на if() и goto.
    При желании все можно представить как switch. Только зачем?
Основное отличие тут в том, что методы можно разнести по классам и при необходимости перегружать. С ветками switch-а так не получится...
----
3. Это как раз и есть исключительная реакция. Ее можно реализовать по разному. Например так:

Код:

class предмет
  .doTake(){} //обычно предметы берутся без последствий

бомба.doTake() //перегружаем метод
{ %Бабах! Бомба взорвалась у тебя в руках!
  die()
}

pers.взять(Obj)
{ %Ты взял {Obj*Вп}.
  this + Obj //Obj помещаем в инвентарь
  Obj.doTake() //вызываем метод объекта для нестандартных реакций
}

получаем:
> взять бомбу
Ты взял бомбу.
Бабах! Бомба взорвалась у тебя в руках!
Ты умер.

Отредактировано ASBer (15.12.2008 17:04)

Неактивен

0    0    #52
16.12.2008 10:32

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

noname
> пожалуй, становится психологически трудно тестировать движок на примере одной и той же игры. хотя, для демы, игра просто суперская!
Noname, как самого упорного тестировщика готов включить тебя в раздел благодарностей (когда он появится) smile

После запуска игры невозможно получить список команд оболочки, типа Restart или Сохранить
Мне не удалось это повторить... у меня команда помощь/help/? работает везде и всегда.

> нельзя ли автоматизировать вывод этих списков? а то команда брось понятна мышонку, а в списке хелпа её нет
Помощь просто тупо проигрывает файлик help.txt из каталога игры. Если там чего-то нехватает, значит это нужно просто добавить.

> более серьёзным для автора платформы, но не столь важным для игрока, может будет:
очки[предмет, а не баллы] не отображаются в инвентаре, вообще нигде... нет команды, позволяющей получить прямое указание на наличие/отсутствие очков у мышонка.
Очки отображаются в описании персонажа. Отображать их еще и в инвентаре совсем не проблема

> ну, и совсем маловажные замечания связаны с возможностью отдавать команды другим персонажам:
Да, эти несуразности меня тоже повеселили. Будет исправлено в следующей версии.

>тестирование идёт вяло... хочется новой, не менее забавной демы
Сейчас нагло тырю демки из рТАДСа. Золотой череп почти работает.

Неактивен

0    0    #53
16.12.2008 11:42

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

noname написал:

что ещё мне нужно знать, что бы написать для ТОМ свой интерфейс?

Скачать файлик ConTOM_s.rar (есть в Вики на страничке ТОМа). Там разобраться с constom.cpp - это весь интерфейс одним модулем, правда на С.
Все что тебе надо от ТОМа - это 3 функции:
   char* RunFile(char*FileName);
   char* RunText(char*Text );
   char* Command(char*Input);

Отредактировано ASBer (16.12.2008 14:39)

Неактивен

0    0    #54
16.12.2008 17:05

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Стручок гороха просто бессовестно недоделан!
Чтобы он отображался в инвентаре необходимо прописать свойство .ВКармане = "..."
для комнаты свойство .ЛежитВКомнате = "..."
для двора свойство .ВиденВоДворе = "..."
(очки кстати добавил в инвентарь)

Действие "сорвать" почти что синоним действия "взять" также как "положить" или "бросить".
Я не думаю что в хелпе должны быть описаны ВСЕ действия. Пусть автор игры сам решает что подсказывать игроку, а что нет.

Для "чайников" примеры писать нужно после того как появится стандартная библиотека.
Примеры должны использовать эту библиотеку. Иначе просто нереально.

Неактивен

0    0    #55
19.12.2008 09:25

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

noname написал:

свежий баг:
сейчас пример "Диалоги на меню.tom" не выводит сообщений, кроме сообщений об ошибках. я уж и их архива заново доставал. по-моему это случилось как раз после того, как я вместо старой версии ТОМ скачал свежайшую. а старую удалил.

Да, это моя вина. Персонажам в примере необходимо добавить метод .onChangePers()

Код:

location Комната.title="Комната"
.description="в комнате Вася и Петя
(для разговора с Васей введите 'говорить с Васей')"

unique Вася.title="Вася"
unique Петя.title="Петя"
  .onChangePers(OldPers)
  { 
    // При смене персонажа показываем локацию
    if(.loc <> OldPers.loc)
    { %<location>
      %{.loc}</location>
      %{.loc.description}
    }
  }

unique Петя_говорящий_с_Васей.title="Петя"
  .onChangePers(OldPers)
  { 
    // При смене персонажа показываем локацию
    if(.loc <> OldPers.loc)
    { %<location>
      %{.loc}</location>
      %{.loc.description}
    }
  }
pers=Петя

Этот метод - обработчик нового события, возникающего при смене персонажа.
Теперь вывод локации не производится автоматически. Это теперь нужно программировать.
Я посчитал это более гибким, например, может понадобится изменить способ показа локации при входе в темную комнату.

Неактивен

0    0    #56
22.12.2008 10:28

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

noname> 1) пока не вижу реакции на ключевые слова. допустим, ввод 'сокровища' будет непонят
ASBer: В ТОМе реализованы 2а способа реализации диалогов - менюшный и парсерный. В рассмотренном примере используется только менюшный способ, но самым интересным мне видится сочитание обоих методов. Тогда будет и реакция на ключевые слова в том числе.

noname> 2) дурацкий текст сообщения об ошибке в режиме диалога: 'Петя не может этого сделать'. собственно, Петя в этом режиме ничего не может сделать. в случае непонятой фразы( а любой ввод в этом режиме воспринимается как фраза, обращённая к собеседнику) хорошо бы выводить соответствующее сообщение.
ASBer: для объекта Петя_говорящий_с_Васей можно определить специальное свойство сan_not_execute. Например:

Код:

Петя_говорящий_с_Васей.сan_not_execute = "Вася тебя не понял."

(есть ряд подобных свойств, задокументирую их в ближайшее время)

noname> 3) игрок может искренне полагать, что ввод 'пр' бует понят как 'прощай', а это не так. т е система подбирает подходящую фразу сверху вниз до первого соответствия. впрочем, это тот момент, который лучше переложить на плечи авторов квестов: или пусть фразы тщательно подбирают, или игрока предупреждают, или надеются, что игрок поймёт принцип сам.
ASBer: Сейчас сортировка ответов по алфавиту. Скорее всего переделаю. Будет по порядку их объявления в коде игры. Т.е. фразы, которые должны быть сверху, нужно будет описывать раньше фраз, распологающихся ниже. Также в планах сделать автонумерацию пунктов меню. Вобщем есть над чем работать.

noname> 2) теоретически возможна (ASBer, подтверди) реакция и на другие, не перечисленные фразы. т е предложенные варианты не запрещают(теоретически) игроку ввести другое понятное ответчику слово, и получить соотв ответ
ASBer: да, такая возможность есть.

noname> 3) эта форма диалогов, естественно, не запрещает реализации обычных парсерных 'спросить Васю об ...', т е если кто из авторов хочет классических парсерных диалогов- наздоровье.
ASBer: парсерные диалоги базируются на специальном операторе:

Код:

 Персонаж > "произносимая фраза"

где Персонаж - объект, а "произносимая фраза" - строка.

noname> надеюсь архив исправлен?
ASBer: Мне стало понятно что этот пример требует доработки.
Попробую добавить туда парсерные возможности, и выложу все примеры отдельным архивом.

Отредактировано ASBer (22.12.2008 10:30)

Неактивен

0    0    #57
24.12.2008 11:11

ASBer
Модератор (+161, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Выложил альфа-версию

Предлагаю вниманию сообщества первую попытку портации стандартной библиотеки рТАДС на платформу ТОМ.

В архиве вы найдете библиотечные файлы (пока только 3) и демоигру - золотой череп.
Портация только начата и большинство глаголов все еще не переработано. Но все действия, необходимые для прохождения игры, работают.

Хотелось бы услышать ваши мнения и пожелания.

P.S. Разрешение у GrAndrey на эксперименты с портацией библиотеки получено.
P.S.S. Разрешения у Michael J. Roberts не запрашивал, но условия лицензии, насколько я понимаю, подобной модификацией не нарушаются.

--------------------------------------------------------------------------------
Прикрепленные файлы:
TOMrTADS.rar, Размер: 236,863 байт, Скачано: 54

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru