have a couple ants walking in different directions
This commit is contained in:
parent
c7cb4dfc91
commit
8052976133
1 changed files with 39 additions and 5 deletions
44
src/main.rs
44
src/main.rs
|
@ -1,7 +1,9 @@
|
|||
use macroquad::prelude::*;
|
||||
use std::f32::consts::PI;
|
||||
|
||||
fn window_conf() -> Conf {
|
||||
Conf {
|
||||
window_title: "Ants".to_string(),
|
||||
fullscreen: false,
|
||||
window_width: 1280,
|
||||
window_height: 720,
|
||||
|
@ -9,18 +11,50 @@ fn window_conf() -> Conf {
|
|||
}
|
||||
}
|
||||
|
||||
static ANT_SPEED: f32 = 20.;
|
||||
|
||||
struct Ant {
|
||||
pos: Vec2,
|
||||
dir: f32,
|
||||
}
|
||||
|
||||
impl Ant {
|
||||
fn walk(&mut self) {
|
||||
let acceleration = Vec2::new(self.dir.sin(), -self.dir.cos());
|
||||
self.pos += acceleration * ANT_SPEED * get_frame_time();
|
||||
}
|
||||
fn draw(&self) {
|
||||
draw_circle(self.pos.x, self.pos.y, 1., WHITE);
|
||||
}
|
||||
}
|
||||
|
||||
fn init_ants(num_ants: i32) -> Vec<Ant> {
|
||||
let dir_steps = PI * 2. / num_ants as f32;
|
||||
(0..num_ants)
|
||||
.into_iter()
|
||||
.map(|n| Ant {
|
||||
pos: Vec2::new(400., 200.),
|
||||
dir: n as f32 * dir_steps,
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
#[macroquad::main(window_conf)]
|
||||
async fn main() {
|
||||
let map = load_texture("map_scaled.png").await.unwrap();
|
||||
let mut ants = init_ants(16);
|
||||
loop {
|
||||
clear_background(BEIGE);
|
||||
|
||||
draw_texture(map, 0., 0., WHITE);
|
||||
|
||||
// actions
|
||||
ants.iter_mut().for_each(|ant| ant.walk());
|
||||
if is_key_down(KeyCode::Escape) || is_quit_requested() {
|
||||
return;
|
||||
}
|
||||
|
||||
// render
|
||||
clear_background(BEIGE);
|
||||
draw_texture(map, 0., 0., WHITE);
|
||||
ants.iter().for_each(|ant| ant.draw());
|
||||
|
||||
next_frame().await
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue