Jeu en CLIPS

Fermé
titme - 24 avril 2011 à 17:36
 titme - 24 avril 2011 à 17:52
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))

Si qqu'un aurait une idée qu'il se manifeste :D
A voir également:

1 réponse

Le jeu est un jeu africain appelé awalé ^^

http://s.helan.free.fr/awale/regles/
0