官术网_书友最值得收藏!

  • Rust Programming By Example
  • Guillaume Gomez Antoni Boucher
  • 196字
  • 2021-07-02 19:13:04

Tetris

Okay, we're now ready to start writing down our tetris!

First, let's fulfill our main.rs file in order to check whether everything is working as expected:

    extern crate sdl2;

    use sdl2::pixels::Color;
    use sdl2::event::Event;
    use sdl2::keyboard::Keycode;
    use std::time::Duration;
use std::thread::sleep; pub fn main() { let sdl_context = sdl2::init().expect("SDL initialization
failed"
); let video_subsystem = sdl_context.video().expect("Couldn't get
SDL video subsystem"
); let window = video_subsystem.window("rust-sdl2 demo: Video", 800,
600) .position_centered() .opengl() .build() .expect("Failed to create window"); let mut canvas = window.into_canvas().build().expect("Failed to
convert window into canvas"
); canvas.set_draw_color(Color::RGB(255, 0, 0)); canvas.clear(); canvas.present(); let mut event_pump = sdl_context.event_pump().expect("Failed to
get SDL event pump"
); 'running: loop { for event in event_pump.poll_iter() { match event { Event::Quit { .. } | Event::KeyDown { keycode: Some(Keycode::Escape), .. } =>
{ break 'running }, _ => {} } } sleep(Duration::new(0, 1_000_000_000u32 / 60)); } }

You'll note the following line:

    ::std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 60));

It allows you to avoid using all your computer CPU time needlessly and only rendering 60 times every second at most.

Now run the following in your terminal:

$ cargo run

If you have a window filled with red (just as shown in the following screenshot), then everything's fine!

Figure 2.4

主站蜘蛛池模板: 襄垣县| 嵊泗县| 洛宁县| 泰兴市| 赤城县| 大悟县| 曲沃县| 米脂县| 九台市| 邻水| 安龙县| 宁化县| 清新县| 荆州市| 洪泽县| 黑山县| 习水县| 东莞市| 新源县| 钟祥市| 宁远县| 如东县| 乃东县| 离岛区| 积石山| 尤溪县| 桂林市| 西昌市| 志丹县| 调兵山市| 班戈县| 黄陵县| 湟中县| 长岭县| 惠州市| 北票市| 泗阳县| 通化县| 汾西县| 天长市| 合肥市|