pygame.sprite.Sprite

精灵,简单来说是一个会动图片。

两个成员变量 

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)


《完》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值