Podejście% atakujący% można rozszerzyć, aby zawierało pewne informacje inne niż tylko nazwy obiektów:
- Czasownik może być w liczbie pojedynczej lub mnogiej. To zależy od tematu. „Ty zaatakować X” (liczba pojedyncza 2. osoba podlega) vs. „Extrakun ataki X” (liczba pojedyncza 3 osoba podlega) vs. „Gobliny atakują X” (liczba mnoga 3 osoba podlega). Większość czasowników wymaga tylko
-s
dodania, ale jest kilka wyjątków.
- Rzeczownik może być rzeczownikiem właściwym („ Goblin atakuje X”) lub rzeczownikiem zwyczajnym („ Goblin atakuje X”). Typowe rzeczowniki zaczynające się od dźwięku samogłoskowego powinny używać „an” zamiast „a”. Może to być rzeczownik pospolity, ale w obecnym kontekście ma tylko jedną instancję („ Goblin atakuje X”).
- Rzeczownik może mieć różną liczbę, od zera („Nie trafiłeś goblinów ”) do jednego („ Uderzyłeś jednego goblina ”) do wielu („ Uderzyłeś w trzy gobliny ”). Wiele rzeczowników potrzebuje
-s
lub -es
dodaje, ale istnieje wiele wyjątków.
- Podmioty i przedmioty mogą być proste („ Goblin ”) lub złożone („ Goblin i jej brat ”).
- Rzeczowniki pospolite na początku zdania muszą być pisane wielkimi literami, ale jeśli rzeczownik ma artykuł lub jest złożonym, chcesz używać tylko pierwszego słowa. Właściwe rzeczowniki są zawsze pisane wielką literą.
- Stanowisko przedmiotem ( „ She hit goblin«) i położenie obiektu (»Goblin uderzył ją ”) stosują różne zaimki.
- Własności można generować, dodając,
's
jeśli liczba pojedyncza („ Siekiera goblina ”), '
jeśli liczba mnoga („Dwie osie goblinów ”), ale zaimki mają swoje własne reguły („ Twoja siekiera”).
W języku angielskim napisałem w Pythonie bibliotekę do generowania tekstu pochodzącą z MUD o nazwie JaysHouseMOO. Zachęcamy do przestudiowania lub skopiowania kodu . Nie ma dobrej biblioteki wyjątkowych przypadków; musisz dodać to do słów użytych w grze. Obawiam się, że mój przeniesiony kod nie został dokładnie przetestowany. Może także wymagać dodania większej liczby skrzynek do gier (został zaprojektowany dla MUD społecznościowego, a nie MUD do gier).
Twój przykład zostałby zapisany jako "%1I %1:(inflicts) a serious wound (%2n damage) on %3i"
. Liczby %1
, %2
, %3
powiedzieć to obiekt, który ma być podstawione; I
/ i
powiedz mu, aby w razie potrzeby dodał pośredni artykuł („a”, „an”); n
każe wyświetlać rzeczownik bez artykułów; :(inflicts)
każe skoniugować czasownik dla tego obiektu.
Oto wyniki, które można pokazać atakującemu, obrońcy i wszystkim innym:
$ python
>>> import msg
>>> m = "%1I %1:(inflicts) a serious wound (%2n damage) on %3i."
>>> attacker = msg.GenderedObject('Amit', 'm', 'proper')
>>> defender = msg.GenderedObject('goblin', 'm', 'unique')
>>> points = (12, 'point')
>>> msg.Msg().sub_parties({1: attacker, 2: points, 3: defender},
m, [attacker, defender])
(['You inflict a serious wound (12 points damage) on the goblin.',
'Amit inflicts a serious wound (12 points damage) on you.'],
'Amit inflicts a serious wound (12 points damage) on the goblin.')
Zauważ, że jeśli go podałeś, (1, 'point')
wydrukowałby „1 punkt” zamiast „1 punktu”. Jest to coś, co wkurza mnie w tekście gry, więc zadbałem o to, aby ułatwić sobie prawidłowe drukowanie.
Oto inny przykład z rzeczownikami złożonymi i „a” vs. „an”:
>>> m = "%1I %1:(hits) %2'n %2'(head)."
>>> a1 = msg.GenderedObject('goblin', 'm', 'normal')
>>> a2 = msg.GenderedObject('orc', 'm', 'normal')
>>> d1 = msg.GenderedObject('Amit', 'm', 'proper')
>>> d2 = msg.GenderedObject('Extrakun', 'm', 'proper')
>>> msg.Msg().sub_parties({1: [a1, a2], 2: [d1, d2]}, m, [d1, d2])
(["A goblin and an orc hit your and Extrakun's heads.",
"A goblin and an orc hit Amit's and your heads."],
"A goblin and an orc hit Amit's and Extrakun's heads.")
Przykłady te są w języku angielskim i obejmują tylko męskie / żeńskie, zaimki, czasowniki / rzeczowniki w liczbie pojedynczej / mnogiej oraz rzeczowniki właściwe / pospolite. To, co musisz śledzić, będzie się różnić w zależności od języka i rodzaju tekstu w grze. W języku hiszpańskim istnieją zaimki formalne i nieformalne. Kilka języków ma męskie i żeńskie formy czasowników. Zaimki japońskie zależą od statusu podmiotu w stosunku do obiektu. W niektórych językach koniugacja czasownika może domyślnie obejmować temat. Określ wszystkie rodzaje tekstu, który chcesz wygenerować, oraz języki, na które chcesz tłumaczyć, a to powie ci, co musisz śledzić w obiektach gry. Podczas tworzenia treści możesz dołączyć niezbędne adnotacje i wyjątkowe przypadki.