Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #1
14.04.2008 11:59

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

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

Типизация действий по видам чувств

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

Идея проста:
Классифицировать на уровне парсера действия по видам чувств:
- зрение,
- слух,
- осязание,
- обоняние,
- вкус, (под вопросом…)
+ 6-е чувство (для экстрасенсорных воздействий)
+ чувство собственности (возможность манипулирования предметами)

Для объектов-контейнеров устанавливаем флаги:
- непрозрачность - нельзя видеть предмет,
- звукоизоляция – нельзя слышать предмет,
- невозможность потрогать предмет,
- герметичность для запахов – нельзя понюхать предмет
- невозможность попробовать на вкус (очевидно= невозможности потрогать предмет)
- экстрасенсорная непрозрачность (а надо ли? вероятно для этого типа действий преград нет)
- является собственником – владелец не дает брать и использовать предметы.

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

Для стеклянной витрины разрешаем осматривать предмет внутри витрины (возможно, нюхать и слушать).
При попытке потрогать или взять предмет, будет выдаваться сообщение: «предмет недоступен»

Для завязанного мешка оставляем возможность прощупать предмет внутри мешка.

Для предмета внутри металлического сейфа оставляем только экстрасенсорные воздействия. Для прочих действий будут выдаваться сообщения: «ты не видишь это здесь», «ничего не слышно», «ничем не пахнет», «предмет недоступен»

Для NPC устанавливаем флаг собственника. При попытке взять у владельца предмет выдается сообщение: «NPC_Name не даст тебе это».

При описании действий, автор явно указывает парсеру, к какому типу это действие относится.
Примеры:
Действие «Осмотреть» - зрение
Действие «Взять» - собственность + возможность потрогать
Действие «Украсть» - возможность потрогать
Действие «Кинуть в …» - зрение (можно кинуть в то, что видишь)

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

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

Неактивен

0    0    #2
14.04.2008 17:27

Gesperid
Участник
Зарегистрирован: 25.02.2005
Сообщений: 106

Re: Типизация действий по видам чувств

noname написал:

все поскипано

Собственно, обыкновенное ООП (хы, ОООП), как в ТАДС, например.

Неактивен

0    0    #3
18.04.2008 15:35

Gesperid
Участник
Зарегистрирован: 25.02.2005
Сообщений: 106

Re: Типизация действий по видам чувств

ASBer написал:

Для определения возможности выполнения действия потребуется проверить свойства всех контейнеров на пути от персонажа до объекта!
Задача нетривиальна даже для опытного программиста smile

А что именно нетривиально?

Отредактировано Gesperid (18.04.2008 15:35)

Неактивен

0    0    #4
18.04.2008 16:43

Gesperid
Участник
Зарегистрирован: 25.02.2005
Сообщений: 106

Re: Типизация действий по видам чувств

ASBer написал:

1. построить путь от персонажа к объекту на объектном дереве локации.
2. проверить свойства объектов-контейнеров на пути от персонажа к объекту.
3. не забыть учесть все возможные варианты (например объект внутри персонажа)
4. все это повторить для каждого действия.
5. нигде не ошибиться.
6. все это на простейшем языке, изначально ориентированном на "непрограммистов".
помоему уже страшно... smile

Первые 5 пунктов не разделяю, и нетривиальности в них не вижу:) А 6-ой справедлив только при отсутствии в языке средств огранизации циклов и какого-нибудь подобия списков. Если в языке это есть, то решение - банальный поиск на графе.
Автору же, в большинстве случаев, нет необходимости вникать в реализацию алгоритмов стандартной библиотеки, достаточно иметь представление об её интерфейсе.

Неактивен

Powered by PunBB
© copyright 2001–2022 iFiction.Ru