Exemplo n.º 1
0
    def move_to_player(self, player_pos, enemies):
        dx = player_pos.x - self.pos.x
        dy = player_pos.y - self.pos.y

        vel = Vector(dx, dy)
        vel.normalise()
        vel.mult(self.speed)

        for enemy in enemies:
            if (d := sqrt((enemy.pos.x - self.pos.x)**2 +
                          (enemy.pos.y - self.pos.y)**2)) > 0 and d < 50:
                diff = enemy.pos - self.pos
                diff.normalise()
                vel.sub(diff)
Exemplo n.º 2
0
class Bullet():
    def __init__(self, x, y, px, py):
        self.pos = Vector(x, y)
        self.speed = 10
        self.size = 5

        dx = px - x
        dy = py - y

        self.vel = Vector(dx, dy)
        self.vel.normalise()
        self.vel.mult(self.speed)

        self.is_live = True
        self.lethal = False
        self.to_die = False
        self.ttl = 100
        self.till_lethal = self.ttl - 20

        self.rect = pygame.Rect(self.pos.x, self.pos.y, self.size, self.size)

    def show(self, screen):
        if self.lethal:
            c = colors.bullet
        else:
            c = colors.non_lethal
        pygame.draw.circle(screen, c, (int(self.pos.x), int(self.pos.y)),
                           self.size)

    def update(self):
        self.pos.add(self.vel)
        self.rect = pygame.Rect(self.pos.x, self.pos.y, self.size, self.size)
        self.ttl -= 1

        if self.ttl < self.till_lethal:
            self.lethal = True

        if self.pos.x >= envir.size[0]:
            self.pos.x = envir.size[0]
            self.vel.x *= -1
            if self.to_die:
                self.is_live = False

        if self.pos.x <= 0:
            self.pos.x = 0
            self.vel.x *= -1
            if self.to_die:
                self.is_live = False

        if self.pos.y >= envir.ground:
            self.pos.y = envir.ground
            self.vel.y *= -1
            if self.to_die:
                self.is_live = False

        if self.pos.y <= 0:
            self.pos.y = 0
            self.vel.y *= -1
            if self.to_die:
                self.is_live = False

        if self.ttl <= 0:
            self.to_die = True