we have a track / ready to ML
This commit is contained in:
99
main.py
99
main.py
@@ -7,12 +7,15 @@ from trigo import angle_to_vector, get_line_feats, segments_intersection, distan
|
||||
|
||||
FLAGS= HWSURFACE | DOUBLEBUF #| FULLSCREEN
|
||||
|
||||
GX = 800
|
||||
GY = 800
|
||||
GX = 1000
|
||||
GY = 1000
|
||||
CELL_COLOR = (80,80,80)
|
||||
CAR_SIZE=50
|
||||
CAR_SIZE=25
|
||||
VISION_LENGTH = 50
|
||||
VISION_SPAN = 25 # degrees
|
||||
THROTTLE_POWER = 3
|
||||
pygame.init()
|
||||
IMG = pygame.image.load("car50.png")#.convert()
|
||||
IMG = pygame.image.load("car25.png")#.convert()
|
||||
|
||||
|
||||
|
||||
@@ -29,12 +32,12 @@ class Car(pygame.sprite.Sprite):
|
||||
self.image = self.original_image
|
||||
|
||||
self.rect = self.image.get_rect()
|
||||
self.rect.center = (GX / 2, GY / 2)
|
||||
self.rect.center = (75, GY -50)
|
||||
self.speed = 5
|
||||
self.heading = 0
|
||||
self.heading_change = 0
|
||||
self.vision_length = 200 # line liength
|
||||
self.vision_span = 22 # degrees
|
||||
self.vision_length = VISION_LENGTH # line liength
|
||||
self.vision_span = VISION_SPAN # degrees
|
||||
self.draw_sensors = True
|
||||
|
||||
# lets add 3 sensors as a start
|
||||
@@ -51,6 +54,9 @@ class Car(pygame.sprite.Sprite):
|
||||
self.sensors = [self.left_sensor, self.center_sensor, self.right_sensor]
|
||||
self.probes = [self.vision_length] *3
|
||||
|
||||
self.heading_change = 0
|
||||
self.throttle = 0
|
||||
|
||||
|
||||
def update_sensors(self):
|
||||
center = self.rect.center
|
||||
@@ -72,7 +78,6 @@ class Car(pygame.sprite.Sprite):
|
||||
|
||||
|
||||
|
||||
|
||||
def update(self):
|
||||
# rotate
|
||||
old_center = self.rect.center
|
||||
@@ -81,8 +86,17 @@ class Car(pygame.sprite.Sprite):
|
||||
self.rect.center = old_center
|
||||
self.update_position()
|
||||
|
||||
self.heading += self.heading_change
|
||||
self.heading = self.heading % 360
|
||||
if self.speed :
|
||||
self.heading += self.heading_change / self.speed
|
||||
self.heading = self.heading % 360
|
||||
|
||||
if self.throttle :
|
||||
self.speed += THROTTLE_POWER
|
||||
else :
|
||||
self.speed -= THROTTLE_POWER
|
||||
|
||||
self.speed = max(0, self.speed)
|
||||
|
||||
super().update()
|
||||
|
||||
|
||||
@@ -113,6 +127,7 @@ class Car(pygame.sprite.Sprite):
|
||||
|
||||
|
||||
|
||||
|
||||
screen = pygame.display.set_mode((GX, GY), FLAGS)
|
||||
screen.set_alpha(None)
|
||||
|
||||
@@ -121,9 +136,9 @@ all_cars = pygame.sprite.Group()
|
||||
# car.heading = 0
|
||||
# all_cars.add(car)
|
||||
car2 = Car()
|
||||
car2.heading = 270
|
||||
car2.heading_change = 3
|
||||
car2.speed = 5
|
||||
car2.heading = 0
|
||||
car2.heading_change = 30
|
||||
car2.speed = 25
|
||||
all_cars.add(car2)
|
||||
|
||||
ip = segments_intersection(car2.center_sensor, car2.left_sensor)
|
||||
@@ -141,23 +156,53 @@ ip = segments_intersection(car2.center_sensor, car2.left_sensor)
|
||||
# car.speed = int(random.random()*6)
|
||||
# all_cars.add(car)
|
||||
|
||||
lines = [
|
||||
[
|
||||
(
|
||||
int(random.random()*GX),
|
||||
int(random.random()*GY)
|
||||
),(
|
||||
int(random.random()*GX),
|
||||
int(random.random()*GY)
|
||||
)
|
||||
]
|
||||
for x in range(10)
|
||||
]
|
||||
# lines = [
|
||||
# [(int(GX/2)+100, int(GY/2+225)), (int(GX/2)+100, int(GY/2-225))]
|
||||
|
||||
# [
|
||||
# (
|
||||
# int(random.random()*GX),
|
||||
# int(random.random()*GY)
|
||||
# ),(
|
||||
# int(random.random()*GX),
|
||||
# int(random.random()*GY)
|
||||
# )
|
||||
# ]
|
||||
# for x in range(10)
|
||||
# ]
|
||||
|
||||
path = [
|
||||
(25, int(GY-25)),
|
||||
(int(GX/2), int(GY-25)),
|
||||
(int(GX/2 + 75), int(GY-150)),
|
||||
(int(GX/2 + 150), int(GY-150)),
|
||||
(int(GX -75), int(GY/2)),
|
||||
(int(GX/2), int(GY/2 - 75)),
|
||||
(int(GX/2), int(GY/2 - 150)),
|
||||
(int(GX -50), int( GY/4 )),
|
||||
(int(3*GX/4 - 50), int(50)),
|
||||
(int(50), int(50)),
|
||||
(int(100), int(GY/2)),
|
||||
(25, int(GY-25)),
|
||||
]
|
||||
|
||||
path2 = [
|
||||
(100, int(GY-85)),
|
||||
(int(GX/2 - 50 ), int(GY-85)),
|
||||
(int(GX/2 + 50), int(GY-210)),
|
||||
(int(GX/2 + 110), int(GY-210)),
|
||||
(int(GX - 170), int(GY/2 + 30)),
|
||||
(int(GX/2 - 60 ), int(GY/2 - 20)),
|
||||
(int(GX/2 - 60), int(GY/2 - 200)),
|
||||
(int(GX -170), int( GY/4 -20)),
|
||||
(int(3*GX/4 - 100), int(120)),
|
||||
(int(120), int(120)),
|
||||
(int(175), int(GY/2)),
|
||||
(100, int(GY-85)),
|
||||
]
|
||||
|
||||
lines = [[path[i], path[i+1]] for i in range(len(path)-1)]
|
||||
lines2 = [[path2[i], path2[i+1]] for i in range(len(path2)-1)]
|
||||
|
||||
lines = lines + lines2
|
||||
print(lines)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user