diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2020-08-25 18:39:33 +0200 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2020-08-25 18:39:33 +0200 |
| commit | 4dccf6a313908a5d63ba01b375804e9ebef4687e (patch) | |
| tree | d158385782a02a577f3a47cb1da96e3479d8c957 /src/main.rs | |
| parent | c0e7c121e96713549dce67b01f8d86ef79e6ab80 (diff) | |
| download | boids-4dccf6a313908a5d63ba01b375804e9ebef4687e.tar.gz boids-4dccf6a313908a5d63ba01b375804e9ebef4687e.tar.bz2 boids-4dccf6a313908a5d63ba01b375804e9ebef4687e.zip | |
Added Vector2 for direction, steering behavior gut draft not working
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/src/main.rs b/src/main.rs index 4c6ce8f..2c633cc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,21 +1,39 @@ extern crate sdl2; +extern crate rand; use sdl2::event::Event; use sdl2::keyboard::Keycode; use sdl2::pixels::Color; -use sdl2::rect::Point; +use rand::Rng; + +pub mod vector2; pub mod boid; use boid::Boid; +const HEIGHT: i32 = 480; +const WIDTH: i32 = 640; +const BOIDS_NUM: usize = 100; +// const NEIGHBOURS_RADIUS: i32 = ((HEIGHT + WIDTH) / 2) / 10; + fn main() { let sdl = sdl2::init().unwrap(); let video_subsys = sdl.video().unwrap(); - let window = video_subsys.window("boids", 640, 480).build().unwrap(); + let window = video_subsys.window("boids", WIDTH as u32, HEIGHT as u32).build().unwrap(); let mut canvas = window.into_canvas().build().unwrap(); - let mut b = Boid::new(Point::new(50, 50)); + let mut boids: Vec<Boid> = Vec::with_capacity(BOIDS_NUM); + + let mut rng = rand::thread_rng(); + for _ in 0..BOIDS_NUM { + boids.push(Boid::new( + rng.gen_range(0, WIDTH as i32), + rng.gen_range(0, HEIGHT as i32), + rng.gen_range(-2.0, 2.0), + rng.gen_range(-2.0, 2.0), + )); + } let mut event_pump = sdl.event_pump().unwrap(); 'main: loop { @@ -31,11 +49,17 @@ fn main() { canvas.set_draw_color(Color::RGB(0, 0, 0)); canvas.clear(); canvas.set_draw_color(Color::RGB(200, 200, 200)); - b.draw(&mut canvas); + for b in boids.iter() { + b.draw(&mut canvas); + } canvas.present(); - b.step(); + let prev_boids = boids.clone(); + + for b in boids.iter_mut() { + b.step(&prev_boids, WIDTH, HEIGHT); + } std::thread::sleep(std::time::Duration::new(0, 50_000_000)); } |
