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)

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru