From 08463169f552cd19164b16ae1428ee60c8ddaf00 Mon Sep 17 00:00:00 2001 From: Till Höppner Date: Tue, 13 Jun 2017 22:21:10 +0200 Subject: Initial commit --- src/main.rs | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/main.rs (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..38d8087 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,46 @@ +extern crate termion; + +use termion::event::Key; +use termion::input::TermRead; +use termion::raw::IntoRawMode; +use termion::screen::AlternateScreen; + +use std::io::{self, Write}; +use std::thread; +use std::time::Duration; + +static SNEK: &'static [u8] = include_bytes!("snek.six"); + +fn main() { + let input = termion::async_stdin(); + let mut keys = input.keys(); + let mut output = io::stdout().into_raw_mode().unwrap(); + let mut screen = Vec::new(); + + let mut size = termion::terminal_size().expect("Can't get terminal size"); + write!(screen, "{}", termion::clear::All); + + + loop { + let new_size = termion::terminal_size().unwrap(); + if new_size != size { + write!(screen, "{}", termion::clear::All); + size = new_size; + } + + write!(screen, "{}", termion::cursor::Goto(20, 20)); + + screen.write_all(SNEK).expect("Can't write snek"); + + match keys.next() { + Some(Ok(Key::Char('q'))) => break, + Some(k) => println!("{:?}", k), + None => () + } + + output.write_all(&screen).expect("Can't write screen"); + screen.clear(); + + thread::sleep(Duration::from_millis(16)); + } +} -- cgit v1.2.3