added player bombing to move_lane
This commit is contained in:
parent
003a25f4cd
commit
0bedcd7378
75
again.ml
75
again.ml
|
@ -1162,50 +1162,67 @@ let rec move_land (gd : game_data) (dgs : danger_map) (gn : int array array) =
|
||||||
let pid = gd.player_id in
|
let pid = gd.player_id in
|
||||||
let cxi = gd.players.(pid).xy.x
|
let cxi = gd.players.(pid).xy.x
|
||||||
and cyi = gd.players.(pid).xy.y in
|
and cyi = gd.players.(pid).xy.y in
|
||||||
|
let interval = Float.pow (0.9) (float_of_int gd.players.(gd.player_id).nspeed) in
|
||||||
|
|
||||||
if logg then Printf.fprintf stderr "going at (%d, %d) [score=%d]\n" xmax ymax gn.(xmax).(ymax);
|
if logg then Printf.fprintf stderr "going at (%d, %d) [score=%d]\n" xmax ymax gn.(xmax).(ymax);
|
||||||
|
|
||||||
(* try to place a bomb *)
|
try
|
||||||
let is_safe = is_empty_lst dgs.explosionTimes.(cxi).(cyi) in
|
if gd.players.(pid).bomb_to_place > 0 && Array.exists (fun (p : player) -> p.id <> pid && p.xy.x = cxi && p.xy.y = cyi) gd.players && (is_empty_lst dgs.explosionTimes.(cxi).(cyi)) then begin
|
||||||
let saved_p = simulate_bomb_deconstruct gd dgs cxi cyi gd.players.(pid).bomb_radius (gd.dt +. 5.5) in
|
if logg then Printf.fprintf stderr "go away (_2)\n" ;
|
||||||
let is_good = ref false in
|
let saved_ppl = simulate_bomb_deconstruct gd dgs cxi cyi gd.players.(pid).bomb_radius (gd.dt +. 5.5) in
|
||||||
|
let is_good_p = ref false in
|
||||||
|
let directn = bfs_for_land ~return_ok:is_good_p true gd dgs cxi cyi xmax ymax (gd.dt -. !remaining_dash *. interval) 1 80 in
|
||||||
|
if !is_good_p then begin
|
||||||
|
if logg then Printf.fprintf stderr "fire in the hole (%d)\n" directn ;
|
||||||
|
action := 1 ;
|
||||||
|
raise (ReturnInt directn)
|
||||||
|
end;
|
||||||
|
reverse_simulate_bomb dgs saved_ppl ;
|
||||||
|
end;
|
||||||
|
|
||||||
let result_bomb = bfs_for_land ~return_ok:is_good true gd dgs cxi cyi xmax ymax gd.dt 1 80 in
|
(* try to place a bomb *)
|
||||||
if is_safe && gd.players.(pid).bomb_to_place > 0 && !is_good && !action <> 2 then begin
|
let is_safe = is_empty_lst dgs.explosionTimes.(cxi).(cyi) in
|
||||||
if logg then Printf.fprintf stderr "kaboom\n" ;
|
let saved_p = simulate_bomb_deconstruct gd dgs cxi cyi gd.players.(pid).bomb_radius (gd.dt +. 5.5) in
|
||||||
action := 1 ;
|
let is_good = ref false in
|
||||||
result_bomb
|
|
||||||
end
|
|
||||||
else begin
|
|
||||||
reverse_simulate_bomb dgs saved_p ;
|
|
||||||
|
|
||||||
let res = bfs_for_land ~return_ok:is_good false gd dgs cxi cyi xmax ymax gd.dt 1 80 in
|
let result_bomb = bfs_for_land ~return_ok:is_good true gd dgs cxi cyi xmax ymax (gd.dt -. !remaining_dash *. interval) 1 80 in
|
||||||
if !is_good then begin
|
if is_safe && gd.players.(pid).bomb_to_place > 0 && !is_good && !action <> 2 then begin
|
||||||
if logg then Printf.fprintf stderr "going to kaboom\n" ;
|
if logg then Printf.fprintf stderr "kaboom\n" ;
|
||||||
res
|
action := 1 ;
|
||||||
|
result_bomb
|
||||||
end
|
end
|
||||||
else begin
|
else begin
|
||||||
if logg then Printf.fprintf stderr "no explosion ?\n" ;
|
reverse_simulate_bomb dgs saved_p ;
|
||||||
let res = bfs_for_land ~leniency:20 ~return_ok:is_good false gd dgs cxi cyi xmax ymax gd.dt 1 80 in
|
|
||||||
|
let res = bfs_for_land ~return_ok:is_good false gd dgs cxi cyi xmax ymax (gd.dt -. !remaining_dash *. interval) 1 80 in
|
||||||
if !is_good then begin
|
if !is_good then begin
|
||||||
if logg then Printf.fprintf stderr "found\n";
|
if logg then Printf.fprintf stderr "going to kaboom\n" ;
|
||||||
res
|
res
|
||||||
end
|
end
|
||||||
else begin
|
else begin
|
||||||
if logg then Printf.fprintf stderr "Needs dash lmao (_2)\n";
|
if logg then Printf.fprintf stderr "no explosion ?\n" ;
|
||||||
if !remaining_dash <> 0. && gd.players.(pid).ndash > 0 then begin
|
let res = bfs_for_land ~leniency:20 ~return_ok:is_good false gd dgs cxi cyi xmax ymax (gd.dt -. !remaining_dash *. interval) 1 80 in
|
||||||
if logg then Printf.fprintf stderr "-------------- Lets rewind time for a bit (_2) --------------\n";
|
if !is_good then begin
|
||||||
remaining_dash := 3. ;
|
if logg then Printf.fprintf stderr "found\n";
|
||||||
action := 2 ;
|
res
|
||||||
move_land gd dgs gn
|
|
||||||
end
|
end
|
||||||
else begin
|
else begin
|
||||||
if logg then Printf.fprintf stderr "Now you're screwed (_2)\n" ;
|
if logg then Printf.fprintf stderr "Needs dash lmao (_2)\n";
|
||||||
4
|
if !remaining_dash <> 0. && gd.players.(pid).ndash > 0 then begin
|
||||||
|
if logg then Printf.fprintf stderr "-------------- Lets rewind time for a bit (_2) --------------\n";
|
||||||
|
remaining_dash := 3. ;
|
||||||
|
action := 2 ;
|
||||||
|
move_land gd dgs gn
|
||||||
|
end
|
||||||
|
else begin
|
||||||
|
if logg then Printf.fprintf stderr "Now you're screwed (_2)\n" ;
|
||||||
|
4
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end ;;
|
with
|
||||||
|
| ReturnInt k -> k ;;
|
||||||
|
|
||||||
|
|
||||||
(* ---------------------------------------------------------------------------------------------------------------------------------------------------- *)
|
(* ---------------------------------------------------------------------------------------------------------------------------------------------------- *)
|
||||||
|
|
49
entrees.txt
49
entrees.txt
|
@ -1,31 +1,26 @@
|
||||||
169.0
|
250.0
|
||||||
1
|
3
|
||||||
13 21
|
13 21
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
1 3 3 3 3 6 6 6 4 4 4 4 4 4 4 4 4 4 5 5 1
|
1 3 6 6 6 6 6 3 6 4 6 3 5 6 5 6 5 5 5 5 1
|
||||||
1 3 1 3 1 6 1 6 1 0 1 0 1 0 1 4 1 5 1 5 1
|
1 3 1 3 1 6 1 3 1 4 1 3 1 3 1 6 1 5 1 5 1
|
||||||
1 3 6 6 6 6 6 3 6 3 0 0 4 5 4 4 4 4 4 5 1
|
1 6 3 3 3 4 3 6 3 3 3 3 4 3 4 6 4 4 5 5 1
|
||||||
1 6 1 3 1 3 1 3 1 3 1 0 1 5 1 4 1 5 1 5 1
|
1 3 1 3 1 4 1 4 1 6 1 3 1 3 1 6 1 5 1 5 1
|
||||||
1 6 0 6 6 6 3 3 3 3 3 3 3 3 3 3 3 5 4 5 1
|
1 3 3 4 4 4 4 4 6 6 6 3 6 6 6 6 6 3 3 5 1
|
||||||
1 6 1 3 1 3 1 3 1 3 1 3 1 5 1 4 1 5 1 5 1
|
1 6 1 4 1 4 1 4 1 6 1 3 1 3 1 6 1 5 1 4 1
|
||||||
1 6 3 3 3 3 3 3 3 3 3 3 3 5 5 4 5 5 5 5 1
|
1 4 3 6 4 4 3 3 3 3 3 3 3 3 3 6 3 3 3 5 1
|
||||||
1 6 1 6 1 3 1 3 1 3 1 3 1 5 1 4 1 5 1 4 1
|
1 6 1 4 1 4 1 4 1 6 1 3 1 3 1 6 1 5 1 4 1
|
||||||
1 6 6 3 3 3 5 5 5 3 5 3 5 5 5 5 5 5 5 5 1
|
1 3 6 6 6 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 1
|
||||||
1 6 1 6 1 3 1 3 1 0 1 3 1 0 1 5 1 5 1 4 1
|
1 6 1 4 1 6 1 4 1 6 1 3 1 3 1 3 1 4 1 4 1
|
||||||
1 6 3 3 3 3 3 3 3 3 0 5 5 5 5 5 5 5 5 5 1
|
1 6 6 4 3 6 3 6 3 3 3 3 3 3 3 3 3 3 3 3 1
|
||||||
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
|
||||||
7
|
4
|
||||||
6 13 5 169.34300000000087
|
3 14 4 251.5
|
||||||
3 10 4 169.5
|
9 12 3 252.5
|
||||||
7 12 5 170.8010000000009
|
8 13 3 254.5
|
||||||
2 11 4 171.5
|
11 10 6 255.00000000000082
|
||||||
6 15 5 173.40000000000057
|
|
||||||
1 10 4 173.5
|
|
||||||
9 12 5 174.44600000000096
|
|
||||||
3
|
3
|
||||||
8 15 0 1 1 5 4 2
|
11 9 0 1 2 6 1 4
|
||||||
1 9 1 0 0 4 3 1
|
6 13 1 0 0 3 4 2
|
||||||
9 11 2 3 0 5 3 4
|
6 13 3 0 1 4 2 4
|
||||||
2
|
0
|
||||||
10 9 0
|
|
||||||
4 11 1
|
|
||||||
|
|
Loading…
Reference in New Issue