X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=003%2Fsrc%2Flife.erl;h=605fa95ce873533b2b4d2da920001db536cb531c;hb=11f0def6f8f8d0ca2386ffa2214fabb8db458c47;hp=ddb5115c578ce6d3c433df0aaef859911f352042;hpb=af47aa3763380022a5f39d7f8c2c662db9f03766;p=cellular-automata.git diff --git a/003/src/life.erl b/003/src/life.erl index ddb5115..605fa95 100644 --- a/003/src/life.erl +++ b/003/src/life.erl @@ -7,7 +7,7 @@ -define(CHAR_ALIVE, 111). % "o" -define(CHAR_BAR, 45). % "-" --define(INTERVAL, 100). +-define(GEN_INTERVAL, 100). -record(state, {x :: non_neg_integer() @@ -73,10 +73,17 @@ life_loop( ,print_time = PrintTime }, - timer:sleep(?INTERVAL), + NewTimeMil = NewTime / 1000, + NextGenDelay = at_least_zero(round(?GEN_INTERVAL - NewTimeMil)), + timer:sleep(NextGenDelay), + life_loop(NewState). +at_least_zero(Integer) when Integer >= 0 -> Integer; +at_least_zero(_) -> 0. + + do_print_screen(Board, Bar, X, Y, N, GenCount, Time, PrintTime) -> ok = do_print_status(Bar, X, Y, N, GenCount, Time, PrintTime), ok = do_print_board(Board).