接着来介绍Pygame一些基础的东西。
Drawing Images with pygame.image.load() and blit()
很多游戏都不只是用简单的画图函数就可以完成的,还需要各种各样的图片(也被称作精灵)pygame可以加载到surface对象上的图片格式有PNG, JPG, GIF和BMP。关于格式的不同地方可以上网搜索。
接着对上篇最后的一段代码里面的东西做些介绍。
pygame.image.load()函数返回一个surface对象用于显示图片。这个surface对象和显示窗口对象是分离的,所以我们必须把图片显示对象复制到显示窗口对象通过blit()方法。
方法使用如下:
DISPLAYSURF.blit(catImg, (catx, caty))
第一个参数是要加载的图片对象,第二个参数是有两个整数的元组分别表示图片将要显示的左上角X和Y的坐标值。
字体
游戏都需要显示文字,pygame为字体和创建文本提供了一些简单的函数。下面就是一个使用pygame字体的程序。
import pygame, sys
from pygame.locals import *
pygame.init()
DISPLAYSURF = pygame.display.set_mode((400,300))
pygame.display.set_caption("Hello World")
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
BLUE = (0, 0 ,128)
fontObj = pygame.font.Font('freesansbold.ttf', 32)
textSurfaceObj = fontObj.render('Hello World!', True, GREEN, BLUE)
textRectObj = textSurfaceObj.get_rect()
textRectObj.center = (200, 150)
while True:
DISPLAYSURF.fill(WHITE)
DISPLAYSURF.blit(textSurfaceObj, textRectObj)
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
执行后的效果如图:
将字体显示在屏幕上有六个步骤:
- 创建一个pygame.font.Font对象
- 创建一个surface对象用于存放字体显示,这需要通过调用字体对象的render()方法
- 创建一个矩形对象通过调用surface对象的get_rect()方法。这个矩形对象将拥有字体的宽度与高度。但是top和left属性值为0
- 设置矩形对象的位置通过改变它的一个属性值。在这里我们设置了矩形对象的中心在200,150
- 将存放字体的显示对象复制到显示窗口对象(来自pygame.display.set_mode()方法返回的对象)
- 调用pygame.display.update()让显示窗口对象显示在屏幕上
pygame.font.Font()的构造函数的参数是一个字体文件和一个表示字体大小的整数。我们传递了"freesansbold.ttf"(这个字体来自pygame)和整数32.
render()方法的参数是一个要显示的字符串,一个BOOL类型的值决定是否需要抗锯齿,文字的颜色,文字的背景颜色。如果想要个透明的背景颜色,那么只需要在调用该方法是不传递最后一个背景颜色参数。
抗锯齿,这个是概念的东西。(略)
播放声音
播放声音甚至比显示图片更简单。首先,需要创建一个pygame.mixer.Sound对象通过调用pygame.mixer.Sound()构造函数。它需要一个字符串参数,也就是声音文件名。pygame可以加载wav, mp3,或者oog的声音格式文件。
播放声音需要调用声音对象的play()方法。如果想立即停止声音则调用stop()方法。stop()方法没有参数。下面一段加载声音的简单代码:
soundObj = pygame.mixer.Sound('beeps.wav')
soundObj.play()
import time
time.sleep(1)
soundObj.stop()
声音对象可以造成很好的声音效果当游戏者具体做了某件事时,比如受到伤害,拾起一个硬币等。游戏最好也能有背景音乐无论游戏进行到何时。Pygame只能加载一个音乐文件用作背景音乐在一个时刻。为了加载一个背景音乐文件,调用pygame.mixer.music.load()函数传递一个关于音乐文件名的字符串。音乐文件格式可以是WAV,MPS,MIDI.
开始播放背景音乐,需要调用pygame.mixer.music.play(-1,0.0)函数,-1这个参数使背景音乐永远播放直到音乐文件末尾。如果设置为0或者比0大的整数,那么音乐就只循环传递的整数代表的那么多次,而不是永远循环。0.0表示从音乐文件开始处播放音乐。传递多少值就从多少值开始播放音乐。为了停止背景音乐,需要调用pygame.mixer.music.stop()函数,此函数没有参数。
下面的代码是关于音乐文件处理的一些方法:
pygame.mixer.music.load('backgroundmusic.mp3')
pygame.mixer.music.play(-1,0.0)
#....some more of your code goes here..
pygame.mixer.music.stop()
上面差不多就是pygame的一些基础的东西了,然后作者就以每章一个游戏来继续pygame的介绍,而且注释解释说明写的都很详细,实在是本好书啊。