diff --git a/car.py b/car.py index dac6df0..b7ecb8e 100644 --- a/car.py +++ b/car.py @@ -49,7 +49,7 @@ class Car(pygame.sprite.Sprite): self.left_sensor = None self.right_sensor = None self.sensors = [self.left_sensor, self.center_sensor, self.right_sensor] - self.probes = [self.vision_length] * 3 + self.probes = [1] * 3 if brain: self.brain = brain @@ -69,7 +69,7 @@ class Car(pygame.sprite.Sprite): 75 - int(random.random() * 20) - 10, GY - 50 - int(random.random() * 20) - 10, ) - self.speed = 1 + self.speed = 10 self.heading = random.random() * 20 self.heading_change = random.random() * 30 @@ -116,7 +116,7 @@ class Car(pygame.sprite.Sprite): def probe_lines_proximity(self, lines): # print(self.center_sensor, lines[0]) - self.probes = [self.vision_length * 2] * 3 + self.probes = [1] * 3 for idx, sensor in enumerate( [self.left_sensor, self.center_sensor, self.right_sensor] ): @@ -126,22 +126,20 @@ class Car(pygame.sprite.Sprite): if ip: if self.draw_sensors: pygame.draw.circle(screen, (125, 125, 255), ip, 4, 2) - dist = int(distance(ip, self.rect.center)) - self.probes[idx] = min(dist, self.probes[idx]) - if dist < 1 * self.speed or self.speed < 0.01: + dist = distance(ip, self.rect.center) + self.probes[idx] = min(dist / self.vision_length, self.probes[idx]) + if dist < 5 * self.speed or self.speed < 1: self.run = False self.speed = 0 # print(f'Car {id(self)} crashed') return - else: - self.probes[idx] = self.vision_length * 1.1 # print(self.probes) def probe_brain(self): res = self.brain.predict(np.array(self.probes + [self.speed])) - self.heading_change = res[0] * 30 - self.throttle = res[1] * 5 + self.heading_change = res[0] + self.throttle = res[1] def update(self): # rotate @@ -172,14 +170,10 @@ class Car(pygame.sprite.Sprite): self.heading += self.heading_change * CAR_STEERING_FACTOR / self.speed self.heading = self.heading % 360 - self.speed += self.throttle # THROTTLE_POWER - # if self.throttle : - # self.speed += self.throttle #THROTTLE_POWER - # else : - # self.speed -= self.throttle #THROTTLE_POWER - + self.speed += self.throttle # * THROTTLE_POWER self.speed = max(0, self.speed) self.speed = min(self.speed, CAR_MAX_SPEED) + print("speed", self.speed) super().update()