def draw_safe(self, display, y): x, y = self.coord(y) pygame.draw.rect(display, THECOLORS.get('lightpink'), ((x - self.safety_border[0]) * ZOOM, (y - self.safety_border[1]) * ZOOM, (self.size[0] + self.safety_border[0] + 1) * ZOOM, (self.size[1] + self.safety_border[1] + 1) * ZOOM))
def render(self): self.DISPLAY.fill(THECOLORS.get('white')) pygame.draw.rect(self.DISPLAY, THECOLORS.get('grey'), (0, 0, ROAD_W * ZOOM, ROAD_H * ZOOM)) for v in self.ov: v.draw_safe(self.DISPLAY, self.car.pos[1]) self.car.draw_safe(self.DISPLAY, self.car.pos[1]) for v in self.ov: v.draw(self.DISPLAY, self.car.pos[1]) self.car.draw(self.DISPLAY, self.car.pos[1]) pygame.display.update() bluepx = pygame.surfarray.pixels_blue(self.DISPLAY) bluepx = np.array(bluepx).astype(int) redpx = pygame.surfarray.pixels_red(self.DISPLAY) redpx = np.array(redpx).astype(int) greenpx = pygame.surfarray.pixels_green(self.DISPLAY) greenpx = np.array(greenpx).astype(int) greenpx[greenpx != 255] = 0 greenpx[greenpx == 255] = 1 bluepx[bluepx != 255] = 0 bluepx[bluepx == 255] = 1 redpx[redpx != 255] = 0 redpx[redpx == 255] = 1 self.road.pole = 2 * bluepx[::ZOOM, :: ZOOM] + 2 * greenpx[::ZOOM, :: ZOOM] + redpx[::ZOOM, :: ZOOM] - 1 quit_ = False for event in pygame.event.get(): if event.type == QUIT: quit_ = True return quit_
def __init__(self, pos, size, v, color='blue'): self.pos = np.array(pos) self.size = size self.v = v self.safety_border = (1, 1) self.color = THECOLORS.get(color)