Pyglet是为Python语言提供的一个图形化和多媒体库。它为可视化程序尤其是开发游戏提供非常丰富的面向对象的接口,并且是开源的,跨平台的。除了Pyglet之外,PyGame、Panda3D也是Python的游戏开发库。不过Pyglet是三个里面最快捷最容易上手的。
安装可以非常简单,在windows下可以直接用安装包安装。在ubuntu下apt-get也可以直接安装。Pyglet没有额外的依赖包。
下面写一个用pyglet写一个helloworld。
首先要引用库。
import pyglet
构造可视化界面,首先要实例化出一个窗体对象。
window = pyglet.window.Window()再实例化一个Label对象,它可以用来显示一段字符串,并且可以设置若干自定义的属性。
label = pyglet.text.Label('Hello, world', font_name='Times New Roman', font_size=36, x=window.width//2, y=window.height//2, anchor_x='center', anchor_y='center')我们要把这个Label画在窗体上去,需要借助于窗体的一个事件on_draw。
@window.event def on_draw(): window.clear() label.draw()好啦,上面对这个界面设计好了。就可以运行它了。
pyglet.app.run()这就是整个helloworld程序。
可视化游戏需要图像素材,下面看看怎么导入图像素材作为程序的资源。
image = pyglet.resource.image('kitten.jpg')
image.blit(x, y)
导入以后,在窗体的on_draw事件中就可以画出该图像资源。上面的x、y是素材显示的坐标位置。
游戏除了图形,还需要有声音。音频素材的导入和使用也非常容易。支持的音频格式也很多,并且不同音频是允许混音播放的。
music = pyglet.resource.media('music.mp3')
music.play()
游戏的声音一般有两类,一类是较长的背景音乐或者片头音乐,一类是较短的动作音效,比如枪声。后者一般需要具有即时性,不能存在延时,所以需要保留在内存里以便随时播放。
sound = pyglet.resource.media('shot.wav', streaming=False)
sound.play()
上面说过窗体的一个事件on_draw,是关于窗体重画的。下面再说一个关于捕获键盘按键的事件on_key_press。
def on_key_press(symbol, modifiers):它有两个参数,用来判断所按下的按钮,symbol表示一般的键值,modifiers表示辅助键比如ctrl、Alt、shift。symbol键值是在pyglet.window.key被定义过了的。
窗体自带了一共有20多种不同的事件,输入下面这句将会记录在终端记录这些事件的发生。
window.push_handlers(pyglet.window.event.WindowEventLogger())