Déjà, pourquoi pions est une /référence/ sur un tableau? Il n'y a pas besoin.
Il te faut une fonction qui vérifie si tous les pions de 0 à n ont été enlevés. Quelque chose comme ça:
let all_removed jeu n=
let rec aux n =
if n = 0 then true
else jeu.[n]='.' && aux (n-1)
in
aux n
;; |
(tu peux aussi faire ça avec un for si tu préfères)
Note qu'avec ça, tu peux facilement tester si le joueur à gagner la partie, tu pourras ainsi enlever cet horrible tableau pions_barre
Ensuite (de préférence dans une fonction séparée) quand l'utilisateur choisit un nombre et que pion est présent il te suffit de tester la présence du pion à gauche et utiliser la fonction all_removed avec les bons arguments et tes règles seront implémentées.
Quelques remarques :
Tu aurais aussi pu utiliser une string plutôt qu'un tableau pour représenter le jeu, il n'y a pas vraiment de différence (à part que get est abrégé avec [] au lieu de (), donc tu fais pions.[i] <- '.', et qu'il faudrait utiliser String.fill pour remplir de 'O'). L'affichage serais plus simple (ce n'est franchement pas important )
Tu peux utiliser print_endline pour t'épargner tous ces fastidieux print_newline.
Pense à rajouter un simple test sur la saisie, au cas où l'utilisateur choisit un nombre trop grand pour le pion à déplacer.
Message édité par Pillow le 15-04-2005 à 18:32:52