diff options
author | Adrian Kummerlaender | 2016-12-10 12:20:12 +0100 |
---|---|---|
committer | Adrian Kummerlaender | 2016-12-10 12:20:12 +0100 |
commit | 585e558afb23acc87d3ad71b2fef974281a185dd (patch) | |
tree | 42f588ecfe1bf93fd3a75fc90eafcfd5e45b02bf /life.cc | |
parent | b72dcd74717366f145b029d89ae11a085a5f5997 (diff) | |
download | termlife-585e558afb23acc87d3ad71b2fef974281a185dd.tar termlife-585e558afb23acc87d3ad71b2fef974281a185dd.tar.gz termlife-585e558afb23acc87d3ad71b2fef974281a185dd.tar.bz2 termlife-585e558afb23acc87d3ad71b2fef974281a185dd.tar.lz termlife-585e558afb23acc87d3ad71b2fef974281a185dd.tar.xz termlife-585e558afb23acc87d3ad71b2fef974281a185dd.tar.zst termlife-585e558afb23acc87d3ad71b2fef974281a185dd.zip |
Extract painting and display age of world
Diffstat (limited to 'life.cc')
-rw-r--r-- | life.cc | 41 |
1 files changed, 40 insertions, 1 deletions
@@ -2,13 +2,52 @@ #include "world.h" +void print_tb( + std::size_t x, + std::size_t y, + std::uint16_t fg, + std::uint16_t bg, + const std::string& text +) { + for ( const char& c : text ) { + tb_change_cell(x, y, c, fg, bg); + x++; + } +} + +template< + std::size_t WIDTH, + std::size_t HEIGHT +> +void draw(life::World<WIDTH, HEIGHT>& world) { + tb_clear(); + + for ( std::size_t i = 0; i < HEIGHT; i++ ) { + for ( std::size_t j = 0; j < WIDTH; j++ ) { + if ( world.isLifeAt(i,j) ) { + tb_change_cell(i, j, 0x2588, TB_BLACK, TB_GREEN); + } else { + tb_change_cell(i, j, 0x2591, TB_BLACK, TB_BLUE); + } + } + } + + print_tb(1, 21, TB_WHITE, TB_DEFAULT, "Age:"); + print_tb(6, 21, TB_WHITE, TB_DEFAULT, std::to_string(world.getAge())); + + tb_present(); +} + int main(int, char*[]) { tb_init(); + tb_select_output_mode(TB_OUTPUT_NORMAL); tb_select_input_mode(TB_INPUT_ESC | TB_INPUT_MOUSE); life::World<20,20> world; + draw(world); + while ( true ) { struct tb_event ev; int t = tb_poll_event(&ev); @@ -39,7 +78,7 @@ int main(int, char*[]) { break; } - world.draw(); + draw(world); } return 0; |