Pygame是一个2d游戏引擎,也能作为gui工具。作为教程的第一章,一个桌上冰球游戏可以包括简单的图像显示,碰撞检测,物理模拟和游戏AI,是一个可谓麻雀虽小五脏俱全的例子。在开始之前,一个简单的QA:

A:对我个人来说,rpgmaker的默认美术素材和古老的jrpg战斗方式太过让人审美疲劳,如果想要增加新的内容必须学习rm和脚本语言的配合,有这时间为何不学学*有着光明的未来*的python呢? 此外保持和过多的rm黄油印象的距离也算是好处之一?

一个简单的程序会在执行完代码后结束,但游戏没有尽头,因此游戏主体需要放入while(1)的无限循环中。注意foreventinpygame.event.get():这段意义不明的代码,让我们看看去掉它会怎样。

程序直接无响应了。没错,这个代码块正是接受用户输入*事件*并选择如何处理的部分,没有了这部分,游戏变成了存粹的无限循环,自顾自地一次次刷新显示内容。我们稍后再来处理事件,现在先一律pass吧。

看看这段新增的代码,其中新建了一个SimpleGameRes类,现在我们还不需要考虑复用性,因此直接使用固定的资源文件名并初始化。 Python的相对路径简单来说,.\就是当前目录,但注意python使用\开头的转义字符,也就是说,你得用//来表示\。

pygame.image.load是读入图片的函数,通常只用传入图片路径这个参数,而convert_alpha方法则是将各种格式的图片(gif,jpg,png)啥的转换成pygame的内部储存格式并保留alpha通道。这个方法会极大提高效率,否则随着图片的增多,游戏运行速度会显著下降。

Type()是python的特色方法,能够输出对象的类型和内存,因为python不需要像java那样严格地声明变量类型,只能靠type方法来确定这一信息。

Surface对象有一个方法叫做blit,通过这个方法将一个surface绘制在另一个上。