Les règles
Les règles sont la base du système expert. Il existe un ensemble d'informations que nous pouvons connaître sur le monde du jeu, les autres joueurs, etc. Ces renseignements sont appelés le contexte. Nous pouvons évaluer le contexte à l'aide de règles jusqu'à ce qu'un ensemble de conditions soit vérifié et nécessite une action (ou plutôt une réaction) du JGO. Ces actions peuvent être, par exemple, entraîner une unité, rechercher une technologie, ou bien envoyer un message.
Définition d'une règle :
* Les règles sont définies dans un script avec l'instruction
defrule. La syntaxe pour définir une règle est la suivante :
(defrule
(conditions à vérifier)
=>
(déclencher les actions)
)
* Si les conditions sont vérifiées (True), les instructions (actions) de cette
règle sont exécutées. Si les conditions ne sont pas vérifiées (False), les
instructions sont ignorées.
Exemple :
(defrule
(cheats-enabled)
=>
(chat-to-all "Le mode tricheur est activé !")
)
* Vous noterez que les parenthèses autour de la règle sont indispensables,
cependant les caractères de formatage blancs (espaces, tabulations, ...) ne
sont pas importants.
* Les règles continuent d'être évaluées tant qu'elles n'ont pas été
désactivées. La désactivation d'une règle est exécutée par la commande
disable-self.
Exemple :
(defrule
(True)
=>
(disable-self)
)
* Le test de l'ensemble des règles d'un bout à l'autre de la liste est appelé
un passage de règles. Ce système est très efficace, les règles peuvent être
contrôlées plusieurs fois par seconde.
* Les lignes de commentaire : Vous verrez souvent des commentaires dans les
fichiers de script IA. Ces commentaires commencent par un point virgule (;).
Tout texte suivant un point virgule sur une ligne est un commentaire et est
ignoré dans le script.
Exemple :
;Ceci est une ligne de commentaire
(defrule
(food-amount greater-than 75)
=>
(train villager) ; On peut écrire des commentaires en fin de ligne aussi !
)
Une fois les règles définies, vous pouvez combiner l'ensemble des informations de contexte et la totalité des actions disponibles pour faire n'importe quelles actions possibles dans le jeu.