趣学Python游戏编程
上QQ阅读APP看书,第一时间看更新

2.4.2 显示最后一张图片

游戏终于要完成了,耶!先别急着庆祝,仔细考虑一下游戏结束时还要做什么事情,以便让游戏显得更加完整。首先要播放一小段音乐来庆祝一下,同时还要在窗口中显示游戏完成的文字信息。对了,还有一件事差点忘记,就是拼图中还缺了一幅,游戏结束时要补上去。

先看看怎样将最后一块图片补充完整。为此还需要再定义一个图片块角色,并为其指定位置。代码如下所示:

上述代码定义了变量lastpic来保存最后一个图片块。由于最后一块所在方格的行号和列号都是2,于是分别用2乘以图片块尺寸SIZE,并赋给它的left和top属性。接着可以调用lastpic角色的draw()方法将它显示出来。

需要注意的是,我们希望最后这张图片在游戏结束时才显示出来,而不是一开始就显示。怎样才能做到这一点呢?具体来说,要设法对游戏的状态进行标识,只有当游戏状态为结束时才显示最后的图片块。这可以借助布尔变量来实现。

说明:

在Python语言中,布尔变量是一种基本的数据类型,它有两个取值:True和False,分别对应两个不同的状态值。为了表示游戏中的某种状态,经常会在游戏编程中使用到布尔变量。

对于拼图游戏来说,可以定义一个布尔变量用来标识游戏是否结束,True表示结束,False表示没有结束。于是在程序的前面加上一行代码:

这里的变量finished就是一个布尔变量,它的初值为False,表示游戏尚未结束。接着对update()函数进行修改,代码如下(粗体部分表示新添加的部分):

上述代码首先判断布尔变量finished的值,若其为True,则说明游戏已经结束,于是调用return语句立即返回,余下的语句将不再执行;若finished的值不为True,则继续执行后面的for循环来判定拼图是否完成,若完成将会执行最后一行代码,将finished的值设置为True,表示游戏结束了。

提示:

finished是程序中的全局变量,它是在函数之外定义的,若要在函数内部对它的值进行修改,需要使用global关键字进行声明。

最后在draw()函数中加入以下代码:

上述代码中,if语句的条件用来判断finished的值是否为True,若是则执行lastpic角色的draw()方法。

运行一下程序,你会发现最后一张图片并没有马上显示出来。你可以试着玩一下游戏,看看拼图完成时最后的图片块是否会显示。