From: Amélia Coutard-Sander Date: Mon, 16 Dec 2024 22:36:23 +0000 (+0100) Subject: Gestion propre de la fermeture de fenêtre X-Git-Url: https://git.ameliathe1st.gay/?a=commitdiff_plain;h=7579952c3a14086fd7a2bee3d3ae4287b259b917;p=cells.git Gestion propre de la fermeture de fenêtre --- diff --git a/bin/main.ml b/bin/main.ml index 09d3154..1ee164a 100644 --- a/bin/main.ml +++ b/bin/main.ml @@ -89,17 +89,20 @@ let pick f cs = Graphics.draw_rect (x - 5) (y - 5) 200 20; List.iteri (fun i -> draw_text (-i - 1)) (List.map f below); Graphics.synchronize (); - match Graphics.read_key () with - | 'z' -> ( - match above with - | [] -> aux [] curr below - | c :: cs -> aux cs c (curr :: below)) - | 's' -> ( - match below with - | [] -> aux above curr [] - | c :: cs -> aux (curr :: above) c cs) - | ' ' -> curr - | _ -> aux above curr below + if Graphics.key_pressed () + then + match Graphics.read_key () with + | 'z' -> ( + match above with + | [] -> aux [] curr below + | c :: cs -> aux cs c (curr :: below)) + | 's' -> ( + match below with + | [] -> aux above curr [] + | c :: cs -> aux (curr :: above) c cs) + | ' ' -> curr + | _ -> aux above curr below + else aux above curr below in match cs with | c :: cs -> aux [] c cs @@ -109,12 +112,14 @@ let () = Graphics.open_graph ""; Graphics.set_window_title "Automaton"; Graphics.auto_synchronize false; - let m = - pick - (fun m -> - let module M = (val m : Automata.Automaton) in - M.name) - Automata.automata - in - let module M = (val m) in - run (module M) + try + let m = + pick + (fun m -> + let module M = (val m : Automata.Automaton) in + M.name) + Automata.automata + in + let module M = (val m) in + run (module M) + with Graphics.Graphic_failure _ -> ()