Tvorba AI Část III. : SNka
SN - Strategic Numbers = Dělba práce
Díky sn můžete nastavit procento vesničanů kteří budou shromažďovat jídlo, dřevo,
co budou stavět, nebo prostě chodit po mapě a slídit. Zároveň udáváte kolik vojáků
zůstane doma a kolik půjde do boje atd ...
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
~ Složení SN :
(defrule
(sn-food-gatherer-percentage < 50)
; Pracuje-li na jídlu méně jak 50% vesničanů.
=>
(set-strategic-number sn-food-gatherer-percentage 50)
; Pak nastav aby pracovalo 50%.
)
Stejně tak by se dalo nastavit třeba toto :
(defrule
(food-amount < 100)
; Zásoby jídla jsou menší než 100.
(sn-food-gatherer-percentage < 50)
; Na jídlu pracuje míň jak 50% vesničanů.
=>
(set-strategic-number sn-food-gatherer-percentage 50)
; Ať jich 50% pracuje na jídle
)
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
~ Zajisté neuškodí ani ukázka kombinace :
Chceme-li například aby v tobě temna vesničani makali jen na jídle a dřevě (+jeden stavěl)
a máme jich 10, nastavíme to takto :
(defrule
(players-current-age 1 == dark-age)
=>
(set-strategic-number sn-food-gatherer-percentage 60)
(set-strategic-number sn-wood-gatherer-percentage 30)
(set-strategic-number sn-percent-civilian-builders 10)
)
To nám zatím jako základ SN postačí.
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
~ Nyní se naučíme další vychytávky, aby náš postup do druhé doby byl co
nejhladší :
(players-current-age 1 == dark-age)
; Podmínka použitá výše. (Je-li hráč <číslo hráče> v době <doba>)
Jelikož nám budovy jako mlýn a pilu stavěl automat v podstatě kdekoliv, chtělo by to
dát do podmínky něco jako :
(resource-found <resource-type>)
; Jsou-li nalezeny místa k získání surovyny
A protože Vás určitě taky štvou vlci a jiná havěť, tak si vylepšíme vesničany:
(research <research-item>)
; Provede výzkum, vylepšení (V našm případě ri-loom (cpsb 50))
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
~ Postup do feu 2. verze :
Poupravíme si díky podmínkám postup stavění budov. Zakombinujem všechny naše momentální znalosti,
a vyjde nám z toho zhruba tento kód :
(defrule
(civilian-population >= 5)
(can-research ri-loom)
=>
(research ri-loom)
)
(defrule
(civilian-population < 10)
(can-train villager)
=>
(train villager)
)
(defrule
(players-current-age 1 == dark-age)
=>
(set-strategic-number sn-food-gatherer-percentage 60)
(set-strategic-number sn-wood-gatherer-percentage 30)
(set-strategic-number sn-percent-civilian-builders 10)
)
(defrule
(building-type-count lumber-camp < 1)
(building-type-count mill == 1)
(building-available lumber-camp)
(resource-found wood)
=>
(build lumber-camp)
)
(defrule
(building-type-count house >= 1)
(building-type-count mill < 1)
(building-available mill)
(resource-found food)
=>
(build mill)
)
(defrule
(building-type-count house < 2)
(building-available house)
=>
(build house)
)
(defrule
(can-research feudal-age)
=>
(research feudal-age)
)
Přepište tímto předchozí syntaxe v našem per souboru a vyzkoušejte to v praxi !
Pokud vše funguje, je to paráda a my můžem na další lekci.
Kdo tomu nerozumí, ať se vrátí na začátek! Už to bude jen složitější...
A nyní hurá na řetězce !!!
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
~ Bombónek na závěr :
Kdo trochu rozumí o čem je řeč, tak už jistě i procitl a zná odpověď na starou dobrou otázku :
Bože, ten počítač je blbej, já ho ničim jako sviň a on si místo kasáren pořád staví
absolutně nepotřebnou desátou pilu...
~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
<
^
>
|