中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

小學(xué)Python系列少兒編程課程《第10章 玩游戲不如自己開發(fā)游戲》課件(共46張PPT)

資源下載
  1. 二一教育資源

小學(xué)Python系列少兒編程課程《第10章 玩游戲不如自己開發(fā)游戲》課件(共46張PPT)

資源簡介

(共46張PPT)
Python少兒編程
第十章 玩游戲不如自己開發(fā)游戲
目錄
1.1
Python的游戲開發(fā)裝備
1.2
Pygame大顯身手
PART 01
Python的游戲開發(fā)裝備
Pygame簡介
1.1
Pygame是一個用于開發(fā)游戲的Python模塊,它是在SDL庫的基礎(chǔ)上開發(fā)的。通過Pygame,用戶可以開發(fā)功能豐富的游戲和多媒體程序。此外,Pygame是一個可移植性很高的模塊,可支持多個操作系統(tǒng),非常適合小游戲的開發(fā)。
Pygame是一個由一系列模塊組成的集合包,不同的模塊可以實現(xiàn)游戲中不同的功能, Pygame所有模塊列表如表10-1所示。
表10-1 Pygame所有模塊列表
Pygame簡介
1.1
表10-1 Pygame所有模塊列表(續(xù))
Pygame第三方庫安裝
1.1
步驟 1 啟動PyCharm,新建“第10章”項目,然后在菜單欄中選擇“文件”→“設(shè)置”選項,如圖10-1所示。
圖10-1 設(shè)置項目
Pygame第三方庫安裝
1.1
步驟 2 打開“設(shè)置”對話框,選擇“項目:第10章”→“Python解釋器”選項,然后在顯示的列表框上方單擊“+”按鈕,如圖10-2所示。
圖10-2 選擇安裝項目
Pygame第三方庫安裝
1.1
步驟 3 打開“可用包”對話框,在搜索欄中輸入“pygame”,然后在顯示的列表中選擇“pygame”選項,單擊“安裝包”按鈕,如圖10-3所示。
步驟 4 等待安裝,安裝成功后,“可用包”對話框中將顯示“已成功安裝包‘pygame’”,如圖10-4所示。
圖10-3 選擇安裝庫 圖10-4 成功安裝
Pygame第三方庫安裝
1.1
步驟 5 關(guān)閉“可用包”對話框,返回“設(shè)置”對話框,在已安裝庫列表中可看到“pygame”,單擊“確定”按鈕即可完成安裝,如圖10-5所示。
圖10-5 完成安裝
PART 02
Pygame大顯身手
創(chuàng)建窗口
2.1
所有游戲都在一個固定的窗口(或屏幕)進行操作,故開發(fā)游戲的第一步就是創(chuàng)建窗口。pygame.display模塊提供了set_mode()方法用于初始化一個窗口,其方法原型如下。
set_mode(resolution=(0,0)[, flags=0, depth=0])
其中,resolution是一個二元組,表示寬和高,單位為像素;flags用于指定擴展選項,可同時指定多個選項(使用“|”操作符隔開),具體選項如表10-2所示;depth表示顏色深度,如果缺省,系統(tǒng)會自動選擇一個最優(yōu)值。該方法返回一個Surface對象(即Pygame用來表示圖像的對象)。
創(chuàng)建窗口
2.1
表10-2 flags可用的選項
創(chuàng)建窗口
2.1
pygame.image模塊提供了load()方法用于加載圖片,其方法原型如下。
load(filename)
其中,filename為加載的圖片的名稱(可包含路徑)。該方法返回一個Surface對象。
圖片加載完成后,并不是顯示在窗口中,而是轉(zhuǎn)換成一個Surface對象,想要將其在窗口上顯示,須使用pygame.surface模塊中的blit()方法將一個圖像繪制到另一個圖像上,其方法原型如下。
blit(source, dest[, area=None, special_flags = 0])
其中,source為Surface對象(即顯示的圖片);dest為坐標值,一般為source的左上角坐標;area為圖片繪制的區(qū)域;special_flags用于指定混合模式。
加載圖片
2.2
pygame.image模塊提供了load()方法用于加載圖片,其方法原型如下。
load(filename)
其中,filename為加載的圖片的名稱(可包含路徑)。該方法返回一個Surface對象。
圖片加載完成后,并不是顯示在窗口中,而是轉(zhuǎn)換成一個Surface對象,想要將其在窗口上顯示,須使用pygame.surface模塊中的blit()方法將一個圖像繪制到另一個圖像上,其方法原型如下。
blit(source, dest[, area=None, special_flags = 0])
其中,source為Surface對象(即顯示的圖片);dest為坐標值,一般為source的左上角坐標;area為圖片繪制的區(qū)域;special_flags用于指定混合模式。
加載圖片
2.2
【例10-1】 創(chuàng)建一個窗口,并加載一張圖片作為背景。
【問題分析】 首先,使用import語句導(dǎo)入所需模塊(如pygame、sys);接著,初始化pygame;然后,創(chuàng)建窗口、設(shè)置窗口標題、加載背景圖片、繪制圖形及刷新繪圖;最后,程序進入無限循環(huán),判斷是否獲取退出事件,如果是,則退出程序。
【參考代碼】
import pygame, sys #導(dǎo)入模塊
pygame.init() #初始化pygame
screen = pygame.display.set_mode((400, 200)) #設(shè)置窗口大小
pygame.display.set_caption('貪吃蛇') #設(shè)置窗口標題
加載圖片
2.2
【參考代碼】(續(xù))
#加載背景圖片
background = pygame.image.load('images\\貪吃蛇.jpg')
screen.blit(background, (0, 0)) #將背景繪制到窗口的(0,0)位置
pygame.display.update() #刷新繪圖
while True: #循環(huán)
for event in pygame.event.get(): #獲取事件并遍歷
if event.type == pygame.QUIT: #如果為退出事件
pygame.quit() #退出pygame
sys.exit() #退出系統(tǒng)
加載圖片
2.2
【運行結(jié)果】 程序運行結(jié)果如圖10-6所示。
圖10-6 例10-1程序運行結(jié)果
繪制圖形
2.3
pygame.draw模塊中常用的方法如表10-3所示。
表10-3 pygame.draw模塊中常用的方法
繪制圖形
2.3
表10-3 pygame.draw模塊中常用的方法(續(xù))
繪制圖形
2.3
【例10-2】 繪制多種圖形。
【參考代碼】
#導(dǎo)入模塊和常量
import pygame, sys
from math import pi
pygame.init() #初始化pygame
screen = pygame.display.set_mode((520, 250)) #設(shè)置窗口大小
pygame.display.set_caption('繪制圖形') #設(shè)置窗口標題
#定義顏色
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
繪制圖形
2.3
【參考代碼】(續(xù))
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
screen.fill(WHITE) #設(shè)置背景顏色
#繪制一條線
pygame.draw.line(screen, RED, [10, 10], [50, 10], 2)
#繪制一條抗鋸齒的線
pygame.draw.aaline(screen, GREEN, [10, 50], [50, 50], True)
#繪制一條折線
pygame.draw.lines(screen,BLACK,False,[[75,10],[125,10],[125,50]],5)
#繪制一條閉環(huán)折線
pygame.draw.lines(screen,BLACK,True,[[150,10],[200,10],[200,50]],5)
#繪制一個矩形框
繪制圖形
2.3
【參考代碼】(續(xù))
pygame.draw.rect(screen, BLUE, [225, 10, 50, 40], 2)
#繪制一個矩形
pygame.draw.rect(screen, BLUE, [300, 10, 50, 40])
#繪制一個橢圓框
pygame.draw.ellipse(screen, RED, [375, 10, 50, 40], 2)
#繪制一個橢圓
pygame.draw.ellipse(screen, RED, [450, 10, 50, 40])
#繪制多邊形(三角形)
pygame.draw.polygon(screen,BLACK,[[10,200],[120,100],[150,200]],5)
繪制圖形
2.3
【參考代碼】(續(xù))
#繪制多條弧線
pygame.draw.arc(screen, BLACK, [200, 90, 150, 125],0,pi/2,2)
pygame.draw.arc(screen, GREEN, [200, 90, 150, 125],pi/2,pi,2)
pygame.draw.arc(screen, BLUE, [200, 90, 150, 125],pi,3*pi/2,2)
pygame.draw.arc(screen, RED, [200, 90, 150, 125],3*pi/2,2*pi,2)
#繪制一個圓
pygame.draw.circle(screen, BLUE, [450, 150], 60, 2)
#刷新繪圖
pygame.display.update()
while True: #循環(huán)
for event in pygame.event.get(): #獲取事件并遍歷
if event.type == pygame.QUIT: #如果為退出事件
pygame.quit() #退出pygame
sys.exit() #退出系統(tǒng)
繪制圖形
2.3
【運行結(jié)果】 程序運行結(jié)果如圖10-7所示。
圖10-7 例10-2程序運行結(jié)果
設(shè)置動畫效果
2.4
物體移動的原理很簡單,即在原有坐標的基礎(chǔ)上增加偏移量,再重新繪制圖片,依次一張一張地循環(huán)繪制下去,就可以得到物體移動的效果。
此外,需要考慮兩個畫面之間的時間間隔,即經(jīng)過多長時間繪制下一張圖片。pygame.time模塊提供了一個Clock對象,使用其tick()方法可解決上述問題。
(1)通過pygame.time.Clock()方法創(chuàng)建對象獲得pygame的時鐘。
(2)使用pygame.time.Clock.tick(FPS)方法設(shè)置pygame時鐘的時間間隔。
設(shè)置動畫效果
2.4
【例10-3】 設(shè)置動畫效果示例。
【參考代碼】
import pygame, sys #導(dǎo)入模塊
pygame.init() #初始化pygame
FPS = 30 #設(shè)置幀率
fpsClock = pygame.time.Clock() #創(chuàng)建時鐘對象
screen = pygame.display.set_mode((500, 400)) #設(shè)置窗口大小
pygame.display.set_caption('動畫') #設(shè)置窗口標題
WHITE = (255, 255, 255) #定義顏色
img = pygame.image.load('images\\球.png') #加載圖片
imgx, imgy = 10, 10 #初始化圖片的位置
direction = 'right' #初始化圖片的移動方向
設(shè)置動畫效果
2.4
【參考代碼】(續(xù))
while True: #循環(huán)
screen.fill(WHITE) #背景填充為白色
if direction == 'right': #如果圖片向右移動
imgx += 5 #圖片x坐標加5
if imgx == 420: #如果圖片x坐標等于420
direction = 'down' #設(shè)置方向為向下
elif direction == 'down': #如果圖片向下移動
imgy += 5 #圖片y坐標加5
if imgy == 320: #如果圖片y坐標等于320
direction = 'left' #設(shè)置方向為向左
elif direction == 'left': #如果圖片向左移動
imgx -= 5 #圖片x坐標減5
if imgx == 0: #如果圖片x坐標等于0
direction = 'up' #設(shè)置方向為向上
設(shè)置動畫效果
2.4
【參考代碼】(續(xù))
elif direction == 'up': #如果圖片向上移動
imgy -= 5 #圖片y坐標減5
if imgy == 0: #如果圖片y坐標等于0
direction = 'right' #設(shè)置方向為向右
screen.blit(img, (imgx, imgy)) #繪制圖片
for event in pygame.event.get(): #獲取事件并遍歷
if event.type == pygame.QUIT: #如果為退出事件
pygame.quit() #退出pygame
sys.exit() #退出系統(tǒng)
pygame.display.update() #刷新繪圖
fpsClock.tick(FPS) #設(shè)置時鐘的時間間隔
設(shè)置動畫效果
2.4
【運行結(jié)果】 運行程序,可以看到小球自左往右、自上往下、自右往左、自下往上循環(huán)移動,部分顯示結(jié)果如圖10-8所示。
圖10-8 例10-3程序運行結(jié)果
播放聲音
2.5
播放音效使用pygame.mixer模塊,須首先創(chuàng)建一個Sound對象,其語法格式如下。
Sound(filename)
其中,filename為音頻文件名(可包含路徑)。
創(chuàng)建Sound對象后,可使用play()方法播放音效。Sound對象的常用方法如表10-4所示。
表10-4 Sound對象的常用方法
播放聲音
2.5
播放背景音樂使用pygame.music模塊,它是pygame.mixer模塊的一個特殊實現(xiàn),使用時須通過pygame.mixer.music調(diào)用其方法。pygame.music模塊的常用方法如表10-5所示。
表10-5 pygame.music模塊的常用方法
播放聲音
2.5
【例10-4】 播放聲音示例。
【參考代碼】
import pygame, sys #導(dǎo)入模塊
pygame.init() #初始化pygame
screen = pygame.display.set_mode((400, 300)) #設(shè)置窗口大小
pygame.display.set_caption('播放聲音') #設(shè)置窗口標題
background = pygame.image.load('images\\煙花.jpg') #加載背景圖片
screen.blit(background, (0, 0)) #繪制背景
sound = pygame.mixer.Sound('sounds\\燃放煙花.wav') #創(chuàng)建音效對象
pygame.display.update() #刷新繪圖
播放聲音
2.5
【參考代碼】(續(xù))
#加載背景音樂文件
pygame.mixer.music.load('sounds\\新年好.mp3')
#播放背景音樂,第一個參數(shù)為播放的次數(shù)(-1表示無限循環(huán)),第二個參數(shù)是設(shè)置播放的起點(單位為秒)
pygame.mixer.music.play(-1, 0.0)
while True: #循環(huán)
sound.play() #播放音效
for event in pygame.event.get(): #獲取事件并遍歷
if event.type == pygame.QUIT: #如果為退出事件
pygame.mixer.music.stop() #停止播放背景音樂
pygame.quit() #退出pygame
sys.exit() #退出系統(tǒng)
播放聲音
2.5
【運行結(jié)果】 運行程序,出現(xiàn)主界面(見圖10-9),然后直接播放音效和背景音樂。
圖10-9 例10-4程序運行結(jié)果
顯示文字
2.6
如果想要將文字顯示到屏幕上,須首先使用pygame.font模塊中的Font()方法創(chuàng)建一個Font對象,其語法格式如下。
Font(filename, size)
其中,filename為字體文件名稱(一般為“.ttf”格式);size為字體的大小,單位為像素。
創(chuàng)建Font對象后,須使用render()方法返回一個Surface對象繪制文本,其語法格式如下。
render(text, antialias, color[, background=None])
其中,text為要顯示的文字;antialias是個布爾值,表示是否開啟抗鋸齒,當為True時字體比較平滑;color為文字顏色;background為背景顏色。
最后還須使用blit()方法顯示文字。
顯示文字
2.6
【例10-5】 顯示文字示例。
【參考代碼】
import pygame, sys #導(dǎo)入模塊
pygame.init() #初始化pygame
screen = pygame.display.set_mode((260, 100)) #設(shè)置窗口大小
pygame.display.set_caption('顯示文字') #設(shè)置窗口標題
#定義顏色
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
#創(chuàng)建字體對象
font = pygame.font.Font('fonts\\simkai.ttf', 30)
顯示文字
2.6
【參考代碼】(續(xù))
#設(shè)置顯示的文字,創(chuàng)建文字對象
textSurface = font.render('恭喜你,你贏了!', True, GREEN, RED)
screen.fill(WHITE) #背景填充為白色
textRect = textSurface.get_rect() #獲取文字對象的rect
textRect.center = (130, 50) #設(shè)置文字對象的中心坐標
screen.blit(textSurface, textRect) #繪制文字
pygame.display.update() #刷新繪圖
while True: #循環(huán)
for event in pygame.event.get(): #獲取事件并遍歷
if event.type == pygame.QUIT: #如果為退出事件
pygame.quit() #退出pygame
sys.exit() #退出系統(tǒng)
顯示文字
2.6
【運行結(jié)果】 運行程序,窗口中顯示綠色的“恭喜你,你贏了!”文字,其背景色為紅色,如圖10-10所示。
圖10-10 例10-5程序運行結(jié)果
事件處理
2.7
Pygame會接收用戶各種操作(如按下或釋放按鍵、移動鼠標、按下或釋放鼠標等)產(chǎn)生的事件。事件隨時可能發(fā)生,Pygame將一系列事件存放在一個事件隊列里,然后通過for循環(huán)取出每一個事件與產(chǎn)生的事件進行比較,如果相等則處理產(chǎn)生的事件。
一般可使用pygame.event模塊中的get()方法來獲取所有事件,Pygame中常用的事件如表10-6所示。
事件處理
2.7
表10-6 Pygame中常用的事件
事件處理
2.7
【例10-6】 事件處理示例。
【參考代碼】
import pygame, sys #導(dǎo)入模塊
pygame.init() #初始化pygame
screen = pygame.display.set_mode((400, 300)) #設(shè)置窗口大小
pygame.display.set_caption('事件處理') #設(shè)置窗口標題
image = pygame.image.load('images\\蝴蝶.png') #加載圖片
WHITE = (255, 255, 255) #定義顏色
x, y = 200, 150 #初始化圖片位置
事件處理
2.7
【參考代碼】(續(xù))
while True: #循環(huán)
for event in pygame.event.get(): #獲取事件并遍歷
#如果移動鼠標,獲得鼠標當前位置
if event.type == pygame.MOUSEMOTION:
x = event.pos[0]
y = event.pos[1]
#如果按下鼠標,輸出鼠標按下位置
if event.type == pygame.MOUSEBUTTONDOWN:
print('按下鼠標:', event.pos)
#如果釋放鼠標,輸出鼠標釋放的位置
if event.type == pygame.MOUSEBUTTONUP:
print('釋放鼠標:', event.pos)
事件處理
2.7
【參考代碼】(續(xù))
#如果按下按鍵
if event.type == pygame.KEYDOWN:
#如果按鍵為方向鍵,輸出對應(yīng)的方向
if event.key == pygame.K_UP:
print('上')
if event.key == pygame.K_DOWN:
print('下')
if event.key == pygame.K_LEFT:
print('左')
if event.key == pygame.K_RIGHT:
print('右')
事件處理
2.7
【參考代碼】(續(xù))
#如果按鍵為Esc鍵
if event.key == pygame.K_ESCAPE:
pygame.quit() #退出pygame
sys.exit() #退出系統(tǒng)
screen.fill(WHITE) #背景填充為白色
screen.blit(image, (x, y)) #繪制圖片
pygame.display.update() #刷新繪圖
事件處理
2.7
【運行結(jié)果】 運行程序,出現(xiàn)加載圖片的窗口,當鼠標在窗口上移動時,圖片隨著鼠標移動,如圖10-11所示。單擊窗口上的任意位置,輸出鼠標按下和釋放時的坐標;按下“上”“下”“左”“右”方向鍵,輸出相應(yīng)的“上”“下”“左”“右”信息;按下“Esc”鍵,退出程序,如圖10-12所示。
圖10-11 窗口界面 圖10-12 輸出信息
感謝觀看

展開更多......

收起↑

資源預(yù)覽

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 陆良县| 齐河县| 临桂县| 苗栗县| 平乐县| 大余县| 贵阳市| 彭州市| 长寿区| 彭山县| 柘荣县| 金门县| 额尔古纳市| 环江| 陆川县| 凤阳县| 囊谦县| 岫岩| 舒城县| 镇远县| 全南县| 英吉沙县| 伊春市| 额济纳旗| 淅川县| 宁南县| 澄城县| 晴隆县| 德保县| 寿光市| 徐汇区| 新营市| 嘉黎县| 岐山县| 尼玛县| 连江县| 富源县| 玉龙| 云林县| 新巴尔虎右旗| 广安市|