Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type piece = King | Queen | Dvacher
- module Cell = struct
- type t = char * int
- let compare = Pervasives.compare
- end
- module DvaChess = Map.Make(Cell)
- let (>>=) = Lwt.(>>=)
- let place piece board =
- Lwt_io.(read_line_opt stdin) >>= function None -> Lwt.return board | Some command ->
- if String.length command != 2 then Lwt.return board else
- let x = String.get command 0 in
- let y = String.get command 1 |> int_of_char in
- board |> DvaChess.add (x,y-46) piece |> Lwt.return
- let show board =
- DvaChess.fold (fun (x,y) piece nil ->
- let piece = match piece with
- | King -> "King" | Queen -> "Queen" | Dvacher -> "Dvacher"
- in
- nil >>= fun () -> Lwt_io.printf "%s ( %c , %d )\n" piece x y
- ) board Lwt.return_unit >>= fun () ->
- Lwt.return board
- let rec thread board =
- Lwt_io.(read_line_opt stdin) >>= function None -> Lwt.return_nil | Some command ->
- ( match command with
- | "King" -> place King board
- | "Queen" -> place Queen board
- | "Dvacher" -> place Dvacher board
- | "Show" -> show board
- | _ -> (Lwt_io.printl "WAT" >>= fun () -> Lwt.return board)
- ) >>= thread
- let () =
- DvaChess.empty
- |> thread
- |> Lwt_main.run
- |> ignore
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement