(* ===================================================== *)
(*      Apprentissage de la programmation avec OCaml     *)
(*      Catherine Dubois & Valérie Ménissier-Morain      *)
(*                Éditions Hermès Sciences               *)
(*                        Mars 2004                      *)
(* ===================================================== *)
(* Fichier MLSRC/CC/CC_scores/suggestion.ml              *)
(* ===================================================== *)

open Outils;;
open Representation;;
open Circuits;;
open Affichage_base;;
open Affichage_jeu;;

exception Circuit of (int*int)*(int*int);;
let détection_circuits_valides () =
  try
    for
 c = état.zone_de_jeu.débutc to état.zone_de_jeu.finc do
      for
 l = état.zone_de_jeu.débutl to état.zone_de_jeu.finl do
        for
 c' = état.zone_de_jeu.débutc to état.zone_de_jeu.finc do
          for
 l' = état.zone_de_jeu.débutl to état.zone_de_jeu.finl do
            if
 (c,l) <> (c',l') &&
              circuit_valide (c, l) (c', l') <> []
            then raise (Circuit ((c,l),(c',l')))
          done;
        done;
      done;
    done; raise Not_found
  with Circuit ((c,l),(c',l')) -> ((c,l),(c',l'));;

let suggestion () =
  état.temps_référence <- état.temps_référence-.5.0;
  try
    let ((c,l),(c',l')) =
      détection_circuits_valides () in
    let
 (x,y) = coordonnées_pièce (c,l)
    and (x',y') = coordonnées_pièce (c',l') in
    dessiner_sélection (x,y); dessiner_sélection (x',y');
    sleep 0.1;
    dessiner_désélection (x,y); dessiner_désélection (x',y');
    sleep 0.1;
    dessiner_sélection (x,y); dessiner_sélection (x',y');
    sleep 0.1;
    dessiner_désélection (x,y); dessiner_désélection (x',y')
  with Not_found -> écrire_pas_de_circuit ();;

Ce document a été traduit de LATEX par HEVEA.