use ggez; use ggez::event; use ggez::graphics; use ggez::nalgebra as na; struct MainState { pos_x: f32, } impl MainState { fn new() -> ggez::GameResult { let s = MainState { pos_x: 0.0 }; Ok(s) } } impl event::EventHandler for MainState { fn update(&mut self, _ctx: &mut ggez::Context) -> ggez::GameResult { self.pos_x = self.pos_x % 800.0 + 1.0; Ok(()) } fn draw(&mut self, ctx: &mut ggez::Context) -> ggez::GameResult { graphics::clear(ctx, [0.1, 0.2, 0.3, 1.0].into()); let circle = graphics::Mesh::new_circle( ctx, graphics::DrawMode::fill(), na::Point2::new(self.pos_x, 380.0), 100.0, 2.0, graphics::WHITE, )?; graphics::draw(ctx, &circle, (na::Point2::new(0.0, 0.0),))?; graphics::present(ctx)?; Ok(()) } } pub fn main() -> ggez::GameResult { let cb = ggez::ContextBuilder::new("super_simple", "ggez"); let (ctx, event_loop) = &mut cb.build()?; let state = &mut MainState::new()?; event::run(ctx, event_loop, state) }