Pygame基础之 精灵(一):基本概念
程序员文章站
2024-03-16 21:15:58
...
一、我们得先了解清楚什么是精灵
1、精灵可以是一个图形对象,也可以是一张图片
2、精灵可以使用pygame绘制函数绘制的图形(Surface对象,也可以是图像文件)
3、每个精灵有个最基本的属性 Rect(是否为一个对象)
二、接下去我们再了解一下什么是精灵类
精灵类是pygame自带的一个类,我们使用它时,并不需要将精灵类进行实例化(创建一个对象),而是去继承它,通过我们自己的需要进行改写。
在接下去我们使用的动画大多数都将使用到精灵类。
话不多说,我们上代码帮助理解
比如我们最开始接触的,在屏幕上绘制一个矩形,这样的矩形算不算一个精灵呢
import pygame,sys
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((500,500))
pygame.display.set_caption("这是一个矩形")
color = (255,255,0)
position = (50,50,100,100)
width = 0
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
pygame.draw.rect(screen,color,position,width)
screen.fill(255,255,255)
pygame.display.update()
我们上面已经说过,能不能成为精灵是要看它有没有rect属性,接下去让我们检测一下
a = pygame.draw.rect(screen,color,position,width)
print(a.rect)
然后我们的小黑框会显示这样一条信息
AttributeError: ‘pygame.Rect’ object has no attribute ‘rect’
看来这样的矩形是没有rect属性的,那么怎么才有rect属性呢
这时精灵类就发挥作用啦,让我们继承精灵类
import pygame,sys
from pygame.locals import *
class Temp(pygame.sprite.Sprite):
def __init__(self,color,initial_position): #继承精灵类
pygame.sprite.Sprite.__init__(self) #完成初始化,父类的构造函数
self.image = pygame.Surface([30,30]) #定义显示30*30的一个矩形surface
self.image.fill(color) #用color颜色填充矩形
self.rect = self.image.get_rect() #获取图像的矩形大小
self.rect.topleft = initial_position #确定左上角的位置
pygame.init()
screen = pygame.display.set_mode([640,480])
b = Temp([255,0,0],[50,100]) #传参,创建对象
screen.blit(b.image,b.rect) #将精灵绘制到窗口上
print(b.rect) #检测rect属性
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
elif event.type == KEYDOWN:
if event.key == K_ESCAPE:
sys.exit()
pygame.display.update()
这时候,我们的小黑框会显示这样的消息
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
<rect(50, 100, 30, 30)>
这个矩形具有rect属性,那么它就是一个精灵
上一篇: 抖抖fps抖up,Stage和StageGL性能测试
下一篇: P1097 统计数字 洛谷(map)