Popis předmětů
Po identifikátoru spade
a třídě Thing
následují vlastnosti vocabWords
(robustní lopata) a name
(lopata). Za nimy je nastavení vlastnosti gender
(*3). Na konci definice objektu jsou zadány další pády pro název objektu gcName
a pro slovník parseru gcVocab
.
spade: Thing 'robustní lopata' 'lopata' *3 "Je to robustní lopata s širokou železnou čepelí a dřevěnou násadou. " iobjFor(DigWith) { verify() {} check() {} } gcName = 'lopaty, lopatě, lopatu, lopatě, lopatou' gcVocab = 'lopaty/lopatě/lopatu/lopato/lopatou' ;
Mluvnický rod
Vlastnost gender
Určuje mluvnický rod objektu. V původní anglické knihovně k tomu sloužily vlastnosti isHim
a isHer
a jimy se určoval rod u živých objektů. Všechny neživé v angličtině jsou prostě a jednoduše "it". V češtině jsou rody rozděleny i neživým objektům a tak se musejí nastavovat skoro všem objektům. Proto je v české knihovně nová vlastnost gender
s číselně zakódovaným významem.
A aby bylo nastavení rodu ještě stručnější, jsou upravené šablony pro zadávání objektů tak, že číselně zakódovaný rod se u nich dá nastavit pomocí hvězdičky a čísla umístěné mezi název objektu a jeho popisek, jak je naznačeno v příkladu výše. Zadáním *3
u definice lopaty říkáme, že lopata je rodu ženského.
gender | mluvnický rod |
---|---|
1 | mužský životný |
2 | mužský neživotný |
3 | ženský |
4 | střední |
Různé rody synonym pro jeden objekt
Za ohlášení problému děkuji Tekketovi
Zajímavá zapeklitost češtiny je, že objekt má často synonyma v jiném rodu, než je definován. To se v tuto chvíli projeví ve zprávě u některých akcí. […] Praktický příklad výše zmíněného (objekt lze referovat jako chata/dům/budova - a klidně by se dalo třeba stavení:)
>udeř dům Na ni nemůžeš zaútočit.
K tomuto účelu je k dispozici vlastnost changeGender
, pomocí níž se zadá podřetězec, který když je obsažen v zadaném slově, tak se změní výchozí rod objektu na uvedený:
+ Enterable -> (outsideCottage.in) 'hezká hezký malá malý chata/dům/budova' 'hezká malá chata' *3 "Je to přesně ten typ hezké malé chaty, o které si lidé z města nechávají zdát. Kolem dveří rostou růže a světlo do chaty vniká oknem, s čerstvě natřeným rámem na zeleno. " changeGender = 'dům:2, dom:2' // dům na rozdíl od chaty a budovy je rod mužský gcName = 'hezké malé chaty, hezké malé chatě, hezkou malou chatu, hezké malé chatě, hezkou malou chatou' gcVocab = 'hezkému hezkém hezkým malé malou malého malému malém malým chaty/ chatě/chatu/chato/chatou/domu/dome/domem/budovy/budově/budovu/budovo/ budovou' ;
Název objektu
Vlastnost name
Pojmenovává objekt v prvním pádu. Další pády se zadávají vlastnostmi nameKohoCeho, nameKomuCemu, nameKohoCo, nameKomCem a nameKymCim. Všechny tyto vlastnosti do zdrojového kódu přidá podle prvního pádu automatický generátor.
Vlastnost vocabWords
Představuje slovník, na který hra reaguje, když čte vstup od hráče. Inicializace vocabWords funguje stejně, jako v angličtině. Autor by měl zadat tvar v prvním pádě a ostatní pády se doplní níže pomocí vlastnosti gcVocab.
Skloňování
V angličtině se zadává jen jeden název objektu a místo skloňování se upravuje stavba věty. Čeština oproti tomu má sedm pádů a v různých situacích jsou potřeba ve větách názvy objektů v různý pádech. Mnoho českých textových her na to hřeší a zjednodušuje si situaci tím, že používá čtvrtý pád ve výstupu ("Sebral jsi lopatu") i očekává na vstupu (">prozkoumej lopatu").
V TADS takovéto kompromisy dělat nejde, i kdybychom chtěli. Knihovní hlášky jsou tak variabilní, že formulovat je všechny v jediném pádu vůbec nejde. Proto je u každého objektu nutné vyjmenovat všechny pády pro název objektu i pro slovník parseru.
Ve vzdálenější budoucnosti by mohl vzniknout nějaký nástroj, který se skloňováním pomůže. S něčím experimentuji, ale k robustnímu řešení to má zatím hodně daleko.
Vlastnost gcName
Definuje skloňování názvu objektu. Je tak doplňkovou vlastností k vlastnosti name
. Zatímco do name
se zadáná jen první pád, do gcName zadáme druhý, třetí, čtvrtý, šestý a sedmý pád oddělené čárkou.
Vlastnost gcVocab
Definuje ostatní pády pro slovník parseru. Formát zadávání je zcela shodný s vlastností vocabWords
, prostě se do něj zadají ostatní pády kromě prvního.