test, fix raycast inputs
This commit is contained in:
		
							parent
							
								
									18fd825c99
								
							
						
					
					
						commit
						991df7d76e
					
				| 
						 | 
					@ -20,6 +20,7 @@ pub struct Player {
 | 
				
			||||||
    inputs: Vec<f32>,
 | 
					    inputs: Vec<f32>,
 | 
				
			||||||
    pub outputs: Vec<f32>,
 | 
					    pub outputs: Vec<f32>,
 | 
				
			||||||
    // asteroid_data: Vec<(f32, f32, f32)>,
 | 
					    // asteroid_data: Vec<(f32, f32, f32)>,
 | 
				
			||||||
 | 
					    raycasts: Vec<f32>,
 | 
				
			||||||
    last_shot: u32,
 | 
					    last_shot: u32,
 | 
				
			||||||
    shot_interval: u32,
 | 
					    shot_interval: u32,
 | 
				
			||||||
    pub brain: Option<NN>,
 | 
					    pub brain: Option<NN>,
 | 
				
			||||||
| 
						 | 
					@ -38,7 +39,9 @@ impl Player {
 | 
				
			||||||
            brain: match config {
 | 
					            brain: match config {
 | 
				
			||||||
                Some(mut c) => {
 | 
					                Some(mut c) => {
 | 
				
			||||||
                    c.retain(|&x| x != 0);
 | 
					                    c.retain(|&x| x != 0);
 | 
				
			||||||
 | 
					                    // Number of inputs
 | 
				
			||||||
                    c.insert(0, 5);
 | 
					                    c.insert(0, 5);
 | 
				
			||||||
 | 
					                    // Number of outputs
 | 
				
			||||||
                    c.push(4);
 | 
					                    c.push(4);
 | 
				
			||||||
                    Some(NN::new(c, mut_rate.unwrap(), activ.unwrap()))
 | 
					                    Some(NN::new(c, mut_rate.unwrap(), activ.unwrap()))
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
| 
						 | 
					@ -53,6 +56,7 @@ impl Player {
 | 
				
			||||||
            alive: true,
 | 
					            alive: true,
 | 
				
			||||||
            shots: 4,
 | 
					            shots: 4,
 | 
				
			||||||
            outputs: vec![0.; 4],
 | 
					            outputs: vec![0.; 4],
 | 
				
			||||||
 | 
					            raycasts: vec![0.; 8],
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ..Default::default()
 | 
					            ..Default::default()
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -90,8 +94,8 @@ impl Player {
 | 
				
			||||||
        //     if cross.abs() <= asteroid.radius {
 | 
					        //     if cross.abs() <= asteroid.radius {
 | 
				
			||||||
        //         self.raycasts[if dot >= 0. { i } else { i + 4 }] = *partial_max(
 | 
					        //         self.raycasts[if dot >= 0. { i } else { i + 4 }] = *partial_max(
 | 
				
			||||||
        //             &self.raycasts[if dot >= 0. { i } else { i + 4 }],
 | 
					        //             &self.raycasts[if dot >= 0. { i } else { i + 4 }],
 | 
				
			||||||
        //             &(1. / (dot.abs()
 | 
					        //             &(100.
 | 
				
			||||||
        //                 - (asteroid.radius * asteroid.radius - cross * cross).sqrt())),
 | 
					        //                 / (dot.abs() - (asteroid.radius * asteroid.radius - cross * cross).sqrt())),
 | 
				
			||||||
        //         )
 | 
					        //         )
 | 
				
			||||||
        //         .unwrap();
 | 
					        //         .unwrap();
 | 
				
			||||||
        //     }
 | 
					        //     }
 | 
				
			||||||
| 
						 | 
					@ -128,7 +132,11 @@ impl Player {
 | 
				
			||||||
                (ast.vel - self.vel).x * 0.6,
 | 
					                (ast.vel - self.vel).x * 0.6,
 | 
				
			||||||
                (ast.vel - self.vel).y * 0.6,
 | 
					                (ast.vel - self.vel).y * 0.6,
 | 
				
			||||||
                self.rot / TAU as f32,
 | 
					                self.rot / TAU as f32,
 | 
				
			||||||
 | 
					                // self.vel.x / 8.,
 | 
				
			||||||
 | 
					                // self.vel.y / 8.,
 | 
				
			||||||
 | 
					                // self.rot / TAU as f32,
 | 
				
			||||||
            ];
 | 
					            ];
 | 
				
			||||||
 | 
					            // self.inputs.append(self.raycasts.as_mut());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // self.asteroid_data
 | 
					            // self.asteroid_data
 | 
				
			||||||
            //     .sort_by(|a, b| a.0.partial_cmp(&b.0).unwrap());
 | 
					            //     .sort_by(|a, b| a.0.partial_cmp(&b.0).unwrap());
 | 
				
			||||||
| 
						 | 
					@ -183,13 +191,6 @@ impl Player {
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // if is_key_pressed(KeyCode::D) {
 | 
					 | 
				
			||||||
        //     self.debug = !self.debug;
 | 
					 | 
				
			||||||
        // }
 | 
					 | 
				
			||||||
        // if is_key_pressed(KeyCode::S) {
 | 
					 | 
				
			||||||
        //     self.debug = false;
 | 
					 | 
				
			||||||
        // }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        self.vel += self.acc * self.dir - self.drag * self.vel.length() * self.vel;
 | 
					        self.vel += self.acc * self.dir - self.drag * self.vel.length() * self.vel;
 | 
				
			||||||
        self.pos += self.vel;
 | 
					        self.pos += self.vel;
 | 
				
			||||||
        if self.pos.x.abs() > WIDTH * 0.5 + 10. {
 | 
					        if self.pos.x.abs() > WIDTH * 0.5 + 10. {
 | 
				
			||||||
| 
						 | 
					@ -206,6 +207,7 @@ impl Player {
 | 
				
			||||||
            .retain(|b| b.alive && b.pos.x.abs() * 2. < WIDTH && b.pos.y.abs() * 2. < HEIGHT);
 | 
					            .retain(|b| b.alive && b.pos.x.abs() * 2. < WIDTH && b.pos.y.abs() * 2. < HEIGHT);
 | 
				
			||||||
        self.asteroid = None;
 | 
					        self.asteroid = None;
 | 
				
			||||||
        // self.asteroid_data.clear();
 | 
					        // self.asteroid_data.clear();
 | 
				
			||||||
 | 
					        // self.raycasts = vec![0.; 8];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pub fn draw(&self, color: Color, debug: bool) {
 | 
					    pub fn draw(&self, color: Color, debug: bool) {
 | 
				
			||||||
| 
						 | 
					@ -240,8 +242,8 @@ impl Player {
 | 
				
			||||||
            //     draw_line(
 | 
					            //     draw_line(
 | 
				
			||||||
            //         self.pos.x,
 | 
					            //         self.pos.x,
 | 
				
			||||||
            //         self.pos.y,
 | 
					            //         self.pos.y,
 | 
				
			||||||
            //         self.pos.x + dir.x / r,
 | 
					            //         self.pos.x + dir.x * 100. / r,
 | 
				
			||||||
            //         self.pos.y + dir.y / r,
 | 
					            //         self.pos.y + dir.y * 100. / r,
 | 
				
			||||||
            //         1.,
 | 
					            //         1.,
 | 
				
			||||||
            //         GRAY,
 | 
					            //         GRAY,
 | 
				
			||||||
            //     );
 | 
					            //     );
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue