aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2020-08-25 18:39:33 +0200
committerCharles Cabergs <me@cacharle.xyz>2020-08-25 18:39:33 +0200
commit4dccf6a313908a5d63ba01b375804e9ebef4687e (patch)
treed158385782a02a577f3a47cb1da96e3479d8c957 /src/main.rs
parentc0e7c121e96713549dce67b01f8d86ef79e6ab80 (diff)
downloadboids-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.rs34
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));
}