def move(self): """ Returns relative movement. >>> spaceship = Spaceship('@', 'Galactica', (0, 0, 0, 0)) >>> spaceship.accelerate(700) >>> spaceship.move() [] >>> spaceship.move() [(0, -1)] """ directions = [] if self.pointer not in self.inertia.keys(): self.inertia[self.pointer] = [self.speed, self.speed, 0] for pointer, (speed, inertia, movement) in self.inertia.items(): speed = self.speed if pointer == self.pointer else 0 self.inertia[pointer][0] = speed if inertia > speed: inertia -= self.control elif inertia < speed: inertia += self.control self.inertia[pointer][1] = inertia movement += inertia if movement >= 1000: movement -= 1000 path = bresenham.get_line((0, 0), self.pointers[pointer]) x, y = path[1] directions.append((x, y)) self.inertia[pointer][2] = movement return directions
def __init__(self, direction, damage, speed, lifespan): """ >>> Projectile((-2, 0), 8, 800, 10) <class 'Projectile'> """ self.char = '*' self.directions = bresenham.get_line((0, 0), direction)[1:] self.position = 0 self.lifestep = 0 self.lifespan = lifespan self.damage = damage self.speed = speed self.movement = 0 self.alive = True self.coords = (0, 0, 0, 0) self.default_color = True
if (x0 - sight <= x <= x0 + sight): nx, ny = x - x0 + r, y - y0 + r if pointer and (x, y) == pointer: rel_pointer = (nx, ny) if look and (x, y) == look: rel_look = (nx, ny) if (x, y) in visible_tiles: obj = l.get_objects((x, y))[-1] view[ny][nx] = obj.get_char() if not obj.is_default_color(): colors[(nx, ny)] = obj.get_color() for y, line in enumerate(view): view[y] = ''.join(line) return view, colors, rel_pointer, rel_look def visible_tiles(self, (x0, y0), r, sight): l = self.level visible = [] for y in xrange(y0 - r, y0 + r + 1): if y0 - sight <= y <= y0 + sight: for x in xrange(x0 - r, x0 + r + 1): if (x0 - sight <= x <= x0 + sight): line = bresenham.get_line((x0, y0), (x, y)) is_blocker = False for (ix, iy) in line: if not is_blocker and (ix, iy) not in visible: visible.append((ix, iy)) if l.is_view_blocker((ix, iy)): is_blocker = True return visible