BeepSortRust/src/main.rs

52 lines
1.5 KiB
Rust
Raw Normal View History

2022-11-06 21:44:59 +00:00
#![feature(generators, generator_trait)]
mod BarPlugin;
mod GuiHookVec;
mod Algorithm;
use std::pin::Pin;
use macroquad::prelude::*;
use macroquad::prelude::scene::clear;
use crate::BarPlugin::Bar;
use crate::GuiHookVec::GuiVec;
2022-11-06 21:44:59 +00:00
use std::ops::{Generator, GeneratorState};
2022-11-06 22:10:16 +00:00
2022-11-06 21:44:59 +00:00
const BAR_WIDTH:f32 = 10.0;
#[macroquad::main("BeepSort")]
async fn main() {
2022-11-07 00:44:35 +00:00
let mut gui_vec = GuiVec::new(5);
2022-11-06 21:44:59 +00:00
gui_vec.randomize();
let mut lasttime:f64 = 0.;
let mut holder = gui_vec.clone();
2022-11-07 00:44:35 +00:00
let mut generator = Algorithm::Algorithm::bogoSort(&mut gui_vec);
2022-11-06 21:44:59 +00:00
let mut finished = false;
let timeout = 0.000001;
2022-11-06 21:44:59 +00:00
loop {
clear_background(WHITE);
if get_time()-lasttime > timeout && !finished{
2022-11-06 21:44:59 +00:00
match Pin::new(& mut generator).resume(()){
GeneratorState::Yielded(x) => {
holder = x.clone();
},
GeneratorState::Complete(x) => {
finished = true;
}
};
lasttime = get_time();
}
draw_text(format!("Read: {}", holder.reads).as_str(), screen_width()*0.1, screen_height()-100.0, 20.0, BLACK);
draw_text(format!("Write: {}", holder.writes).as_str(), screen_width()*0.1, screen_height()-80.0, 20.0, BLACK);
draw_text(format!("Comparisons: {}", holder.comps).as_str(), screen_width()*0.1, screen_height()-60.0, 20.0, BLACK);
draw_text(format!("FPS: {}", get_fps()).as_str(), screen_width()*0.1, screen_height()-40., 20.0, BLACK);
2022-11-06 21:44:59 +00:00
holder.draw();
next_frame().await
}
}