This commit is contained in:
2019-10-11 14:06:51 +02:00
parent e18bd1aae6
commit 88df39584f

52
main.py
View File

@@ -48,9 +48,8 @@ class Car(pygame.sprite.Sprite):
self.left_sensor = None
self.right_sensor = None
self.update_sensors()
self.sensors = [self.left_sensor]#, self.center_sensor, self.right_sensor]
self.reset_probes()
self.sensors = [self.left_sensor, self.center_sensor, self.right_sensor]
self.probes = [self.vision_length] *3
def update_sensors(self):
@@ -90,42 +89,27 @@ class Car(pygame.sprite.Sprite):
def show_features(self):
if self.draw_sensors:
pygame.draw.line(screen, (255,0,0), self.center_sensor[0], self.center_sensor[1])
# pygame.draw.line(screen, (0,255,0), self.left_sensor[0], self.left_sensor[1])
# pygame.draw.line(screen, (0,0,255), self.right_sensor[0], self.right_sensor[1])
pygame.draw.line(screen, (0,255,0), self.left_sensor[0], self.left_sensor[1])
pygame.draw.line(screen, (0,0,255), self.right_sensor[0], self.right_sensor[1])
pygame.draw.circle(screen, (125,255,125), self.rect.center, 4, 2)
def reset_probes(self):
self.probes = [self.vision_length*2]#*3
def probe_lines_proximity(self, lines):
# print(self.center_sensor, lines[0])
ip = segments_intersection(self.center_sensor, lines[0])
self.probes = [self.vision_length*2] *3
for idx,sensor in enumerate([self.left_sensor, self.center_sensor, self.right_sensor]) :
for line in lines :
ip = segments_intersection(sensor, line)
# print(ip)
if ip :
pygame.draw.circle(screen, (125,125,255), ip, 4, 2)
print(distance(ip,self.rect.center))
# self.reset_probes()
# # print([x for x in zip(self.sensors, self.probes)])
# for l in lines :
# for i,s in enumerate(self.sensors) :
# ip = segments_intersection(s,l)
# print(s, l)
# if ip :
# # print("ip", ip)
# d = distance(ip, self.left_sensor[1])
# # print('d',d)
# # print('p was', p, 'is' , min(p,d))
# self.probes[i] = min(self.probes[i],d)
# # print()
dist = int(distance(ip,self.rect.center))
self.probes[idx] = min(dist, self.probes[idx])
# else :
# print('nothing found')
# pass
# # print(f"D to line {l} :", self.probes)
# print(f"probes :", self.probes)
# print()
# self.probes[idx] = self.vision_length * 2
print(self.probes)
@@ -167,12 +151,12 @@ lines = [
int(random.random()*GY)
)
]
for x in range(1)
for x in range(10)
]
lines = [
[(int(GX/2)+100, int(GY/2+225)), (int(GX/2)+100, int(GY/2-225))]
# lines = [
# [(int(GX/2)+100, int(GY/2+225)), (int(GX/2)+100, int(GY/2-225))]
]
# ]
print(lines)
@@ -194,4 +178,4 @@ while True :
# pygame.draw.circle(screen, (125,255,125), point, 4, 2)
pygame.display.flip()
clock.tick(3)
clock.tick(1)