圖書簡介可以看這裡:

本章我們將編寫飛翔的小鳥遊戲。小鳥會在空中下落,滑鼠點選後向上飛行一段距離;隨機位置的障礙物從右向左移動,玩家需控制小鳥穿過障礙物間的空隙得分。

首先我們學習圖片的匯入和顯示,實現背景、小鳥、障礙物的顯示;然後學習控制小鳥的下落與上升、障礙物的移動;最後學習遊戲失敗的判定與遊戲重置、得分的顯示。

本章案例最終程式碼一共58行,程式碼參看:配套資源\第5章\5-8。py,影片效果參看:配套資源\第5章\飛翔的小鳥。mp4。

import

pgzrun

# 匯入遊戲庫

import

random

# 匯入隨機庫

WIDTH

=

350

# 設定視窗的寬度

HEIGHT

=

600

# 設定視窗的高度

background

=

Actor

‘background’

# 匯入背景圖片

bird

=

Actor

‘bird’

# 匯入小鳥圖片

bird

x

=

50

# 設定小鳥的x座標

bird

y

=

HEIGHT

/

2

# 設定小鳥的y座標

bar_up

=

Actor

‘bar_up’

# 匯入障礙物上半部分圖片

bar_up

x

=

300

# 設定障礙物上半部分的x座標

bar_up

y

=

0

# 設定障礙物上半部分的y座標

bar_down

=

Actor

‘bar_down’

# 匯入障礙物下半部分圖片

bar_down

x

=

300

# 設定障礙物下半部分的x座標

bar_down

y

=

600

# 設定障礙物下半部分的y座標

score

=

0

# 遊戲得分

speed

=

1

# 遊戲速度,即障礙物向左移動的速度

def

draw

():

# 繪製模組,每幀重複執行

background

draw

()

# 繪製背景

bar_up

draw

()

# 繪製障礙物上半部分

bar_down

draw

()

# 繪製障礙物下半部分

bird

draw

()

# 繪製小鳥

screen

draw

text

str

score

),

30

30

),

fontsize

=

50

color

=

‘green’

def

update

():

# 更新模組,每幀重複操作

global

score

speed

bird

y

=

bird

y

+

2

# 小鳥y座標增加,即緩慢下落

bar_up

x

=

bar_up

x

-

speed

# 障礙物上半部分緩慢向左移動

bar_down

x

=

bar_down

x

-

speed

# 障礙物上半部分緩慢向左移動

# 當障礙物移動到最左邊時,可以讓其在右邊重新出現

if

bar_up

x

<

0

bar_up

x

=

WIDTH

bar_down

x

=

WIDTH

bar_up

y

=

random

randint

-

200

200

# 障礙物上半部分上下隨機出現

bar_down

y

=

600

+

bar_up

y

# 上、下部分的障礙物中間空擋大小固定

score

=

score

+

1

# 得分加1

if

score

%

5

==

0

):

# 如果得分增加了5分,就讓遊戲速度增加

speed

=

speed

+

1

# 如果小鳥碰到障礙物上半部分或下半部分,遊戲失敗

if

bird

colliderect

bar_up

or

bird

colliderect

bar_down

or

bird

y

<

0

or

bird

y

>

HEIGHT

print

‘遊戲失敗’

# 把得分清零、速度設為1,小鳥、障礙物的位置重新歸位

score

=

0

speed

=

1

bird

x

=

50

# 設定小鳥的x座標

bird

y

=

HEIGHT

/

2

# 設定小鳥的y座標

bar_up

x

=

WIDTH

# 設定障礙物上半部分的x座標

bar_up

y

=

0

# 設定障礙物上半部分的y座標

bar_down

x

=

WIDTH

# 設定障礙物下半部分的x座標

bar_down

y

=

600

# 設定障礙物下半部分的y座標

def

on_mouse_down

():

# 當滑鼠點選時執行

bird

y

=

bird

y

-

100

# 小鳥y座標減少,即上升一段距離

pgzrun

go

()

# 開始執行遊戲

分步驟程式碼、圖片素材、講解影片可以從非同步社群下載:

分步驟程式碼也可以直接從這裡下載:

《Python遊戲趣味程式設計》 第5章 飛翔的小鳥

這一章主要講解了圖片的匯入與顯示、位置的設定、碰撞檢測,以及文字的顯示等功能,學習了資料的型別轉換、整除與取餘運算子等知識點。應用變數、if語句、隨機等基礎語法,沒有使用for迴圈、列表,實現了飛翔的小鳥遊戲。

學習了中學物理的讀者,可以嘗試將小鳥設定為受重力作用下落,實現更自然的遊戲效果。讀者也可以參考本章的開發思路,嘗試設計並分步驟實現一個跳躍躲避障礙物的遊戲。