You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. use sdl2::pixels::Color;
  2. use sdl2::event::Event;
  3. use sdl2::keyboard::Keycode;
  4. use sdl2::render::WindowCanvas;
  5. use std::time::Duration;
  6. fn render(canvas: &mut WindowCanvas, color: Color) {
  7. canvas.set_draw_color(color);
  8. canvas.clear();
  9. canvas.present();
  10. }
  11. fn main() -> Result<(), String> {
  12. let sdl_context = sdl2::init()?;
  13. let video_subsystem = sdl_context.video()?;
  14. let window = video_subsystem.window("game tutorial", 800, 600)
  15. .position_centered()
  16. .build()
  17. .expect("could not initialize video subsystem");
  18. let mut canvas = window.into_canvas().build()
  19. .expect("could not make a canvas");
  20. let mut event_pump = sdl_context.event_pump()?;
  21. let mut i = 0;
  22. 'running: loop {
  23. for event in event_pump.poll_iter() {
  24. match event {
  25. Event::Quit {..} |
  26. Event::KeyDown { keycode: Some(Keycode::Escape), .. } => {
  27. break 'running;
  28. },
  29. _ => {}
  30. }
  31. }
  32. i = (i + 1) % 255;
  33. render(&mut canvas, Color::RGB(i, 64, 255-i));
  34. ::std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 60));
  35. }
  36. Ok(())
  37. }