[Caml] Conception de ptit jeux --> probleme!

Conception de ptit jeux --> probleme! [Caml] - Divers - Programmation

Marsh Posté le 11-04-2005 à 17:30:32    

Salut tout le monde!
Au tour de mes péripéties maintenant :-)
Donc voila, j'essaie de creer un petit jeux ( il est vrai un peut naze ) en
language Caml. Cependant pour moi le Caml est un peu étranger, c'est pour cela
que je vous demande de l'aide!
 
Donc voici son déroulement :
 
Enlever tout les pions en respectant les deux regles suivantes :            
  - On peut enlever et remettre le premier pion quand on veut    
  - On peut enlever ou remettre un piont si tout les pions le precedant              
      on ete enleve, sauf son voisin de gauche le precedant  qui doit etre present.
 
 
Cependant je suis sur qu'avec ses regles, vous ne serez pas plus avancé.... je vous présente un exemple!
 
X X X X X
---------
. X X X X
. X . X X
X X . X X
X . . X X
X . . X .
X X . X .
. X . X .
. X X X .
X X X X .
X . X X .
. . X X .
. . X . .
X . X . .
X X X . .
. X X . .
. X . . .
X X . . .
X . . . .
. . . . .
 
 
Voici le début de mon programme, mais celui-ci ne prends pas en compte les regles!
 
 
 
let play() =
let fini = ref false in
print_string "A vous de jouer";
print_newline();
print_string "Choisissez le nombre de pions\n";
let clavier = read_int() in
print_string " Vous avez choisi ";
print_int clavier;
print_string " pions";
print_newline();
let pions_barre = Array.create clavier '.' in
let pions = ref (Array.create clavier 'O') in
 
while !fini = false
do
 for i=0 to clavier-1
 do
 print_char !pions.(i)
 done;
 print_newline();
 print_string " Quel pions voulez vous deplacer? ";
 let np= ref (read_int()) in
 if !pions.(!np-1)= 'O' then !pions.(!np-1)<-'.'
 else !pions.(!np-1) <- 'O';
 if !pions = pions_barre
 then fini := true
done;
print_string " Bravo vous avez gagne!!";
print_newline();;
 
 
Si un ame charitable serait en mesure de m'aider qu'il n'hésite surtout pas!

Reply

Marsh Posté le 11-04-2005 à 17:30:32   

Reply

Marsh Posté le 15-04-2005 à 17:38:34    

Personne? Sniff, tout triste moi!
Personne n'a aucune idée pour mon projet? même pas sur le genre de structure à utiliser?

Reply

Marsh Posté le 15-04-2005 à 18:32:05    

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 :o  
 
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  [:petrus75] )
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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed