use macroquad::prelude::*; use macroquad::rand; #[macroquad::main("MyGame")] async fn main() { let mut rand_name = String::from("Random bangalore area names"); let mut last_update = 0.0; loop { clear_background(WHITE); write_name(&rand_name); let t = get_time(); if t - last_update > 1.75 { rand_name = random_name(); last_update = get_time(); } next_frame().await } } fn write_name(random_name: &str) { let font_size = 40.0; let width = screen_width(); let height = screen_height(); let text_dimensions = measure_text(random_name, None, font_size as u16, 1.0); draw_text( &random_name, (width - text_dimensions.width) / 2., (height - text_dimensions.height) / 2., font_size, DARKGRAY, ); } fn random_name() -> String { let prefix = read_segments(include_str!("./data/prefix.txt")); let mid = read_segments(include_str!("./data/mid.txt")); let suffix = read_segments(include_str!("./data/suffix.txt")); format!( "{}{}{}", choose_random(&prefix), choose_random(&mid), choose_random(&suffix) ) } fn choose_random(prefix: &[&str]) -> String { let idx = rand::gen_range(0, prefix.len()); match prefix.get(idx) { Some(&name) => name.to_string(), None => String::new(), } } fn read_segments(file_contents: &str) -> Vec<&str> { file_contents.lines().collect::>() }