def wall_walk(self, x, y, dx, dy): f = 1.0/self.tilesize for gx, gy, t, hv in grid_walk(x*f, y*f, (x+dx)*f, (y+dy)*f): try: yield self.tiles[gy, gx], x+dx*t, y+dy*t except KeyError: return
def wall_clip(self, x, y, dx, dy): f = 1.0/self.tilesize for gx, gy, t, hv in grid_walk(x*f, y*f, (x+dx)*f, (y+dy)*f): try: if self.tiles[gy, gx].is_wall: return True except KeyError: return True return False
def hits_wall(x, y): for gx, gy, t, hv in grid_walk(x, y, lx, ly): if t and (gx, gy) in self.walls: return True