import pygame import sys from pygame.locals import * pygame.init() # 帧速率(frame rate)或刷新速率(refresh rate)是程序每秒钟绘制的图像的数目, # 用FPS或帧/秒来度量(在计算机显示器上,FPS常见的名称是赫兹。很多显示器的帧速率是60Hz,或者说每秒60帧)。 # 视频游戏中,较低的帧速率会使得游戏看上去抖动或卡顿。 # 如果游戏包含的代码太多了,以至于无法运行来频繁地绘制到屏幕上,那么,FPS会下降。 FPS = 30 fpsClock = pygame.time.Clock() DISPLAYURF = pygame.display.set_mode((400, 300), 0, 32) pygame.display.set_caption('Animation') WHITE = (255, 255, 255) catImg = pygame.image.load('cat.png') # 将图像(精灵)加载到Surface对象上,返回一个Surface对象 catx = 10 caty = 10 direction = 'right' while 1: DISPLAYURF.fill(WHITE) if direction == 'right': catx += 5 if catx == 280: direction = 'down' elif direction == 'down': caty += 5 if caty == 220: direction = 'left' elif direction == 'left': catx -= 5 if catx == 10: direction = 'up' elif direction == 'up': caty -= 5 if caty == 10: direction = 'right' # 必须将图像的Surface对象复制到显示Surface对象上。位图复制(Blitting)就是将一个Surface的内容绘制到另一个Surface之上 # 把catImg复制到了DISPLAYSURF,参数二:左上角的X和Y坐标 # 注意,不能复制当前“锁定”的一个Surface(例如,通过其生成了一个PixelArray对象并且还没有删除该对象,查看上一笔记中的绘制点像素就用到PixelArray对象) DISPLAYURF.blit(catImg, (catx, caty)) for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() pygame.display.update() # pygame.time.Clock对象确保程序以某一个最大的FPS运行。Clock对象将会在游戏循环的每一次迭代上都设置一个小小的暂停,从而确保游戏程序不会运行得太快。 # 如果没有这些暂停,游戏程序可能会按照计算机所能够运行的速度去运行。这对玩家来说往往太快了,并且计算机越快,它们运行游戏也就越快。 # 在游戏循环中调用一个Clock对象的tick()方法,可以确保不管计算机有多快,游戏都按照相同的速度运行 fpsClock.tick(FPS) # 将其设置为一个较低的值,程序运行得较慢。较高的值,程序运行得较快
图片官网地址:http://invpy.com/cat.png