Forum.iFiction.Ru

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

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

Вы не зашли.

Объявление

Перечень игр КРИЛ 2018 открыт! Можно играть, оставлять комментарии и ставить оценки!

   #1
19.12.2014 08:18

Cheshire
Участник (+104, -11)
Зарегистрирован: 01.07.2009
Сообщений: 322

«Ловко орудуя топором, вы разрубили все ваши монеты пополам. Теперь у вас в два раза больше золота».
Морыч

Rinform. Именование объектов.

Код:

casegen [ beg end csID;
    return ICVowel (csID, beg, end, 'о', 0);
]

Это код, обрабатывающий беглую гласную. В ваших случаях это «о» и «е».

Попробуйте следующие исправления:

Код:

Object flint "кус/о/к/ кремня" plato
    has male,
    with name 'кремн' 'кремен' 'минерал',
    description "Он очень острый!",
    casegen [ beg end csID;
        return ICVowel (csID, beg, end, 'о', 0);
    ];

Object stone "кам/е/н/ь" plato
    has male, 
    with name 'камен' 'камн',
    description "Это небольшой и гладкий булыжник.",
    casegen [ beg end csID;
        return ICVowel (csID, beg, end, 'е', 0);
    ];

Косые черты отделяют изменяемые части слова от неизменяемых.

Отредактировано Cheshire (19.12.2014 08:18)

Активен

   #2
19.12.2014 08:26

Cheshire
Участник (+104, -11)
Зарегистрирован: 01.07.2009
Сообщений: 322

«Ловко орудуя топором, вы разрубили все ваши монеты пополам. Теперь у вас в два раза больше золота».
Морыч

Re: Rinform. Именование объектов.

Но. У меня частенько были проблемы с такой обработкой беглых гласных. И когда в очередной раз я не смог с ней справиться, просто написал функцию, перечисляющую все возможные падежные формы (TADS-style). Но для этого пришлось править библиотеку.
Если не получится справиться стандартными методами, могу выложить код.

Активен

   #3
19.12.2014 10:10

Cheshire
Участник (+104, -11)
Зарегистрирован: 01.07.2009
Сообщений: 322

«Ловко орудуя топором, вы разрубили все ваши монеты пополам. Теперь у вас в два раза больше золота».
Морыч

Re: Rinform. Именование объектов.

Свойство объекта «name» — это массив, в котором перечисляются все текстовые строки, по которым игрок будет обращаться к этому объекту. При этом, здесь нужно описывать только неизменяемые части слова, окончания программа вроде как распознает сама (случай с беглыми гласными — исключение). Однако, когда объект описывается двумя словами, начинаются проблемы при распознавании. Реакция часто непредсказуемая. Может, нужно было поглубже изучить библиотеку, не знаю.

А вот в этой части кода: «Object flint "кус/о/к/ кремня" plato» и в функции «casegen» описывается то, как программа будет сама называть объект в системных сообщениях.

Vladimir написал:

Вставил ваш код, заработало, спасибо. Но, не понимал команду ВЗЯТЬ КУСОК. Когда добавил 'кус' к 'кремн' 'кремен' 'минерал', то программа стала на команду
ВЗЯТЬ КУСОК КРЕМНЯ выводить "Чем вы хотите взять кусок кремня из?".

Попробуйте свойство «name» у куска кремня написать следующим образом:

Код:

with name 'кусок' 'куск' 'кремня' 'минерал',

В словосочетании ведь меняется только «кусок». «Кремня» остаётся всегда неизменным.

Отредактировано Cheshire (19.12.2014 10:29)

Активен

Powered by PunBB
© copyright 2001–2018 iFiction.Ru