File: main.ml

package info (click to toggle)
obrowser 1.1%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 3,216 kB
  • ctags: 3,498
  • sloc: ml: 13,505; makefile: 343; sh: 11
file content (53 lines) | stat: -rw-r--r-- 1,746 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
let int_input name value =
  let res = Js.Fragment.create () in
    Js.Fragment.append res (Js.Node.text name) ;
    let input = Js.Node.element "input" in
      Js.Node.set_attribute input "type" "text" ;
      Js.Node.set_attribute input "value" (string_of_int !value) ;
      Js.Node.register_event input "onchange"
	(fun () ->
	   (value :=
	      try
		int_of_string (Js.Node.get_attribute input "value")
	      with _ -> !value) ;
	   Js.Node.set_attribute input "value" (string_of_int !value)
	) () ;
      Js.Fragment.append res input ;
      res

let button name callback =
  let res = Js.Fragment.create () in
  let input = Js.Node.element "input" in
    Js.Node.set_attribute input "type" "submit" ;
    Js.Node.set_attribute input "value" name ;
    Js.Node.register_event input "onclick" callback ();
    Js.Fragment.append res input ;
    res

let div id =
  let div = Js.Node.element "div" in
    Js.Node.set_attribute div "id" id ;
    div
      
let uid = let uid = ref 0 in fun () -> incr uid ; "caml__" ^ string_of_int  !uid

let _ =
  let main = Js.get_element_by_id "main" in
  let nbr, nbc, nbm = ref 10, ref 12, ref 15 in
    Js.Fragment.flush main (int_input "Number of columns" nbr) ;
    Js.Node.append main (Js.Node.element "br") ;
    Js.Fragment.flush main (int_input "Number of rows" nbc) ;
    Js.Node.append main (Js.Node.element "br") ;
    Js.Fragment.flush main (int_input "Number of mines" nbm) ;
    Js.Node.append main (Js.Node.element "br") ;
    Js.Fragment.flush main
      (button "nouvelle partie"
	 (fun () ->
	    let id = uid () in
	      Js.Node.append main (div id) ;
	      Js.exec
		"minesweeper.exe.uue"
		[| id ; string_of_int !nbc ; string_of_int !nbr ; string_of_int !nbm |]
	 )) ;