draw canvas from a map
This commit is contained in:
parent
00c9c587c7
commit
7cb03b8779
2 changed files with 100 additions and 8 deletions
|
|
@ -1,3 +1,23 @@
|
|||
module Map = struct
|
||||
type background =
|
||||
| Grass
|
||||
| Water
|
||||
| Black
|
||||
|
||||
let width = 1000
|
||||
|
||||
let height = 1000
|
||||
|
||||
let player_pos = ref (500, 500)
|
||||
|
||||
let m =
|
||||
Array.init width (fun _x ->
|
||||
Array.init height (fun _y ->
|
||||
if Random.int 1000 = 42 then Water else Grass ) )
|
||||
|
||||
let get_tile_kind ~x ~y = try m.(x).(y) with Invalid_argument _ -> Black
|
||||
end
|
||||
|
||||
let tile_size = 40
|
||||
|
||||
let width = 835
|
||||
|
|
@ -33,19 +53,63 @@ let orig_y = (height - (tiles_per_h * tile_size)) / 2
|
|||
|
||||
let grass = Jv.get Jv.global "grass"
|
||||
|
||||
let draw_background () =
|
||||
let papy_bottom = Jv.get Jv.global "papy_bottom"
|
||||
|
||||
let water = Jv.get Jv.global "water"
|
||||
|
||||
let draw_map () =
|
||||
let player_x, player_y = !Map.player_pos in
|
||||
Format.printf "player_x = %d@\nplayer_y = %d@\n" player_x player_y;
|
||||
for x = 0 to tiles_per_w - 1 do
|
||||
let mapx = x + player_x - (tiles_per_w / 2) in
|
||||
for y = 0 to tiles_per_h - 1 do
|
||||
let mapy = y + player_y - (tiles_per_h / 2) in
|
||||
let img =
|
||||
match Map.get_tile_kind ~x:mapx ~y:mapy with
|
||||
| Grass -> grass
|
||||
| Water -> water
|
||||
| Black -> water
|
||||
in
|
||||
let (_ : Jv.t) =
|
||||
Jv.call context "drawImage"
|
||||
[| grass
|
||||
[| img
|
||||
; Jv.of_int (orig_x + (x * tile_size))
|
||||
; Jv.of_int (orig_y + (y * tile_size))
|
||||
|]
|
||||
in
|
||||
()
|
||||
done
|
||||
done
|
||||
done;
|
||||
let (_ : Jv.t) =
|
||||
Jv.call context "drawImage"
|
||||
[| papy_bottom
|
||||
; Jv.of_int ((width / 2) - (tile_size / 2))
|
||||
; Jv.of_int ((height / 2) - (tile_size / 2))
|
||||
|]
|
||||
in
|
||||
()
|
||||
|
||||
let () =
|
||||
let (_ : Jv.t) =
|
||||
Jv.call window "addEventListener"
|
||||
[| Jv.of_string "load"; Jv.repr draw_map |]
|
||||
in
|
||||
()
|
||||
|
||||
(*
|
||||
let draw_background () =
|
||||
for x = 0 to tiles_per_w - 1 do
|
||||
for y = 0 to tiles_per_h - 1 do
|
||||
let (_ : Jv.t) =
|
||||
Jv.call context "drawImage"
|
||||
[| grass
|
||||
; Jv.of_int (orig_x + (x * tile_size))
|
||||
; Jv.of_int (orig_y + (y * tile_size))
|
||||
|]
|
||||
in
|
||||
()
|
||||
done
|
||||
done
|
||||
|
||||
let () =
|
||||
let (_ : Jv.t) =
|
||||
|
|
@ -53,3 +117,22 @@ let () =
|
|||
[| Jv.of_string "load"; Jv.repr draw_background |]
|
||||
in
|
||||
()
|
||||
|
||||
let draw_papy () =
|
||||
let (_ : Jv.t) =
|
||||
Jv.call context "drawImage"
|
||||
[| papy_bottom
|
||||
; Jv.of_int ((width / 2) - (tile_size / 2))
|
||||
; Jv.of_int ((height / 2) - (tile_size / 2))
|
||||
|]
|
||||
in
|
||||
()
|
||||
|
||||
let () =
|
||||
let (_ : Jv.t) =
|
||||
Jv.call window "addEventListener"
|
||||
[| Jv.of_string "load"; Jv.repr draw_papy |]
|
||||
in
|
||||
()
|
||||
|
||||
*)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue