class Lane(): def __init__(self, initial_x, direction, is_last): self.x = initial_x self.direction = direction self.is_last = is_last self.width = c.LANE_WIDTH + c.DOTTED_LINE_WIDTH if self.is_last: self.width -= +c.DOTTED_LINE_WIDTH self.light = 0 self.light_pos = 0 def create_light(self): if self.light == 0: self.light_pos = c.LIGHT_POSITION self.light = Light(self.x, self.light_pos, self.width) def get_light_position(self): return self.light_pos def turn_light_red(self): self.light.stop() def turn_light_green(self): self.light.go() def is_light_green(self): return self.light.is_green() def is_light_yellow(self): return self.light.is_yellow() def cancel_light(self): if self.light != 0: self.light.cancel_timer() def has_light(self): return self.light != 0 def get_start_position(self): return self.x def get_end_position(self): return self.x + self.width def get_car_x(self): return self.x + (self.width - c.CAR_WIDTH) / 2 def get_direction(self): return self.direction def draw(self, canvas): canvas.create_rectangle(self.x, 0, self.x+self.width, \ c.HEIGHT, outline=c.COLOR_STREET_GRAY, fill=c.COLOR_STREET_GRAY) if (not self.is_last): middle_pos = self.x + self.width canvas.create_line(middle_pos, 0, middle_pos, c.HEIGHT, fill=c.COLOR_WHITE, width=c.DOTTED_LINE_WIDTH, dash=(40, 40)) if (self.light != 0): self.light.draw(canvas)
class Minotaur(Ennemy): def __init__(self, x, y, start, end): super(Minotaur, self).__init__(x, y) # liste des sprite d'animation des ennemis self.sprites = { 'idle': Sprite('Assets/Minotaur/min_idle_light.png', 10, 1, 2), 'idleNo': Sprite('Assets/Minotaur/min_idle_NOlight.png', 10, 1, 2), 'walks': Sprite('Assets/Minotaur/min_walking.png', 10, 1, 2) } self.light = Light(self.x, self.y) self.start = start self.end = end self.peur = False def events(self): if self.x < self.start or self.x > self.end: self.velocity = -self.velocity self.flip = self.velocity < 0 def move(self): self.x += self.velocity self.light.x += self.velocity def attack(self): self.peur = True def draw(self, fenetre): s = '' if not self.peur: self.events() self.move() self.light.draw(fenetre) if self.velocity == 0: self.sprites['idle'].draw(fenetre, self.x, self.y, self.flip) s = 'idle' else: self.sprites['walks'].draw(fenetre, self.x, self.y, self.flip) s = 'walks' self.hitbox = pygame.rect.Rect(self.x + self.sprites[s].handle[7][0] - 20, self.y + self.sprites[s].handle[7][1], self.sprites[s].cells[0][2] + 30, self.sprites[s].cells[0][3] ) else: self.hitbox = None self.sprites['idleNo'].draw(fenetre, self.x, self.y, self.flip) s = 'idleNo' self.peur = False