% Saldırgan% yaklaşımı, yalnızca nesnelerin adları dışında bazı bilgileri içerecek şekilde genişletilebilir:
- Fiil tekil veya çoğul olabilir. Bu konuya bağlıdır. " X'e saldırıyorsun " (2. tekil şahıs nesnesi) ve "Extrakun X'e saldırıyor " (tekil 3. şahıs nesnesi) vs. "Goblinler X saldırısı " (çoğul 3. şahıs nesnesi). Fiillerin çoğunun
-s
eklenmesi gerekir, ancak birkaç istisna vardır.
- İsim uygun bir isim (" Goblin X saldırıları") veya ortak bir isim (" Goblin X saldırıları") olabilir. Sesli harfle başlayan yaygın isimler "a" yerine "an" kullanmalıdır. Yaygın bir isim olabilir, ancak mevcut bağlamda yalnızca bir örneği olabilir (" Goblin X'e saldırır").
- İsim, sıfırdan (" Goblinlere çarpmadınız ") bire (" Bir goblin vurdunuz ") ile çoğuna (" Üç goblin vurdunuz ") kadar sayı olarak değişebilir . Birçok ismin sadece bir
-s
veya -es
eklenmesi gerekir, ancak birçok istisna vardır.
- Özneler ve nesneler basit (" Bir cin ") veya bileşik (" Bir cin ve erkek kardeşi ") olabilir.
- Cümlenin başındaki yaygın isimlerin büyük harfle yazılması gerekir, ancak ismin bir makalesi varsa veya bileşik ise, sadece ilk kelimeyi büyük harfle yazmak istersiniz. Özel isimler daima büyük harfle yazılır.
- Konu konumu (" Goblin'e çarptı") ve nesne konumu ("Goblin ona çarptı ") farklı zamirler kullanır.
- İyelik ekleyerek oluşturulabilir
's
eğer tekil ( "Bir cinin balta"), '
çoğul ( "İki eğer gulyabanilerin eksenleri '), ancak zamirler (' kendi kuralları vardır Sizin balta").
İngilizce için Python'a JaysHouseMOO adlı bir MUD'dan türetilmiş bir metin oluşturma kütüphanesi yazdım. Kodu incelemek veya kopyalamaktan çekinmeyin . İstisnai durumlar için iyi bir kütüphaneye sahip değildir; bunu oyununuzda kullanılan kelimelerle eklemeniz gerekecek. Korkarım taşınan kodum kapsamlı bir şekilde test edilmedi. Oyunlar için daha fazla vakanın eklenmesi gerekebilir (oyun MUD'si için değil, sosyal bir MUD için tasarlanmıştır).
Örneğiniz olarak yazılır "%1I %1:(inflicts) a serious wound (%2n damage) on %3i"
. Sayılar %1
, %2
, %3
ikame edilecek olan nesne söylemek; I
/ i
gerekirse dolaylı bir makale ("a", "an") eklemesini söyleyin; n
isme makalesiz olarak gösterilmesini söyler; :(inflicts)
o nesnenin fiilini çekiştirmesini söyler.
İşte saldırgana, defans oyuncusuna ve diğer herkese gösterilecek çıktı:
$ 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.')
Eğer vermiş (1, 'point')
olsaydınız "1 puan" yerine "1 puan" yazdıracağını unutmayın. Bu beni oyun metninde rahatsız eden bir şey, bu yüzden düzgün bir şekilde yazdırmayı kolaylaştırmak için bir özellik ekledim.
Bileşik isimler ve "a" ve "an" içeren başka bir örnek:
>>> 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.")
Bu örnekler İngilizcedir ve yalnızca erkek / kadın, zamirleri, tekil / çoğul fiilleri / isimleri ve doğru / ortak isimleri izler. İzlemeniz gerekenler dillere ve oyununuzdaki metin türüne göre değişir. İspanyolca'da resmi ve gayri resmi zamirler vardır. Birçok dilde eril ve dişil fiiller vardır. Japon zamirleri, nesnenin nesneye göre durumuna bağlıdır. Bazı dillerde fiil çekimi , konuyu dolaylı olarak içerebilir. Oluşturmak istediğiniz tüm metin türlerini ve çevirmek istediğiniz dilleri belirleyin ve bu size oyun nesnelerinizde neyi izlemeniz gerektiğini söyleyecektir. İçeriği oluştururken, gerekli ek açıklamaları ve istisnai durumları dahil edebilirsiniz.