BeepSortRust/src/main.rs

80 lines
2.7 KiB
Rust
Raw Normal View History

#![feature(generators, generator_trait, type_alias_impl_trait)]
2022-11-06 21:44:59 +00:00
mod BarPlugin;
mod GuiHookVec;
mod Algorithm;
mod State;
2022-11-06 21:44:59 +00:00
use std::pin::Pin;
use macroquad::prelude::*;
use macroquad::prelude::scene::clear;
use crate::BarPlugin::Bar;
use crate::GuiHookVec::GuiVec;
use std::ops::{Deref, Generator, GeneratorState};
2022-11-07 23:56:06 +00:00
use std::process::id;
2022-11-08 15:31:16 +00:00
use macroquad::hash;
2022-11-07 02:36:26 +00:00
use macroquad::ui::root_ui;
use crate::Algorithm::AlgoEnum;
2022-11-06 21:44:59 +00:00
#[macroquad::main("BeepSort")]
async fn main() {
2022-11-08 15:31:16 +00:00
let mut length = 500;
let mut delay = 0.;
2022-11-08 15:31:16 +00:00
let mut delayText = "0.1".to_owned();
loop{
clear_background(WHITE);
2022-11-08 15:31:16 +00:00
delay = match delayText.parse::<f64>(){
Ok(a) => a/1000.,
Err(error)=> {0.1}
};
2022-11-08 00:54:21 +00:00
draw_text("Sorting!", screen_width()*0.3, screen_height()*0.5, 100.0, GREEN);
2022-11-07 23:56:06 +00:00
draw_text(format!("Length: {}", length.to_string()).as_str(), screen_width()*0.83, 30., 20.0, BLACK);
if root_ui().button(Vec2::new(screen_width()*0.9, 50.), "+10"){
length += 10;
}
2022-11-07 23:56:06 +00:00
if root_ui().button(Vec2::new(screen_width()*0.87, 50.), "+1"){
length += 1;
}
if root_ui().button(Vec2::new(screen_width()*0.8, 50.), "-10"){
length -= 10;
}
2022-11-07 23:56:06 +00:00
if root_ui().button(Vec2::new(screen_width()*0.84, 50.), "-1"){
length -= 1;
}
2022-11-08 15:31:16 +00:00
root_ui().window(hash!(), Vec2::new(screen_width()*0.1, 10.), Vec2::new(200., 25.), |ui|{
ui.input_text(hash!(), "Delay (ms)", &mut delayText);
});
2022-11-07 23:56:06 +00:00
if root_ui().button(Vec2::new(screen_width()*0.01, 70.), "InsertSort"){
2022-11-07 23:56:06 +00:00
State::State::runInsertSort(delay,length, Algorithm::Algorithm::insertSort(length)).await;
}
if root_ui().button(Vec2::new(screen_width()*0.01, 100.), "BogoSort"){
2022-11-08 15:31:16 +00:00
//State::State::runInsertSort(delay,length, Algorithm::Algorithm::bogoSort(length)).await;
}
if root_ui().button(Vec2::new(screen_width()*0.01, 130.), "BubbleSort"){
2022-11-08 15:31:16 +00:00
//State::State::runInsertSort(delay, length, Algorithm::Algorithm::bubbleSort(length)).await;
}
if root_ui().button(Vec2::new(screen_width()*0.01, 160.), "StalinSort"){
2022-11-08 15:31:16 +00:00
//State::State::runInsertSort(delay, length, Algorithm::Algorithm::stalinSort(length)).await;
2022-11-07 23:56:06 +00:00
}
if root_ui().button(Vec2::new(screen_width()*0.01, 190.), "CoctailShaker"){
2022-11-08 15:31:16 +00:00
//State::State::runInsertSort(delay, length, Algorithm::Algorithm::cocktailShaker(length)).await;
}
if root_ui().button(Vec2::new(screen_width()*0.01, 220.), "HeapSort!"){
//State::State::runInsertSort(delay, length, Algorithm::Algorithm::binaryHeap(length)).await;
2022-11-07 02:36:26 +00:00
}
2022-11-07 23:56:06 +00:00
next_frame().await
2022-11-06 21:44:59 +00:00
}
2022-11-06 21:44:59 +00:00
}