多媒體程序開發(fā)
朋友們大家好,相信大部分人都喜歡玩游戲,無論是在工作間隙還是下班回家的路上,可能都會(huì)拿起手機(jī)玩游戲打發(fā)時(shí)間,亦或是在游戲中尋找樂趣,放松自己。上一系列的推文已經(jīng)結(jié)束,主要是跟大家分享了些Python的基礎(chǔ)知識(shí),大家可以在公眾號(hào)主界面查看。從今天起,讓我們開啟進(jìn)階模式,一起來學(xué)習(xí)用Python制作簡(jiǎn)單的小游戲。
我跟大家分享的內(nèi)容主要是用Python的Pygame Zero模塊來制作小游戲,同時(shí)推薦編程環(huán)境:Thonny(開源跨平臺(tái))。Thonny是一個(gè)跨平臺(tái)的開源開發(fā)環(huán)境,自帶Python解釋器,體積小巧、功能齊備。掃描如下二維碼,會(huì)有老師手把手教你如何安裝Thonny和運(yùn)用Thonny。?
Thonny安裝好后,進(jìn)行Pygame Zero模塊的安裝。首先打開Thonny,點(diǎn)擊菜單“工具”->“管理模塊”,輸入“pgzero” 點(diǎn)擊搜索,最后點(diǎn)擊“install” ,安裝成功!
我們制作一個(gè)小精靈,要求點(diǎn)擊小精靈后,會(huì)發(fā)出聲音并且精靈會(huì)摔倒。第一步創(chuàng)建游戲角色:
? 在源代碼文件目錄下新建兩個(gè)目錄:一個(gè)是images(名字可自定義),用來存放圖片文件;另一個(gè)是sounds,用來存放聲音文件。
? 用Actor類創(chuàng)建一個(gè)精靈對(duì)象:指定圖片、位置
? 在draw中畫出精靈:精靈圖片將出現(xiàn)在指定的位置alien.pos
第二步更新update:改變精靈的位置,每秒會(huì)改變60次!
import?pgzrun
import?time
#創(chuàng)建一個(gè)精靈
alien?=?Actor('alien')
alien.pos?=?100,56
#繪制窗口大小
WIDTH?=?500
HEIGHT?=?alien.height?+?100
#每次需要刷新窗口的時(shí)候,會(huì)自動(dòng)調(diào)用draw函數(shù)
def?draw():
????screen.clear()
????screen.fill((128,?0,?0))
????alien.draw()
每一幀都會(huì)調(diào)用update函數(shù)
def update():
??? alien.left += 2
??? if alien.left > WIDTH:
??????? alien.left = 0?第三步與精靈的交互:pos是鼠標(biāo)的位置,當(dāng)點(diǎn)擊到精靈,精靈就會(huì)摔倒,并發(fā)出“呃”的聲音,1s后恢復(fù)初始狀態(tài);如果沒有點(diǎn)擊到精靈,就會(huì)打印出“快閃”二字;如果無點(diǎn)擊行為,精靈就將一直循環(huán)移動(dòng)。
def?on_mouse_down(pos):
????if?alien.collidepoint(pos):
????????set_alien_hurt()
????else:
????????print("快閃")
????????
def?set_alien_hurt():
????????sounds.eep.play()
????????alien.image?=?'alien_hurt'
????????print("呃")
????????clock.schedule_unique(set_alien_normal,?1.0)
????????
def?set_alien_normal():
????alien.image?=?'alien'
pgzrun.go()
? ?? 到這里就大功告成了!以上是一個(gè)小例子,讓大家初識(shí)Python的Pygame Zero模塊,大家在空余時(shí)間可以用Python來做做小游戲,一方面可以鞏固相關(guān)知識(shí),另一方面可以開拓視野釋放壓力。
上期參考答案
程序:
from?turtle?import?*
from?random?import?*
from?math?import?*
?
def?tree(n,?l):
????pd()?
????pencolor('brown')
????pensize(n?/?3)
????forward(l)?
?
?
????if?n?>?0:
????????b?=?random()?*?15?+?10?
????????c?=?random()?*?15?+?10?
????????d?=?l?*?(random()?*?0.25?+?0.7)?
????????right(b)
????????tree(n?-?1,?d)
????????left(b?+?c)
????????tree(n?-?1,?d)
????????right(c)
????else:
????????right(90)
????????pencolor('green')
????????circle(3)
????????left(90)
????????
????pu()
????backward(l)
ht()
speed(0)?
tracer(0)
pu()?
backward(100)
left(90)?
pu()
backward(300)
tree(12,?100)
done()
???
結(jié)果:

《數(shù)據(jù)科學(xué)與人工智能》公眾號(hào)推薦朋友們學(xué)習(xí)和使用Python語言,需要加入Python語言群的,請(qǐng)掃碼加我個(gè)人微信,備注【姓名-Python群】,我誠邀你入群,大家學(xué)習(xí)和分享。
? ? 關(guān)于Python語言,有任何問題或者想法,請(qǐng)留言或者加群討論。
