This commit is contained in:
2019-10-23 16:38:50 +02:00
parent 80319712d0
commit 8511af2e2c
5 changed files with 83 additions and 44 deletions

35
car.py
View File

@@ -1,4 +1,5 @@
import numpy as np
import random
import pygame
from brain import Neural_Network
@@ -9,7 +10,7 @@ IMG = pygame.image.load("car20.png")#.convert()
class Car(pygame.sprite.Sprite):
def __init__(self):
def __init__(self, brain=None):
pygame.sprite.Sprite.__init__(self)
self.top_surface = pygame.Surface((CAR_SIZE, CAR_SIZE))
self.original_image = IMG
@@ -21,9 +22,6 @@ class Car(pygame.sprite.Sprite):
self.rect = self.image.get_rect()
self.rect.center = (75, GY -50)
self.speed = 1
self.heading = 0
self.heading_change = 0
self.vision_length = VISION_LENGTH # line liength
self.vision_span = VISION_SPAN # degrees
self.draw_sensors = True
@@ -41,12 +39,20 @@ class Car(pygame.sprite.Sprite):
self.sensors = [self.left_sensor, self.center_sensor, self.right_sensor]
self.probes = [self.vision_length] *3
self.brain = Neural_Network()
if brain :
self.brain = brain
else :
self.brain = Neural_Network()
self.reset_car_pos()
self.update_sensors()
self.probe_brain()
self.run = True
def reset_car_pos(self):
self.speed = 1
self.heading = 0
self.heading_change = random.random() * 30
def update_sensors(self):
center = self.rect.center
@@ -83,7 +89,8 @@ class Car(pygame.sprite.Sprite):
if dist < 1.2 * self.speed or self.speed < 0.01 :
self.run = False
self.speed = 0
print(f'Car {id(self)} crashed')
# print(f'Car {id(self)} crashed')
return
# else :
# self.probes[idx] = self.vision_length * 2
@@ -106,13 +113,13 @@ class Car(pygame.sprite.Sprite):
if self.speed < 0.01 :
self.run = False
print(f'Car {id(self)} crashed')
print(
'id', id(self),
'Speed', self.speed,
'heading', self.heading,
'throttle', self.throttle,
'heading change', self.heading_change,
)
# print(
# 'id', id(self),
# 'Speed', self.speed,
# 'heading', self.heading,
# 'throttle', self.throttle,
# 'heading change', self.heading_change,
# )
if self.speed :
self.heading += self.heading_change * CAR_STEERING_FACTOR / self.speed