def singlelevel(Points): k = 0 while (k < ST.TIME / ST.ITERATIONTIME): Tree = QT.tree(QT.Rect(ST.MINX, ST.MAXX, ST.MAXY, ST.MINY)) Tree.QuadtreeBuild(Points.values()) Tree.QuadTreeShrink(Tree.root) Multipole_Framework(Points, Tree) k = k + 1
def update(self): """ Returns: """ self.last_update = [] quad_tree = QuadTree.QuadTree( QuadTree.Rect(self.board.centerx, self.board.centery, self.board.width / 2, self.board.height / 2), 5) for key, orb in self.orbs.iteritems(): quad_tree.insert(QuadTree.Point(orb.point.x, orb.point.y, key)) self.move_snakes() self.orbs_collision(quad_tree) self.snakes_collision() self.border_collision() self.add_orbs()
def orbs_collision(self, quad_tree): """ Args: quad_tree: Returns: """ for snake in self.snakes.itervalues(): for sector in [snake.head] + snake.tail: range = QuadTree.Rect(sector.point.x, sector.point.y, sector.radius + objects.Orb.MAX_RADIUS, sector.radius + objects.Orb.MAX_RADIUS) orbs = quad_tree.qurey(range) for orb_point in orbs: key = orb_point.data if key not in self.orbs: continue orb = self.orbs[key] if sector.collide(orb): self.del_orb(key) snake.mass += orb.mass