# HG changeset patch # User dermetfan # Date 1435293854 -7200 # Fri Jun 26 06:44:14 2015 +0200 # Node ID 3dfed0fa4df5941f1528641872b31ef20f8b1dd6 # Parent 58cff46a4c21460065f83f3f13fa8dbb259f95d3 added pause and next controls diff --git a/src/main.rs b/src/main.rs --- a/src/main.rs +++ b/src/main.rs @@ -52,7 +52,11 @@ options.short_usage(APP_NAME) } else { let mut h = options.usage(APP_NAME); - h.push_str("\nControls:\n q exit the game\n"); + h.push_str("\n"); + h.push_str("Controls:\n"); + h.push_str(" q exit the game\n"); + h.push_str(" p pause/resume\n"); + h.push_str(" n next generation"); h }; println!("{}", help); @@ -165,14 +169,20 @@ let mut game = Game { cells: cells, dead: dead, alive: alive, border: border, window: game_window }; let mut quit = false; + let mut paused = false; let mut last_time = time::precise_time_s(); - + let mut render = |delta| { + game.render(delta); + refresh(); + wrefresh(game.window); + }; while !quit { let time = time::precise_time_s(); + let delta = time - last_time; - game.render(time - last_time); - refresh(); - wrefresh(game.window); + if !paused { + render(delta); + } last_time = time::precise_time_s(); let render_duration = last_time - time; @@ -182,9 +192,11 @@ std::thread::sleep_ms((sleep * 1000.) as u32); } - let ch = getch(); - if ch == 'q' as i32 { - quit = true; + match getch() as u8 as char { + 'q' => quit = true, + 'p' => paused = !paused, + 'n' if paused => render(delta), + _ => {} } }