use minui::{App, Event, KeyKind};
use std::time::Duration;
struct MyCoolApp {
x: u16,
y: u16,
}
fn main() -> minui::Result<()> {
let initial_state = MyCoolApp { x: 5, y: 5 };
let mut app = App::new(initial_state)?.with_frame_rate(Duration::from_millis(100));
app.run(
|state, event| {
match event {
Event::KeyWithModifiers(k) => match k.key {
KeyKind::Char('q') => return false,
KeyKind::Up => state.y = state.y.saturating_sub(1),
KeyKind::Down => state.y += 1,
KeyKind::Left => state.x = state.x.saturating_sub(1),
KeyKind::Right => state.x += 1,
_ => {}
},
Event::Character('q') => return false,
Event::KeyUp => state.y = state.y.saturating_sub(1),
Event::KeyDown => state.y += 1,
Event::KeyLeft => state.x = state.x.saturating_sub(1),
Event::KeyRight => state.x += 1,
Event::Frame => {
state.x += 1;
}
_ => {}
}
true
},
|state, window| {
window.write_str(state.y, state.x, "@")?;
window.write_str(0, 0, "Press 'q' to quit")?;
window.flush()?;
Ok(())
},
)?;
Ok(())
}