Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #1
10.06.2011 21:33

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

Обработка несуществующих локаций

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

Например, в модуле меню мне сейчас приходится называть функцию "Меню.ДобавитьПункт" и вызывать её с передачей параметра — именем "объекта", например:

Код:

Пример 1:

GS 'Меню.Создать', 'МенюСундука'
GS 'Меню.ДобавитьПункт', 'МенюСундука', 'Осмотреть сундук'
GS 'Меню.ДобавитьПункт', 'МенюСундука', 'Открыть сундук'
GS 'Меню.Вызвать', 'МенюСундука'

Было бы удобнее (и нагляднее) использовать такой код:

Код:

Пример 2:

GS 'СоздатьМеню', 'МенюСундука'
GS 'МенюСундука.ДобавитьПункт', 'Осмотреть сундук'
GS 'МенюСундука.ДобавитьПункт', 'Открыть сундук'
GS 'МенюСундука.Вызвать'

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

Тут, конечно, возникают другие вопросы, например:

Поскольку каждый подобный модуль будет добавлять свой обработчик, то как прервать обработку получившейся цепочки после того, как "объект" опознан и обработан? Возвращать что-нибудь в Result? Например 0 — продолжать, не ноль — обработка завершена. И если в конце обработки платформа в Result имеет 0, то выводить "Локация не существует"…

Неактивен

0    0    #2
11.06.2011 13:15

HzD_Byte
Модератор (+1, -1)
Откуда: Далеко
Зарегистрирован: 15.04.2006
Сообщений: 271
Вебсайт

Я люблю людей

http://qsp.su

Re: Обработка несуществующих локаций

Есть же функция проверки существования локации (LOC), можно проверять наличие локации с ее помощью.

Неактивен

0    0    #3
11.06.2011 14:39

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

Re: Обработка несуществующих локаций

HzD_Byte написал:

Есть же функция проверки существования локации (LOC), можно проверять наличие локации с ее помощью.

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

Неактивен

0    0    #4
11.11.2015 10:41

void User (void)
Участник
Зарегистрирован: 11.11.2015
Сообщений: 1

Re: Обработка несуществующих локаций

да уж, было бы полезно.

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru