官术网_书友最值得收藏!

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()方法。

運行一下程序,你會發現最后一張圖片并沒有馬上顯示出來。你可以試著玩一下游戲,看看拼圖完成時最后的圖片塊是否會顯示。

主站蜘蛛池模板: 托克托县| 云南省| 都兰县| 宁都县| 肇东市| 奈曼旗| 华池县| 呼和浩特市| 鄂州市| 靖江市| 廊坊市| 和政县| 安塞县| 绥宁县| 广德县| 保德县| 安康市| 西平县| 宁南县| 绥棱县| 汕尾市| 乐都县| 天长市| 那坡县| 张家口市| 永川市| 周口市| 新源县| 和龙市| 镇江市| 集贤县| 日照市| 桃江县| 资中县| 兴文县| 龙里县| 奉贤区| 丰城市| 鲁甸县| 万州区| 临泽县|