Bonjour,
voila j'essaye de programmer un jeu, ici le but de la règle est de distribuer les graines d'un puit une à une dans les puits précedent ( ex: on prend les 4graines dans le puit numéro 12 qu'on distribue une à une dans les puits 11, 10, 9, 8). cependant mon programme fixe la valeur du nombre de graines du puit 11 pour tous les autres puits alors qu'il ne contiennent pas forcement le mm nombre de graines...
(deftemplate puit
(slot id(type INTEGER)(range 1 12))
(slot graines (type INTEGER)(range 0 48))
)
(deftemplate joueur
(slot id (type INTEGER)(range 1 2))
(slot joue (type SYMBOL)(allowed-symbols non oui))
(slot gain ( type INTEGER) (range 0 48))
(multislot puits (type INTEGER))
)
(deffacts bf
(puit (id 1)(graines 4))
(puit (id 2)(graines 4))
(puit (id 3)(graines 4))
(puit (id 4)(graines 4))
(puit (id 5)(graines 4))
(puit (id 6)(graines 4))
(puit (id 7)(graines 4))
(puit (id 8)(graines 4))
(puit (id 9)(graines 4))
(puit (id 10)(graines 3))
(puit (id 11)(graines 5))
(puit (id 12)(graines 4))
(joueur (id 1)(gain 0)(puits 1 2 3 4 5 6))
(joueur (id 2)(gain 0)(puits 7 8 9 10 11 12))
)
(defrule distribution_graine
?p<-(puit (id 12)(graines 4))
?m<-(puit (id ?o &:(= ?o (- 12 1)))(graines ?b))
=>
(bind ?j 1)
(while (<= ?j 4) do
(bind ?j (+ ?j 1))
(bind ?b2 ?b)
(bind ?b2 (+ ?b2 1))
(modify ?m (id ?o)(graines ?b2))
(bind ?o (- ?o 1))
)
(modify ?p (graines 0))
)
et voila ce que j'obtiens :
(puit (id 11)(graines 6))
(puit (id 10)(graines 6))
(puit (id 9)(graines 6))
(puit (id 8)(graines 6))
(puit (id 12)(graines 0))
et j'aimerais obtenir:
(puit (id 11)(graines 6))
(puit (id 10)(graines 4))
(puit (id 9)(graines 5))
(puit (id 8)(graines 5))
(puit (id 12)(graines 0))
Trouvez des réponses à vos questions sur les langages, les frameworks et les astuces de codage. Échangez avec d'autres développeurs passionnés pour améliorer vos compétences en programmation et rester au fait des dernières tendances du secteur.