LINUX.ORG.RU

История изменений

Исправление LightDiver, (текущая версия) :

В раст все управляется единым инструментом - cargo.

Сначала создание проекта: cargo new project_name

В созданной директории будет файли к Cargo.toml

там вставляем вот так например:

[dependencies]
eframe = "0.31.1" # Фреймворк для создания окон с egui
egui = "0.31.1"   # Сама библиотека egui

Собственно все. Дальше он сам подтянет нужные модули и зависимости:

cargo run и проект запутсится.

Код в каталоге src - src/main.rs

например так:

use eframe::egui;

fn main() {
    let options = eframe::NativeOptions::default();
    eframe::run_native(
        "Pixel Art House", // Название окна
        options,
        Box::new(|_cc| Ok(Box::new(MyApp {}))), // Оборачиваем MyApp в Ok
    )
    .expect("Failed to start eframe application");
}

struct MyApp {}

impl eframe::App for MyApp {
    fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
        egui::CentralPanel::default().show(ctx, |ui| {
            // Получаем холст для рисования
            let painter = ui.painter();

            // Размеры холста
            let canvas_width = 200.0;
            let canvas_height = 200.0;

            // Очищаем фон (трава)
            painter.rect_filled(
                egui::Rect::from_min_size(egui::pos2(0.0, 0.0), egui::vec2(canvas_width, canvas_height)),
                0.0,
                egui::Color32::from_rgb(34, 139, 34), // Зеленый цвет травы
            );

            // Рисуем домик пикселями
            draw_house(painter);
        });
    }
}

// Функция для рисования домика
fn draw_house(painter: &egui::Painter) {
    // Крыша (треугольник)
    painter.add(egui::Shape::convex_polygon(
        vec![
            egui::pos2(80.0, 40.0),  // Верхняя точка крыши
            egui::pos2(50.0, 80.0),  // Левый угол
            egui::pos2(110.0, 80.0), // Правый угол
        ],
        egui::Color32::from_rgb(255, 69, 0), // Оранжевый цвет крыши
        egui::Stroke::NONE,
    ));

    // Стены дома (прямоугольник)
    painter.rect_filled(
        egui::Rect::from_min_size(egui::pos2(50.0, 80.0), egui::vec2(60.0, 60.0)),
        0.0,
        egui::Color32::from_rgb(139, 69, 19), // Коричневый цвет стен
    );

    // Окно
    painter.rect_filled(
        egui::Rect::from_min_size(egui::pos2(60.0, 100.0), egui::vec2(20.0, 20.0)),
        0.0,
        egui::Color32::from_rgb(173, 216, 230), // Светло-голубой цвет окна
    );

    // Дверь
    painter.rect_filled(
        egui::Rect::from_min_size(egui::pos2(85.0, 120.0), egui::vec2(10.0, 20.0)),
        0.0,
        egui::Color32::from_rgb(139, 0, 0), // Темно-красный цвет двери
    );
}

Исходная версия LightDiver, :

В раст все управляется единым инструментом - cargo.

Сначала создание проекта: cargo new project_name

В созданной директории будет файли к Cargo.toml

там вставляем вот так например:

[dependencies]
eframe = "0.31.1" # Фреймворк для создания окон с egui
egui = "0.31.1"   # Сама библиотека egui

Собственно все. Дальше он сам подтянет нужные модули и зависимости:

cargo run и проект запутсится.

Код в каталоге src - src/main.rs