rustraight 0.5.2

A simple 2D game library for Rust, inspired by DXLib
// 図形描画 API の動作確認用サンプル。アセット不要。
//
// 確認対象:
//   draw_fill   draw_pixel   draw_line
//   draw_rectangle(filled/outline)   draw_circle(filled/outline)   draw_triangle(filled/outline)
//   clear   Color::rgb/rgba と定義済み定数

use rustraight::prelude::*;

fn main() {
    init(WindowConfig {
        title: String::from("02_shapes"),
        width: 800,
        height: 600,
        screen_width: 800,
        screen_height: 600,
        ..Default::default()
    });

    while advance_frame() {
        draw_fill(MAIN_SCREEN, Color::rgb(15, 15, 20));

        // ピクセル(8個並べて見えやすくする)
        for i in 0..8 {
            draw_pixel(MAIN_SCREEN, 20 + i, 20, Color::WHITE);
        }

        //        draw_line(MAIN_SCREEN, 20, 40, 120, 100, Color::RED);

        // 矩形(左: 塗り / 右: 枠線)
        draw_rectangle(MAIN_SCREEN, 20, 120, 80, 60, Color::GREEN, true);
        draw_rectangle(MAIN_SCREEN, 120, 120, 80, 60, Color::GREEN, false);

        // 円(左: 塗り / 右: 枠線)
        draw_circle(MAIN_SCREEN, 260, 150, 40, Color::BLUE, true);
        draw_circle(MAIN_SCREEN, 360, 150, 40, Color::BLUE, false);

        // 三角形(左: 塗り / 右: 枠線)
        draw_triangle(MAIN_SCREEN, 440, 190, 480, 110, 520, 190, Color::YELLOW, true);
        draw_triangle(MAIN_SCREEN, 560, 190, 600, 110, 640, 190, Color::YELLOW, false);

        // Color 定義済み定数一覧(rgb/rgba のカスタム色も1つ混ぜる)
        let consts = [
            ("WHITE", Color::WHITE), ("BLACK", Color::BLACK), ("RED", Color::RED),
            ("GREEN", Color::GREEN), ("BLUE", Color::BLUE), ("YELLOW", Color::YELLOW),
            ("CYAN", Color::CYAN), ("MAGENTA", Color::MAGENTA),
        ];
        for (i, (name, c)) in consts.iter().enumerate() {
            let x = 20 + i as i32 * 76;
            draw_rectangle(MAIN_SCREEN, x, 220, 60, 30, *c, true);
            draw_text(MAIN_SCREEN, x, 254, *name, Color::WHITE);
        }
        // rgba() で半透明の橙色(アルファ合成の確認を兼ねる)
        draw_rectangle(MAIN_SCREEN, 630, 220, 60, 30, Color::rgba(255, 140, 0, 128), true);
        draw_text(MAIN_SCREEN, 630, 254, "rgba a=128", Color::WHITE);

        draw_text(
            MAIN_SCREEN, 20, 300,
            "pixel / line / rect(fill,outline) / circle(fill,outline) / triangle(fill,outline)",
            Color::WHITE,
        );
        draw_text(MAIN_SCREEN, 20, 330, "Z を押している間: clear() でこのフレームの描画が全て消えるはず", Color::YELLOW);

        // clear() の確認: 押している間、ここまで積んだ描画コマンドを丸ごと破棄する
        if is_pressed(KeyCode::KeyZ) {
            clear(MAIN_SCREEN);
        }
    }
}