圖書簡介可以看這裡:

本章我們將編寫一個見縫插針的遊戲。按下空格鍵後發射一根針到圓盤上,所有發射的針跟著圓盤逆時針方向轉動;如果新發射的針碰到已有的針,遊戲結束。

首先我們進行圓盤與針圖片的顯示、針的轉動及旋轉中心的設定;其次定義列表儲存多根針的資訊,實現多根針的發射、轉動與失敗判斷;最後學習遊戲資訊的顯示、音效的新增。

本章案例最終程式碼一共49行,程式碼參看:配套資源\第6章\6-8。py,影片效果參看:配套資源\第6章\見縫插針。mp4。

import

pgzrun

# 匯入遊戲庫

TITLE

=

‘Python見縫插針 ——- by 童晶’

# 匯入初始位置針的圖片、設定錨點相對座標

startNeedle

=

Actor

‘needle’

anchor

=

170

+

50

1

))

startNeedle

x

=

200

# 設定針錨點的x座標

startNeedle

y

=

300

# 設定針錨點的y座標

needles

=

[]

# 儲存所有針的列表,開始為空

rotateSpeed

=

1

# 旋轉速度,預設是1,後面遊戲結束後改成0

score

=

0

# 遊戲得分

def

draw

():

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

screen

fill

‘white’

# 白色背景

startNeedle

draw

()

# 初始位置針的繪製

for

needle

in

needles

# 繪製列表中每根針

needle

draw

()

# 繪製針

screen

draw

filled_circle

((

400

300

),

80

‘red’

# 繪製圓盤

screen

draw

text

str

score

),

50

250

),

fontsize

=

50

color

=

‘green’

# 顯示遊戲得分

if

rotateSpeed

==

0

# 遊戲失敗

screen

draw

text

“Game Over!”

10

320

),

fontsize

=

35

color

=

‘red’

def

update

():

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

for

needle

in

needles

# 對列表中每根針遍歷處理

needle

angle

=

needle

angle

+

rotateSpeed

# 針的角度增加,即慢慢旋轉

def

on_key_down

():

# 當按下任意鍵盤鍵時執行

global

rotateSpeed

score

if

rotateSpeed

>

0

# 播放音效

music

play_once

‘彈簧’

# 再新建一根針

newNeedle

=

Actor

‘needle’

anchor

=

170

+

50

1

))

newNeedle

x

=

400

# 設定針錨點的x座標

newNeedle

y

=

300

# 設定針錨點的y座標

for

needle

in

needles

if

newNeedle

colliderect

needle

):

# 新針和其他針碰撞,遊戲失敗

print

‘遊戲失敗’

rotateSpeed

=

0

# 遊戲失敗,針停止旋轉

music

play_once

‘溜走’

if

rotateSpeed

>

0

# 如果針還在旋轉

score

=

score

+

1

# 得分加1

needles

append

newNeedle

# 把新針加入列表中

pgzrun

go

()

# 開始執行遊戲

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

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

《Python遊戲趣味程式設計》 第6章 見縫插針

這一章主要講解了圖片旋轉的實現、多張圖片列表的使用、遊戲音效的播放等功能,學習了if-elif-else和input語句。應用if選擇判斷、for迴圈、列表等語法知識,實現了見縫插針遊戲。讀者可以在本章程式碼基礎上繼續改進:

1。 隨著遊戲的進行,針的旋轉速度越來越快,遊戲難度越來越大;

2。 中間顯示為第三章的同心圓,同心圓每被針射中一次,換一次隨機顏色;

3。 嘗試在畫面右邊新增一位玩家,實現雙人版的見縫插針遊戲。

讀者也可以參考本章的開發思路,嘗試設計並分步驟實現旋轉炮臺射擊氣球的小遊戲。