4 use crossterm::{cursor, event, execute, queue, terminal};
5 use game::{Board, Dir::*, Pos};
9 let mut rng = rand::thread_rng();
11 let mut stdout = std::io::stdout();
12 queue!(stdout, terminal::EnterAlternateScreen, cursor::Hide).unwrap();
14 terminal::enable_raw_mode().unwrap();
16 let board = Board::new(Pos::new(4, 4));
17 board.spawn(&mut rng);
18 board.spawn(&mut rng);
23 terminal::Clear(terminal::ClearType::All),
27 display::display_board(&mut stdout, &board).unwrap();
28 stdout.flush().unwrap();
30 if let Ok(evt) = event::read() {
32 event::Event::Key(event::KeyEvent { code, .. }) => match code {
33 event::KeyCode::Char(ch) => {
34 if board.step(match ch.to_ascii_lowercase() {
42 board.spawn(&mut rng);
54 terminal::disable_raw_mode().unwrap();
55 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen).unwrap();