Pygame精灵
pygame.sprite.Sprite是pygame实现的一个类,使用是需要继承,扩展自己的方法。精灵就是屏幕上的一个元素,可以是图片或者形状,可以移动交互。
属性和方法
- self.image
指示精灵的内容,self.image = pygame.image.load() 显示对应的图片。sulf.image = pygame.Surface([x,y])指示该精灵的大小,self.image.fill()填充颜色。 - self.rect
self.rect = self.image.get_rect() 获取image矩形区域。self.top、self.bottom、self.right、self.left指示矩形的上下左右的位置。 - self.update() 刷新精灵
- self.add() 在精灵组添加精灵
- self.remove() 精灵组内移除精灵
- Sprite.kill() 移除所有精灵
- Sprite.alive() 判断精灵属于属于精灵组
精灵组
pygame.sprite.Group() 创建精灵
检测精灵之间碰撞
- pygame.sprite.collide_rect() 矩形碰撞
- pygame.sprite.collide_circle() 圆碰撞
- pygame.sprite.collide_mask() 像素遮挡
检测精灵和精灵组之间的碰撞
pygame.sprite.spritecollide(sprite, sprite_group, bool),第三个参数如果为True会删除所有冲突的精灵
精灵组之间的碰撞
pygame.sprite.groupcollide()
屏幕加载精灵例子
import pygame
class Tree(pygame.sprite.Sprite):
def __init__(self, image, initial_position):
self.image = pygame.image.load(image) # 加载图片
self.rect = self.image.get_rect() # 获取图片大小
self.rect.topleft = initial_position # 指定图片位置
if __name__ == '__main__':
pygame.init()
screen = pygame.display.set_mode((400, 400))
filename = "1.png"
init_pos = (100, 100)
tree = Tree(filename, init_pos)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
screen.fill((255, 166, 77))
screen.blit(tree.image, tree.rect)
pygame.display.update()