Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #1
09.04.2011 19:09

Kephra
Участник (+1, -1)
Откуда: Украина
Зарегистрирован: 04.04.2011
Сообщений: 45

Игра пример

В примере из демонстрационной игры (http://rtads.org/man/TADSSMPL.HTM), следующая штука выходит:
Чтобы взять череп с пьедестала, нужно предварительно положить на него камень, тогда не сработает ловушка... но, если забрать только что положенный камень, ловушка так же не сработает:), ведь, по логике самого метода, при отсутствии на пьедестале объекта, вышеназванного бага, не должно быть...  Сам метод: 

Код:

 doTake(actor) =
   {
        if (self.location <> pedestal or smallRock.location = pedestal)
        {
            pass doTake;
        }
        else
        {
          "Едва ты успеваешь поднять череп, как из стен вылетает целая туча
      отравленных стрел! Ты пытаешься увернуться от них, но их слишком много!";
      die();
   }
}

Отредактировано Kephra (09.04.2011 19:52)

Неактивен

0    0    #2
02.09.2018 21:54

Антон Ласточкин
Участник (+302, -9)
Зарегистрирован: 18.09.2015
Сообщений: 148

Re: Игра пример

kepra, не читал всю переписку, но хочу немного поделиться по поводу крайнего вопроса. TADS далеко не СИ, хотя синтаксис похож. Обработчик глагола (doAction) и верификатор (verDoAction) проверяются системой, если в системе определён соответсвующий глагол (надо почитать главу "Создание новых команд" http://rtads.org/man/TADSADV.HTM#usingpredef). Посмотрим на глагол take, в advr.t есть определение:

Код:

takeVerb: deepverb
     ...
     doAction = 'Take'

Это значит, что во всех объектах сцены будет сначала проверяться прямой верификатор, со строгим синтаксисом -
verDoTake(actor) и если он не выдаёт строки, то будет срабатывать метод doTake(actor).
Аргумент actor подставляет сама система. Например, ты вводишь команду "взять череп", тогда подставляется вместо actor объект главного героя Me. Если написать "пьедестал, возьми череп", то тогда (если бы он был живым и разрешалось командовать), вместо actor подставился бы этот объект.
Все это к чему, надо понимать глагол какого типа используется и какой синтаксис верификаторов и реакций применять, иначе движок может отвалиться или проигнорирует объявление метода.

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru