Python學習之路13.1-記分_前篇

本系列是對入門書籍《Python編程:從入門到實踐》的筆記整理,屬於初級內容。標題順序採用書中標題。

本篇是Python小遊戲《外星人入侵》的最後一篇的前篇,本篇將為小遊戲添加Play按鈕和遊戲提速功能。

1. 前言

本篇我們將結束Pygame小遊戲《外星人入侵》的開發。在本篇中,我們將添加如下內容:

  • 添加一個Play按鈕,用於根據需要啟動遊戲以及在遊戲結束後重啟遊戲;

  • 使玩家能提高等級,並在提高等級時加快節奏;

  • 添加一個記分系統

由於這片文章代碼過多,所以將其拆分成了兩篇文章。

2. 添加Play按鈕

首先為了通過點擊Play按鈕來開始遊戲,需要在GameStats

類的構造函數中將self.game_active設置為False

2.1 Button類

為了添加Play按鈕,我們需要先添加一個Button類。將這個類放在button.py模塊中:

Python學習之路13.1-記分_前篇

pygame將字符串渲染為圖像來處理文本,通過pygame.fontrender方法來渲染文字,它的第一個參數是要渲染的字符串,第二個是抗鋸齒設定(打遊戲的老鐵應該對這個詞很熟悉~~),第三個是字體顏色,第四個是背景顏色,第四個參數如果不設定,將以透明背景的方式渲染文本。最後通過draw_button()方法在窗體中繪製Play按鈕。

2.2 修改alien_invasion.py

在主程序中實例化一個Play按鈕,並添加它的響應事件,以及將其畫出。

Python學習之路13.1-記分_前篇

注意,不光新增了實例化按鈕的代碼,還修改了update_screen()check_events()函數。

2.3 修改game_functions.py

修改update_screen()函數:在窗體中畫出Play按鈕

Python學習之路13.1-記分_前篇

修改check_events()函數:為Play

按鈕添加響應事件

Python學習之路13.1-記分_前篇

pygame.MOUSEBUTTONDOWN表示鼠標按下事件;通過pygame.mouseget_pos()來獲得鼠標點擊處的座標;最後,通過check_play_button()函數來響應鼠標點擊事件,該函數的內容如下:

新增check_play_button()函數:處理鼠標點擊事件

Python學習之路13.1-記分_前篇

通過play_button.rectcollidepoint()方法來確定鼠標是否點擊到了button,如果點擊到了,並且當前遊戲是“非啟動”狀態,則啟動或者重置遊戲;

如果不對stats.game_active進行確認,則在遊戲中,即使Play按鈕消失了,鼠標點擊它原來所在的地方,也會重置遊戲。

在遊戲中,為了避免光標的影響,遊戲時我們通過pygame.mouse的set_visible()方法將其隱藏;遊戲結束時,重新顯示光標,為此,需要修改ship_hit()函數

Python學習之路13.1-記分_前篇

最後,程序的效果如下:

Python學習之路13.1-記分_前篇

3. 遊戲提速

每當消滅一批艦隊後,我們就為遊戲裡的元素提個速,為此,需要修改settings.pygame_functions.py模塊。

3.1 修改settings.py

添加一個提速倍率參數,並增加兩個方法:

Python學習之路13.1-記分_前篇

我們將需要修改的四個參數放到了

initialize_dynamic_settings()方法中,increase_speed()方法用於動態改變遊戲參數。

3.2 修改game_functions.py

每消滅一批外星艦隊,就對遊戲提速,需要修改check_bullet_alien_collisions()函數

Python學習之路13.1-記分_前篇

當重新開始遊戲時,需要將這些被修改了的參數改回默認值,為此,需要修改check_play_button()函數

Python學習之路13.1-記分_前篇

4. 小結

現在該小遊戲有了Play按鈕,並且遊戲還能提節奏了~~~

下一篇我們將為該遊戲添加一個計分板,並結束該遊戲的開發。


分享到:


相關文章: