def test_collide_rect_ratio__ratio_of_one_like_default(self): # collide_rect_ratio should behave the same as default at a 1.0 ratio. self.assertEqual( sprite.spritecollide(self.s1, self.ag2, dokill=False, collided=sprite.collide_rect_ratio(1.0)), [self.s2])
def test_collide_rect_ratio__collides_all_at_ratio_of_twenty(self): # collide_rect_ratio should collide all at a 20.0 ratio. collided_func = sprite.collide_rect_ratio(20.0) expected_sprites = sorted(self.ag2.sprites(), key=id) collided_sprites = sorted(sprite.spritecollide( self.s1, self.ag2, dokill=False, collided=collided_func), key=id) self.assertListEqual(collided_sprites, expected_sprites)
def test_collide_rect_ratio__collides_all_at_ratio_of_twenty(self): # collide_rect_ratio should collide all at a 20.0 ratio. self.assert_( unordered_equality( sprite.spritecollide(self.s1, self.ag2, dokill=False, collided=sprite.collide_rect_ratio(20.0)), [self.s2, self.s3]))
def spawn_new_orb_randomly(self): while True: # do not spawn orbs on top of robot or obstacles or outside the floor orb_width, orb_height = self.settings['orb_size'] x, y = random.randint(0, self.floor.width - orb_width), random.randint( 0, self.floor.height - orb_height) new_orb = Orb(x, y, self) if self.state == OrbCatchingGame.STATE_BONUS: new_orb = BonusOrb(x, y, self) if not spritecollideany(new_orb, self.obstacles, collide_rect_ratio(self.spawn_dist_obs_orb)) and \ not collide_rect_ratio(self.spawn_dist_robot_orb)(new_orb, self.robot) and \ not spritecollideany(new_orb, self.orbs, collide_rect_ratio(self.spawn_dist_orb_orb)): break self.orbs.add(new_orb)
def _init_obstacle_randomly(self, obstacles): obstacle_width, obstacle_height = self.settings['obstacle_size'] while True: x, y = random.randint(0, self.floor.width - obstacle_width), random.randint( 0, self.floor.height - obstacle_height) obstacle = Obstacle(x, y, self.settings['obstacle_size']) if not spritecollideany( obstacle, obstacles, collide_rect_ratio(self.spawn_dist_obs_obs)): if hasattr(self, 'robot') and self.robot is not None: if not collide_rect_ratio(self.spawn_dist_obs_robot)( obstacle, self.robot): break else: break return obstacle
def test_collide_rect_ratio__ratio_of_one_like_default(self): # collide_rect_ratio should behave the same as default at a 1.0 ratio. self.assertEqual ( sprite.spritecollide ( self.s1, self.ag2, dokill = False, collided = sprite.collide_rect_ratio(1.0) ), [self.s2] )
def collide(a, b): """ 碰撞计算 :param a: 精灵a :param b: 精灵b :return: 是否发生碰撞 """ if a == b: return False return sprite.collide_rect_ratio(collide_ratio)(a, b)
def test_collide_rect_ratio__collides_all_at_ratio_of_twenty(self): # collide_rect_ratio should collide all at a 20.0 ratio. self.assert_ ( unordered_equality ( sprite.spritecollide ( self.s1, self.ag2, dokill = False, collided = sprite.collide_rect_ratio(20.0) ), [self.s2, self.s3] ) )