(* ===================================================== *)
(* Apprentissage de la programmation avec OCaml *)
(* Catherine Dubois & Valérie Ménissier-Morain *)
(* Éditions Hermès Sciences *)
(* Mars 2004 *)
(* ===================================================== *)
(* Fichier MLSRC/CC/CC_scores/highscores.ml *)
(* ===================================================== *)
open Representation;;
open Graphics;;
open Affichage_jeu;;
open Saisie;;
let mise_à_jour_tableau_scores scores =
let len = Array.length scores in
if état.score > snd (scores.(len-1)) then
begin
let i = ref 0 in
while !i < len && snd (scores.(!i)) >= état.score do
incr i
done;
for j = len-2 downto !i do
scores.(j+1) <- scores.(j)
done;
scores.(!i) <- (lecture_nom (), état.score)
end;;
let écrire_centré_largeur_fixée w h nom score =
let (ws,hc)= text_size score in
let espace = (size_x()-w)/2 in
moveto espace (h-hc/2); draw_string nom;
moveto (size_x()-espace-ws) (h-hc/2); draw_string score;;
let affichage_meilleurs_scores scores =
clear_graph();
set_font "-*-courier-bold-r-normal--18-*";
set_color foreground;
écrire_centré_fenêtre (size_y()*9/10) "Meilleurs scores";
Array.iteri
(function i -> function (nom, score) ->
let w = size_x()*3/5 in
let h = (size_y()*2/3-(size_y()/20)*i) in
écrire_centré_largeur_fixée w h nom (string_of_int score))
scores;;
let lire_fichier_scores () =
try
let d = open_in_bin "scores" in
let scores = input_value d in
close_in d;
scores
with
| End_of_file | Sys_error _ -> Array.make 10 ("", 0);;
let écrire_fichier_scores tableau_scores =
let d = open_out_bin "scores" in
output_value d tableau_scores;
close_out d;;
Ce document a été traduit de LATEX par
HEVEA.