X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=forest-fire%2F001%2Fsrc%2Fforest_fire.ml;h=bd2ed19a1bed86e1208c9b77d8574277fbeced2c;hb=1361b30d16ae9c8b11b7f5132d2277d927e89b61;hp=66285a9baded178b4321f9687e8634b9762fb5bf;hpb=8cf59f0f0332f2ee186f4fd8ae5ca00cba00e673;p=cellular-automata.git diff --git a/forest-fire/001/src/forest_fire.ml b/forest-fire/001/src/forest_fire.ml index 66285a9..bd2ed19 100644 --- a/forest-fire/001/src/forest_fire.ml +++ b/forest-fire/001/src/forest_fire.ml @@ -138,6 +138,8 @@ let new_state = function let print_forest forest = + term_reset (); + Array.iter ( fun row -> @@ -166,7 +168,7 @@ let next_generation forest (width, height) prob = let neighbors = List.map (fun (ox, oy) -> ox + ix, oy + iy) offsets in let neighbors = List.filter (is_onside width height) neighbors in let neighbor_states = List.map (fun (x, y) -> forest.(y).(x)) neighbors in - let burning_states = List.filter (fun s -> s == Burning) neighbor_states in + let burning_states = List.filter ((==) Burning) neighbor_states in new_state (state, (List.length burning_states), prob) ) row @@ -175,10 +177,12 @@ let next_generation forest (width, height) prob = let rec burn forest size prob interval = - term_reset (); print_forest forest; + if interval > 0.0 then minisleep interval; - burn (next_generation forest size prob) size prob interval + + let next_forest = next_generation forest size prob in + burn next_forest size prob interval let main argv = @@ -188,6 +192,7 @@ let main argv = let forest = init_forest opts.size opts.prob in term_clear (); + burn forest opts.size opts.prob opts.interval