天天看點

多媒體程式開發

朋友們大家好,相信大部分人都喜歡玩遊戲,無論是在工作間隙還是下班回家的路上,可能都會拿起手機玩遊戲打發時間,亦或是在遊戲中尋找樂趣,放松自己。上一系列的推文已經結束,主要是跟大家分享了些Python的基礎知識,大家可以在公衆号主界面檢視。從今天起,讓我們開啟進階模式,一起來學習用Python制作簡單的小遊戲。

我跟大家分享的内容主要是用Python的Pygame Zero子產品來制作小遊戲,同時推薦程式設計環境:Thonny(開源跨平台)。Thonny是一個跨平台的開源開發環境,自帶Python解釋器,體積小巧、功能齊備。掃描如下二維碼,會有老師手把手教你如何安裝Thonny和運用Thonny。

Thonny安裝好後,進行Pygame Zero子產品的安裝。首先打開Thonny,點選菜單“工具”->“管理子產品”,輸入“pgzero” 點選搜尋,最後點選“install” ,安裝成功!

我們制作一個小精靈,要求點選小精靈後,會發出聲音并且精靈會摔倒。第一步建立遊戲角色:

• 在源代碼檔案目錄下建立兩個目錄:一個是images(名字可自定義),用來存放圖檔檔案;另一個是sounds,用來存放聲音檔案。

• 用Actor類建立一個精靈對象:指定圖檔、位置

• 在draw中畫出精靈:精靈圖檔将出現在指定的位置alien.pos

第二步更新update:改變精靈的位置,每秒會改變60次!

import pgzrun
import time
#建立一個精靈
alien = Actor('alien')
alien.pos = 100,56
#繪制視窗大小
WIDTH = 500
HEIGHT = alien.height + 100
#每次需要重新整理視窗的時候,會自動調用draw函數
def draw():
    screen.clear()
    screen.fill((128, 0, 0))
    alien.draw()

每一幀都會調用update函數
def update():
    alien.left += 2
    if alien.left > WIDTH:
        alien.left = 0           

複制

第三步與精靈的互動:pos是滑鼠的位置,當點選到精靈,精靈就會摔倒,并發出“呃”的聲音,1s後恢複初始狀态;如果沒有點選到精靈,就會列印出“快閃”二字;如果無點選行為,精靈就将一直循環移動。

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()
           

複制

到這裡就大功告成了!以上是一個小例子,讓大家初識Python的Pygame Zero子產品,大家在空餘時間可以用Python來做做小遊戲,一方面可以鞏固相關知識,另一方面可以開拓視野釋放壓力。

上期參考答案

程式:

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()

   

           

複制

結果:

多媒體程式開發