精灵,简单来说是一个会动图片。
两个成员变量
1)self.image=要显示图片的Surface
2)self.rect = 显示Surface的区域,
常用的设置rect的方法:self.rect = self.image.get_rect()
然后设定self.rect.topleft=(0,0)来设定左上角的位置,从而设定这个精灵在屏幕上的显示位置。
成员函数
以下是Sprite的成员函数,其中update是更新精灵图片用的,一般会进行重写。
Sprite.update - method to control sprite behaviormethod to control sprite behavior
Sprite.add - add the sprite to groups add the sprite to groups
Sprite.remove - remove the sprite from groups remove the sprite from groups
Sprite.kill - remove the Sprite from all Groups remove the Sprite from all Groups
Sprite.alive - does the sprite belong to any groupsdoes the sprite belong to any groups
Sprite.groups - list of Groups that contain this Spritelist of Groups that contain this Sprite
Sprite代码例子
#-*- coding:gb2312 -*-
import pygame,sys,random
from pygame.locals import *
#定义精灵类,从Sprite继承,并重写update()函数
#这里必须在初始化函数中执行父类构造函数Sprite.__init__(self)
class Player(pygame.sprite.Sprite):
def __init__(self,color,topleft):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((20,20))#这个就是每个精灵的图片Surface
self.image.fill(color)
self.rect = self.image.get_rect() #每个精灵Surface显示的Rectangle
self.rect.topleft = topleft #设定矩阵左上角的位置
def update(self):
#向右移动,如果到达最右边则从左边开始
speed = random.randint(0,10)
self.rect.left += speed
if self.rect.left > 630:
self.rect.left = -10
pygame.init()
FSPClock = pygame.time.Clock()
screen = pygame.display.set_mode((640,480))
playerGroup = pygame.sprite.Group()
#定义四个Player,并添加到精灵的Group中
for pos in ((0,0),(100,100),(200,200),(300,300)):
playerGroup.add(Player((0,0,0),pos))
while True:
screen.fill((255,255,255))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
#将每个精灵更新后显示在Screen上
for player in playerGroup:
player.update()
screen.blit(player.image,player.rect)
pygame.display.update()
FSPClock.tick(10)
《完》