本文整理汇总了Python中pygame.sprite.spritecollide函数的典型用法代码示例。如果您正苦于以下问题:Python spritecollide函数的具体用法?Python spritecollide怎么用?Python spritecollide使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了spritecollide函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_collide_mask__opaque
def test_collide_mask__opaque(self):
# make some fully opaque sprites that will collide with masks.
self.s1.image.fill((255,255,255,255))
self.s2.image.fill((255,255,255,255))
self.s3.image.fill((255,255,255,255))
# masks should be autogenerated from image if they don't exist.
self.assertEqual (
sprite.spritecollide (
self.s1, self.ag2, dokill = False,
collided = sprite.collide_mask
),
[self.s2]
)
self.s1.mask = pygame.mask.from_surface(self.s1.image)
self.s2.mask = pygame.mask.from_surface(self.s2.image)
self.s3.mask = pygame.mask.from_surface(self.s3.image)
# with set masks.
self.assertEqual (
sprite.spritecollide (
self.s1, self.ag2, dokill = False,
collided = sprite.collide_mask
),
[self.s2]
)
示例2: update
def update(self, dt):
self.player.update(dt)
self.coins.update(dt)
# lock player in bounds
self.player.rect.clamp_ip(self.bounds)
spritecollide(self.player, self.coins, True)
示例3: update
def update(self, dt):
self.player.update(dt)
self.cookies.update(dt)
# lock player in bounds
self.player.rect.clamp_ip(self.bounds)
# collide player with coins
spritecollide(self.player, self.cookies, True)
示例4: update
def update(self, time, player_group, platform_group):
if self.KILL:
self.explode()
hit_players = PS.spritecollide(self, player_group, False)
hit_platforms = PS.spritecollide(self, platform_group, False)
if hit_players:
for this_player in hit_players:
self.react(this_player)
if hit_platforms:
for this_platform in hit_platforms:
self.rect.centery = (this_platform.get_top() - self.rect.height/4)
示例5: update
def update(self):
dt = self.clock.tick(FPS)
# basic update
self.player.update(dt)
self.coins.update(dt)
# check if the player is on the path
onpath = spritecollide(self.player, self.level.path, False)
self.player.on_path(onpath)
# collide coins
for coin in spritecollide(self.player, self.coins, True):
self.score += 1
self.cam.update(self.player.rect)
示例6: kill_people
def kill_people(self, scene):
hitted_players = sprite.spritecollide(self, scene.enemyGroup, False)
# scene.bulletGroup.remove(self)
for player in hitted_players:
player.hit_by_bullet(self.atk)
# A bullet should not be capable of going through an infinite amount of bodies
scene.bulletGroup.remove(self)
示例7: detect_collision
def detect_collision(self):
collisions = spritecollide(self.player, self.obstacle_group, True)
for c in collisions:
self.collision_strategy_factory.get_strategy(c).on_collision()
self.obstacles.remove(c)
c.kill()
示例8: useportal
def useportal(self):
# check for portals
portalbox = spritecollide(self,self.level.portal_list,False)
if portalbox != []:
return portalbox[0].destination
else:
return 0
示例9: handle_collision
def handle_collision(self, bg, m_back=False):
if m_back:
face_copy = self.face
self.face = self.move_face
collisions = PS.spritecollide(self, bg, False)
if 'r' in self.face:
for collision in collisions:
if(self.rect.x +
self.rect.width) >= collision.rect.left:
self.rect.x = collision.rect.left - self.rect.width
elif 'l' in self.face:
for collision in collisions:
if (self.rect.x) <= (collision.rect.left +
collision.rect.width):
self.rect.x = collision.rect.left + \
collision.rect.width
elif 'd' in self.face:
for collision in collisions:
if(self.rect.y +
self.rect.height) >= collision.rect.top:
self.rect.y = collision.rect.top - self.rect.height
elif 'u' in self.face:
for collision in collisions:
if (self.rect.y <= (collision.rect.top +
collision.rect.height)):
self.rect.y = collision.rect.top + \
collision.rect.height
if m_back:
self.face = face_copy
return (collisions is None)
示例10: handle_player
def handle_player(self, player):
player.sprites()[0].set_attacking_rect()
collisions = PS.spritecollide(self, player, False)
if(len(collisions) == 1 and isinstance(collisions[0], Player)):
if(Globals.INVINCIBILITY_COUNT == 0):
self.attacked_player = True
player.sprites()[0].reset_attacking_rect()
示例11: update
def update(self):
BouncySprite.update(self)
if sprite.spritecollide(self, self.game.monsters, True):
self.kill()
self.life -= 1
if self.life <= 0:
self.kill()
示例12: execute
def execute(self):
'''Controls the actor movement as a regular object under Newton's laws. Checks collisions with grounds'''
actor=self.__parent
self.velocity=self.velocity+(actor.steering_acceleration+PS_freefall.GRAVITY)*self.time_step
self.position=self.position+self.velocity*self.time_step
if self.i==4:
for floor in spritecollide(actor, actor.get_level().floors, False):
if not actor.crect.colliderect(floor.crect):
continue
if -16<floor.crect.top-actor.crect.bottom<3 and self.velocity[1]>=0:
self.velocity[1]=0
actor.standing_on=floor
self.position[1]=floor.crect.top-actor.rect.height/2
self.__parent_PM.set_state(PS_walking)
continue
elif -16<floor.crect.left-actor.crect.right<3 and self.velocity[0]>0:
self.velocity[0]=-self.velocity[0]
elif -3<floor.crect.right-actor.crect.left<16 and self.velocity[0]<0:
self.velocity[0]=-self.velocity[0]
elif -3<floor.crect.bottom-actor.crect.top<16 and self.velocity[1]<0:
self.velocity[1]=-self.velocity[1]
self.i=0
else: self.i+=1
actor.set_position([self.position[0], self.position[1]])
示例13: update
def update(self, time, scene):
self.floatX += self.speedX * time * GRENADE_SPEED
self.floatY += self.speedY * time * GRENADE_SPEED
self.rect.x = roundToInt(self.floatX)
self.rect.y = roundToInt(self.floatY)
self.timeToBoom -= time
if self.timeToBoom <= 0:
scene.bulletGroup.remove(self)
scene.bulletGroup.add(Explosion(self.rect.x, self.rect.y))
# Kill people!
originalRect = self.rect.copy()
self.rect.inflate_ip(80, 80) # 80x80 area damage
enemies_hit = sprite.spritecollide(self, scene.enemyGroup, False)
for enemy in enemies_hit:
# Friendly fire
if self.creator.__class__.__name__ == enemy.__class__.__name__:
continue
enemy.receive_attack(self.atk)
if sprite.collide_rect(self, scene.player):
scene.player.receive_attack(self.atk)
self.rect = originalRect # Restore the real rect
self.timeToStop -= time
if self.timeToStop <= 0:
self.speedX = 0
self.speedY = 0
示例14: test_collide_circle__no_radius_set
def test_collide_circle__no_radius_set(self):
# collide_circle with no radius set.
self.assertEqual (
sprite.spritecollide (
self.s1, self.ag2, dokill = False, collided = sprite.collide_circle
),
[self.s2]
)
示例15: test_spritecollide__works_if_collided_cb_is_None
def test_spritecollide__works_if_collided_cb_is_None(self):
# Test that sprites collide without collided function.
self.assertEqual (
sprite.spritecollide (
self.s1, self.ag2, dokill = False, collided = None
),
[self.s2]
)