frame independent -> dependent, nn
This commit is contained in:
		
							parent
							
								
									6e1b0f9d3b
								
							
						
					
					
						commit
						e66d8ff9d4
					
				|  | @ -36,15 +36,15 @@ impl Asteroid { | |||
|         ); | ||||
|         Self { | ||||
|             pos: r, | ||||
|             vel: 0.1 * -r | ||||
|             vel: 0.001 * -r | ||||
|                 + vec2( | ||||
|                     gen_range(20., 60.) * if gen_range(0., 1.) > 0.5 { -1. } else { 1. }, | ||||
|                     gen_range(20., 60.) * if gen_range(0., 1.) > 0.5 { -1. } else { 1. }, | ||||
|                     gen_range(0.3, 1.) * if gen_range(0., 1.) > 0.5 { -1. } else { 1. }, | ||||
|                     gen_range(0.3, 1.) * if gen_range(0., 1.) > 0.5 { -1. } else { 1. }, | ||||
|                 ), | ||||
|             size: size, | ||||
|             sides: sides, | ||||
|             radius: radius, | ||||
|             omega: gen_range(50., 200.) * if gen_range(0., 1.) > 0.5 { -1. } else { 1. }, | ||||
|             omega: gen_range(0.8, 3.5) * if gen_range(0., 1.) > 0.5 { -1. } else { 1. }, | ||||
|             rot: 0., | ||||
|             alive: true, | ||||
|         } | ||||
|  |  | |||
							
								
								
									
										14
									
								
								src/main.rs
								
								
								
								
							
							
						
						
									
										14
									
								
								src/main.rs
								
								
								
								
							|  | @ -16,15 +16,15 @@ async fn main() { | |||
|         ..Default::default() | ||||
|     }; | ||||
|     set_camera(&cam); | ||||
|     // let mut world = World::new();
 | ||||
|     let mut nn = NN::new(vec![1, 2, 1]); | ||||
|     let mut world = World::new(); | ||||
|     // let mut nn = NN::new(vec![1, 2, 1]);
 | ||||
| 
 | ||||
|     loop { | ||||
|         // clear_background(BLACK);
 | ||||
|         // if !world.over {
 | ||||
|         //     world.update();
 | ||||
|         // }
 | ||||
|         // world.draw();
 | ||||
|         clear_background(BLACK); | ||||
|         if !world.over { | ||||
|             world.update(); | ||||
|         } | ||||
|         world.draw(); | ||||
|         next_frame().await | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -56,29 +56,39 @@ impl Player { | |||
| 
 | ||||
|     pub fn update(&mut self) { | ||||
|         let mut mag = 0.; | ||||
|         if is_key_down(KeyCode::Right) { | ||||
|             self.rot += 5.; | ||||
|         let mut keys = vec![false, false, false]; | ||||
|         if let Some(brain) = &self.brain { | ||||
|             keys = brain | ||||
|                 .feed_forward(vec![ | ||||
|                     self.pos.x, self.pos.y, self.vel.x, self.vel.y, self.rot, | ||||
|                 ]) | ||||
|                 .iter() | ||||
|                 .map(|&x| if x > 0. { true } else { false }) | ||||
|                 .collect(); | ||||
|         } | ||||
|         if is_key_down(KeyCode::Right) || keys[0] { | ||||
|             self.rot += 0.1; | ||||
|             self.dir = vec2(self.rot.cos(), self.rot.sin()); | ||||
|         } | ||||
|         if is_key_down(KeyCode::Left) { | ||||
|             self.rot -= 5.; | ||||
|         if is_key_down(KeyCode::Left) || keys[1] { | ||||
|             self.rot -= 0.1; | ||||
|             self.dir = vec2(self.rot.cos(), self.rot.sin()); | ||||
|         } | ||||
|         if is_key_down(KeyCode::Up) { | ||||
|             mag = 360.; | ||||
|         if is_key_down(KeyCode::Up) || keys[2] { | ||||
|             mag = 0.14; | ||||
|         } | ||||
|         if is_key_down(KeyCode::Space) { | ||||
|             if self.shot_interval + self.last_shot < get_time() as f32 { | ||||
|                 self.last_shot = get_time() as f32; | ||||
|                 self.bullets.push(Bullet { | ||||
|                     pos: self.pos + self.dir.rotate(vec2(20., 0.)), | ||||
|                     vel: self.dir.rotate(vec2(500., 0.)) + self.vel, | ||||
|                     vel: self.dir.rotate(vec2(8.5, 0.)) + self.vel, | ||||
|                     alive: true, | ||||
|                 }); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         self.vel += (mag * self.dir - self.drag * self.vel.length() * self.vel); | ||||
|         self.vel += mag * self.dir - self.drag * self.vel.length() * self.vel; | ||||
|         self.pos += self.vel; | ||||
|         if self.pos.x.abs() > screen_width() / 2. + 10. { | ||||
|             self.pos.x *= -1.; | ||||
|  |  | |||
|  | @ -40,7 +40,7 @@ impl World { | |||
|                 self.score += 1; | ||||
|                 match asteroid.size { | ||||
|                     AsteroidSize::Large => { | ||||
|                         let rand = vec2(gen_range(-50., 50.), gen_range(-50., 50.)); | ||||
|                         let rand = vec2(gen_range(-0.8, 0.8), gen_range(-0.8, 0.8)); | ||||
|                         to_add.push(Asteroid::new_from( | ||||
|                             asteroid.pos, | ||||
|                             asteroid.vel + rand, | ||||
|  | @ -53,7 +53,7 @@ impl World { | |||
|                         )); | ||||
|                     } | ||||
|                     AsteroidSize::Medium => { | ||||
|                         let rand = vec2(gen_range(-40., 40.), gen_range(-40., 40.)); | ||||
|                         let rand = vec2(gen_range(-0.6, 0.6), gen_range(-0.6, 0.6)); | ||||
|                         to_add.push(Asteroid::new_from( | ||||
|                             asteroid.pos, | ||||
|                             asteroid.vel + rand, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue