diff --git a/car25.png b/car25.png new file mode 100644 index 0000000..cc3bae4 Binary files /dev/null and b/car25.png differ diff --git a/main.py b/main.py index 1bbaec8..81142ac 100755 --- a/main.py +++ b/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 @@ -50,6 +53,9 @@ class Car(pygame.sprite.Sprite): self.update_sensors() 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): @@ -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)