running
This commit is contained in:
35
car.py
35
car.py
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user