use ggez; use ggez::event; use ggez::graphics; use ggez::nalgebra as na; use ggez::graphics::{self, spritebatch::SpriteBatch, DrawParam, FilterMode, Image, WrapMode}; struct Game { spritebatch: SpriteBatch, } impl MainState { fn new() -> ggez::GameResult { let mut image = Image::new(context, "/gem.png")?; image.set_filter(FilterMode::Nearest); image.set_wrap(WrapMode::Mirror, WrapMode::Mirror); Ok(MainState { spritebatch: SpriteBatch::new(image) }) } } 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) }