История изменений
Исправление 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