Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #1
18.10.2001 14:42

filden
Участник
Откуда: Tallinn
Зарегистрирован: 18.10.2001
Сообщений: 7

С чего начать создание анализатора команд

Здравствуйте, иферы, или как там правильно!

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

Как создать словарь и как его связать с анализатором? Ну это сразу такой конкретный вопрос...

Спасибо!filden@hot.ee

Неактивен

0    0    #2
18.10.2001 20:05

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2905
Вебсайт

Re: С чего начать создание анализатора команд

Если это вызывает такой интерес, то могу попробовать подготовить материал о том, как я у себя его реализовал.

Что касается тем, где это затрагивалось, то это:
http://www.taplap.ru/cgi-bin/yabb/yabb. … =995175153

и

http://www.taplap.ru/cgi-bin/yabb/yabb. … =993509091

Неактивен

0    0    #3
19.10.2001 16:19

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2905
Вебсайт

Re: С чего начать создание анализатора команд

По-моему, основная сложность кроется в приведении предложения в порядок с точки зрения компьютера, т.е. чтобы ему было понятно, где глагол (это самое легкое), а где основные и вспомогательные объекты.

У меня после подобного разбора определяется, основное предназначение глагола (манипуляции с предметами, передвижение и т.п.) и передается в зависимости от этого в следующую процедуру, где происходят уже сами действия, и где текст выглядит уже примерно следующим образом:

if N1='лопата' then
   if verb='ударить' then
         if N2='кролик' then RabbitMustDie();
         elseif N2='лошадь' then HorseMustDie()
   else if verb='копать' then print('Зачем? Лучше убьем ею кролика или лошадь!')
endif;


Фразы типа: "ударить лопатой кролика", "ударить кролика лопатой", "побить лопатой кролика", будут приводить к этому блоку.

Вот...

Неактивен

0    0    #4
22.10.2001 07:36

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2905
Вебсайт

Re: С чего начать создание анализатора команд

Само собой...

Неактивен

0    0    #5
22.10.2001 15:48

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2905
Вебсайт

Re: С чего начать создание анализатора команд

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

P.S. Но все это реализуемо только тогда, когда анализатор выдал правильно разобранную на составляющие команду. То есть приходим к тому, с чего начали. К анализатору.

Неактивен

0    0    #6
23.10.2001 09:04

Olegus t.Gl.
Участник (+1073, -250)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2905
Вебсайт

Re: С чего начать создание анализатора команд

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

     Я вот, например, пишу игру на Паскале. Данные же для игры (локации, предметы, текстовые данные) подготавливаю в некой визуальной среде. Однако, чтобы избежать рутины, постепенно переношу некоторые куски кода в сами данные. Например, у меня описание локации может меняться в зависимости от значения переменной. Можно это, конечно, прописать и в Паскале, но это громоздко и пришлось бы делать это для каждой локации. Поэтому эти условия у меня вынесены в блок данных. То есть, паскалевская программа когда нужно вывести описание локации смотрит, а нет ли условий. Если есть, то в зависимости от того, какое из них выполняется, выводится то или иное описание.

     Таким образом можно постепенно перетащить много чего, и получится платформа. Но к этому времени я уже точно буду знать, что и как нужно реализовывать, чтобы эта самая платформа отвечала моим желаниям.

Неактивен

Powered by PunBB
© copyright 2001–2026 iFiction.Ru