Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use ggez::event::{EventHandler, KeyCode, KeyMods};
- use ggez::{graphics, nalgebra as na, timer};
- use ggez::input::keyboard;
- use ggez::{Context, GameResult};
- struct MainState {
- position_x: f32,
- }
- impl EventHandler for MainState {
- fn update(&mut self, ctx: &mut Context) -> GameResult {
- // Increase or decrease `position_x` by 0.5, or by 5.0 if Shift is held.
- if keyboard::is_key_pressed(ctx, KeyCode::Right) {
- if keyboard::is_mod_active(ctx, KeyMods::SHIFT) {
- self.position_x += 4.5;
- }
- self.position_x += 0.5;
- } else if keyboard::is_key_pressed(ctx, KeyCode::Left) {
- if keyboard::is_mod_active(ctx, KeyMods::SHIFT) {
- self.position_x -= 4.5;
- }
- self.position_x -= 0.5;
- }
- Ok(())
- }
- fn draw(&mut self, ctx: &mut Context) -> GameResult {
- graphics::clear(ctx, [0.1, 0.2, 0.3, 1.0].into());
- // Create a circle at `position_x` and draw
- let circle = graphics::Mesh::new_circle(
- ctx,
- graphics::DrawMode::fill(),
- na::Point2::new(self.position_x, 380.0),
- 100.0,
- 2.0,
- graphics::WHITE,
- )?;
- graphics::draw(ctx, &circle, graphics::DrawParam::default())?;
- graphics::present(ctx)?;
- timer::yield_now();
- Ok(())
- }
- fn key_down_event(&mut self, ctx: &mut Context, key: KeyCode, mods: KeyMods, _: bool) {
- match key {
- // Quit if Shift+Ctrl+Q is pressed.
- KeyCode::Q => {
- if mods.contains(KeyMods::SHIFT & KeyMods::CTRL) {
- println!("Terminating!");
- ggez::quit(ctx);
- } else if mods.contains(KeyMods::SHIFT) || mods.contains(KeyMods::CTRL) {
- println!("You need to hold both Shift and Control to quit.");
- } else {
- println!("Now you're not even trying!");
- }
- }
- _ => (),
- }
- }
- }
- fn main() {
- // create an instance of game state
- let state = &mut MainState { position_x: 10.0 };
- // create a context to access hardware (also creates event loop)
- let c = ggez::conf::Conf::new();
- let (ref mut ctx, ref mut event_loop) = ggez::ContextBuilder::new("hello_ggez", "awesome_person")
- .conf(c)
- .build()
- .unwrap();
- // start game loop
- match ggez::event::run(ctx, event_loop, state) {
- Ok(_) => println!("Goodbye"),
- Err(e) => println!("It all went wrong! {}", e),
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement