From 7110d063b46240d6c04ee73e71be8fe5c74a2499 Mon Sep 17 00:00:00 2001 From: sparshg <43041139+sparshg@users.noreply.github.com> Date: Mon, 9 Jan 2023 02:10:34 +0530 Subject: [PATCH] speed control --- fast.png => assets/fast.png | Bin pause.png => assets/pause.png | Bin play.png => assets/play.png | Bin restart.png => assets/restart.png | Bin assets/slow.png | Bin 0 -> 262 bytes src/main.rs | 43 ++++++++++++++++-------------- src/nn.rs | 2 +- src/player.rs | 2 +- 8 files changed, 25 insertions(+), 22 deletions(-) rename fast.png => assets/fast.png (100%) rename pause.png => assets/pause.png (100%) rename play.png => assets/play.png (100%) rename restart.png => assets/restart.png (100%) create mode 100644 assets/slow.png diff --git a/fast.png b/assets/fast.png similarity index 100% rename from fast.png rename to assets/fast.png diff --git a/pause.png b/assets/pause.png similarity index 100% rename from pause.png rename to assets/pause.png diff --git a/play.png b/assets/play.png similarity index 100% rename from play.png rename to assets/play.png diff --git a/restart.png b/assets/restart.png similarity index 100% rename from restart.png rename to assets/restart.png diff --git a/assets/slow.png b/assets/slow.png new file mode 100644 index 0000000000000000000000000000000000000000..80fad0d2d266076bddff6142a3ba99aeb0d0b922 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^d_XL~!3HGNrubO_Db50q$YKTtZeb8+WSBKa0w}n{ z)5S4FW8&P&hJ1{HBChWzWaK&=;!-gYYMpjUDWc(;*Acxbi)LJNW3gT6Aai!lkA3RN z&(yZ>+^Jsq^ZkC735$0v>0L5=iQ|OrDr;3@S&yt^%D%U054X%?gD*|~oDz)BEqH7n zM+ZNUYgaU3ljD1FYJpk7PjRCSjBmOe*z&ra7(_iq^C#{+<#uGP`~iH$B}Fz z2IW@5MRpC9FH71EX!5UNTzUB=13R~H-Tcs5b3^S<%q|Plk7nJpp6}qr_dq`|c)I$z JtaD0e0sw&$U4Z}q literal 0 HcmV?d00001 diff --git a/src/main.rs b/src/main.rs index b45179f..b9c029a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -29,10 +29,11 @@ fn window_conf() -> Conf { #[macroquad::main(window_conf)] async fn main() { rand::srand(macroquad::miniquad::date::now() as _); - let pause = load_texture("pause.png").await.unwrap(); - let play = load_texture("play.png").await.unwrap(); - let fast = load_texture("fast.png").await.unwrap(); - let restart = load_texture("restart.png").await.unwrap(); + let pause = load_texture("assets/pause.png").await.unwrap(); + let play = load_texture("assets/play.png").await.unwrap(); + let fast = load_texture("assets/fast.png").await.unwrap(); + let slow = load_texture("assets/slow.png").await.unwrap(); + let restart = load_texture("assets/restart.png").await.unwrap(); let th = (screen_height() - HEIGHT) * 0.5; let gamecam = Camera2D { @@ -57,10 +58,9 @@ async fn main() { ..Default::default() }; - let mut speedup = false; + let mut speedup = 1; let mut paused = false; let mut bias = false; - let mut showall = false; let mut size = 100; let mut pop = Population::new(size as usize); @@ -127,20 +127,15 @@ async fn main() { clear_background(BLACK); set_camera(&gamecam); if is_key_pressed(KeyCode::S) { - speedup = !speedup; + speedup = (speedup * 10) % 9999; + println!("Speedup: {}", speedup); } - if speedup { - if !paused { - for _ in 0..1000 { - pop.update(); - } - } - } else { - if !paused { + if !paused { + for _ in 0..speedup { pop.update(); } - pop.draw(); } + pop.draw(); draw_rectangle_lines(-WIDTH * 0.5, -HEIGHT * 0.5, WIDTH, HEIGHT, 2., WHITE); draw_rectangle_lines( WIDTH * 0.5 + th, @@ -182,9 +177,9 @@ async fn main() { .position(Vec2::new(0., 0.)) .ui(ui, |ui| { ui.label(None, &format!("Generation: {}", pop.gen)); - ui.same_line(314.); + ui.same_line(242.); if widgets::Button::new("Load Model").ui(ui) { - if let Some(path) = open_file_dialog("Load Model", "brain.json", None) { + if let Some(path) = open_file_dialog("Load Model", "model.json", None) { let brain = NN::import(&path); size = 1; pop = Population::new(1); @@ -193,13 +188,21 @@ async fn main() { } ui.same_line(0.); if widgets::Button::new("Save Model").ui(ui) { - if let Some(path) = save_file_dialog("Save Model", "brain.json") { + if let Some(path) = save_file_dialog("Save Model", "model.json") { pop.worlds[0].export_brain(&path); } } ui.same_line(0.); + if widgets::Button::new(slow).ui(ui) { + speedup = std::cmp::max(speedup / 10, 1); + }; + ui.same_line(0.); + if widgets::Button::new("1x").ui(ui) { + speedup = 1; + }; + ui.same_line(0.); if widgets::Button::new(fast).ui(ui) { - speedup = !speedup; + speedup = std::cmp::min(speedup * 10, 1000); }; ui.same_line(0.); if widgets::Button::new(if paused { play } else { pause }).ui(ui) { diff --git a/src/nn.rs b/src/nn.rs index 740436c..44b9365 100644 --- a/src/nn.rs +++ b/src/nn.rs @@ -99,7 +99,7 @@ impl NN { let width = width * 0.8; let height = height * 0.8; let vspace = height / (self.config.iter().max().unwrap() - 1) as f32; - let mut p1s: Vec<(f32, f32)> = Vec::new(); + let mut p1s: Vec<(f32, f32)>; let mut p2s: Vec<(f32, f32)> = Vec::new(); for (i, layer) in self .config diff --git a/src/player.rs b/src/player.rs index 23094e8..60f0e93 100644 --- a/src/player.rs +++ b/src/player.rs @@ -1,4 +1,4 @@ -use std::{f32::consts::PI, f64::consts::TAU, iter}; +use std::{f32::consts::PI, f64::consts::TAU}; use macroquad::{prelude::*, rand::gen_range};