-
Notifications
You must be signed in to change notification settings - Fork 0
/
util.mli
31 lines (25 loc) · 1.12 KB
/
util.mli
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
(* describes the current state of a cell
* Player of x means that the cell is occupied by a player's actual vehicle
* Trail of x means the cell is occupied by the trail of the player x
* Wall means the cell is actually a wall and cannot be penetrated
* Empty means there is nothing occupying the cell and it can be moved through
* Food means there is food in that cell
*)
type cell_status = Player of int | Trail of int | Wall | Empty | Food
(*
We will use an x, y coordinate system describing the positions of players, etc.
The origin will be at the center of the board
*)
type cell = int * int
(* Directions the players can move in *)
type direction = Up | Down | Left | Right
(* Applies vector addition to two given cells *)
val add_cells: int * int -> int * int -> int * int
(* Returns the vector direction of the direction given *)
val vector_of_direction: direction -> int * int
val direction_of_string: string -> direction
val string_of_direction: direction -> string
val json_of_cell: cell -> Yojson.Basic.json
val cell_of_json: Yojson.Basic.json -> cell
val cell_to_tuple : cell -> int * int
val unwrap: 'a option -> 'a