В данный момент работаю над анализатором команд. В связи с этим появились следующие вопросы:
* Сколько свободы должно предоставляться игроку при вводе команд (имеется в виду расположение слов).
* Какие (и насколько сложные) конструкции предложения обычно используются в процессе игры.
Неактивен
Т.к. расположение слов в английских предложениях по большей части фиксированно, то в этом деле мы первооткрыватели. Я думаю, что фиксированный порядок в IF на русском дело не приятное, но простительное. В крайнем случае для простейших случаев (отдать камень гоблину = отдать гоблину камень) можно сделать какие-нибудь проверки (камень предмет, а не актер).
Приятно также, если игра будет понимать сложные предложения.
Взять камень. Идти на север и
Взять камень и идти на север - это просто две команды, введенные через разделитель. Их можно обработать последовательно.
Взять камень и бутылку - здесь чуть сложнее, но решаемо.
Взять все - ищем все объекты, которые могут быть взяты и последовательно их берем.
Ну а вообще-то предложение обычно разделяют на:
<актер, > <глагол> <прямой объект> <предлог> <непрямой объект>
Например:
Гоблин, положи камень на стол[i] - это по максимому.
[i]инвентарь - по минимому.
Актер, разумеется, по умолчанию игрок.
Еще что вспомню/в голову придет - напишу.
Неактивен
Глагол всегда будет стоять впереди, т.к. не думаю что кто-то будет вводить: "Камень положи на стол" или "Камень на стол положи". Хотя в принципе и это легко предусмотреть - просто перед посылкой фразы в анализатор сделать простенькую процедуру, которая будет ставить глагол на первое место. С прямым и непрямым объектом сложнее, их нужно тоже как-то фиксировать перед отправкой в анализатор: например можно задавать для каждого глагола таблицу падежей прямого и непрямого объектов, а потом по падежам и вылавливать. В случаях же если падежи совпадают, просто прописать в ручную данный случай:)
Неактивен
Идея-то хорошая и вертелась у меня в голове очень давно (кстати, ее я сейчас и реализовываю), однако здесь нужно помнить про предлоги, которые могут запросто менять падежи объектов (пример: "иди к дереву" - "иди до дерева").
Неактивен
Этого можно избежать, если считать словосочетания "ИДИ К" и "ИДИ ДО" разными глаголами и задавать для них свои падежи объектов.
Неактивен
Да. И еще одно. Хорошо, если анализатор будет запоминать последние объекты, к которым обращался игрок. Ну в смысле:
Взять яблоко
Положить его на стол
Это не так уж и сложно.
Неактивен
В теории ВСЕ не так уж сложно, а на деле... Но борьба идет и я постепенно побеждаю бездушную машину!!! ;D
Неактивен