mport pygame,sys
from pygame.locals import *
pygame.init()
FPS=50
#FPS:帧速率
#FPS指程序每秒钟绘制的图像的数目
#很多显示器的FPS=60
fpsClock=pygame.time.Clock()
#创建pygame.time.Clock对象
DISPLAYSURF=pygame.display.set_mode((400,300))
pygame.display.set_caption("Animation")
WHITE=(255,255,255)
catImg=pygame.image.load("cat.png")
#可加载.png .jpg .gif .bmp格式的图片文件
#pygame.image.load()函数会返回一个Surface对象,这个图片已经绘制在它上面
#这个Surface对象和前面那个用pygame.display.set_mode()返回的Surface对象不是同一个
#因此我们必须将图像的Surface对象复制到前面那个显示Surface对象上
#这通过blit()完成
catx=10
caty=10
direction="right"
while True:
DISPLAYSURF.fill(WHITE)
if direction=="right":
catx=catx+5
if catx ==280:
direction="down"
elif direction =="down":
caty=caty+5
if caty ==220:
direction="left"
elif direction =="left":
catx=catx-5
if catx==10:
direction="up"
else:
caty=caty-5
if caty ==10:
direction="right"
DISPLAYSURF.blit(catImg,(catx,caty))
#blit是Surface对象的方法
#blit(Surface对象,两个整数的元组)
#这两个整数表示图像应该复制到的位置的左上角的坐标
#blit:位块复制
#将catImg对象复制到显示DISPLAYSURF对象上
#注意!不能复制当前锁定的Surface对象
#例如在该Surface对象上生成了一个PixelArray对象并且还没有删除该对象
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
fpsClock.tick(FPS)
#tick:一瞬间
#pygame.time.Clock对象将会在游戏循环的每一次迭代上都设置一个小小的暂停,从而确保游戏程序
#不会运行得太快。
#如果没有这些暂停,游戏程序可能会按照计算机能够运行的速度去运行,这对玩家来说往往太快了,
#并且计算机越快,它们运行游戏也就就快
#在游戏循环中调用一个Clock对象的tick()方法,可以确保不管计算机有多快,游戏都按照相同的速度运行。
#在调用pygame.display.update()之后应该调用Clock对象的tick函数
#这里FPS的值越大,即每秒钟出现画面的次数越多,猫咪运动的越快
运动的小猫
最新推荐文章于 2024-02-27 19:47:50 发布