欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python游戲庫(kù)pygame經(jīng)典教程(推薦!)

 更新時(shí)間:2022年12月06日 12:01:40   作者:小馬哥不馬虎  
Python Pygame是一款專門為開(kāi)發(fā)和設(shè)計(jì) 2D 電子游戲而生的軟件包,是入門級(jí)游戲開(kāi)發(fā)庫(kù),下面這篇文章主要給大家介紹了python游戲庫(kù)pygame經(jīng)典教程的相關(guān)資料,需要的朋友可以參考下

一.Pygame程序基本搭建過(guò)程

Pygame搭建游戲窗口主要為如下幾步

1.初始化化程序

在使用Pygame編程之前,我們要對(duì)程序進(jìn)行初始化,代碼如下

pygame.init()

該代碼是整個(gè)程序的第一句代碼,它的作用是自動(dòng)檢測(cè)Pygame軟件包是否正常,并完成包括display(顯卡模塊),font(字體模塊),mixer(聲音模塊),cursors(光標(biāo)控制模塊)等的模塊的初始化

2.創(chuàng)建Surface對(duì)象

Surface是Pygame編程的窗口界面,類似畫(huà)布,圖像和文本可以顯示在Surface上,創(chuàng)建方式主要有以下方式

(1)創(chuàng)建Surface對(duì)象:

#也可以叫做screen對(duì)象,本質(zhì)上是一個(gè)Surface對(duì)象
screen = pygame.display.set_mode(400,400)

(2)創(chuàng)建一個(gè)帶文本的Surface對(duì)象:

#創(chuàng)建一個(gè)包含文字的Surface對(duì)象
text = f.render("小馬哥不馬虎",True,(255,255,255),(0,0,0))
#通過(guò)blit方法將其繪制出來(lái),textRect表示位置坐標(biāo)
screen.blit(text,textRect)

(3)創(chuàng)建一個(gè)包含圖像的Surface對(duì)象:

surface_image = pygame.image.load("圖片路徑")

3.事件監(jiān)聽(tīng)

一個(gè)好的游戲少不了游戲與人的交互,通過(guò)事件,人按自己的想法對(duì)游戲進(jìn)行交互

如下是一個(gè)關(guān)閉游戲的簡(jiǎn)單交互:

#所有g(shù)et()獲取事件
for event in pygame.event.get():
    #判斷事件類型
    if event.type == pygame.QUIT:
        pygame.quit()

4.游戲循環(huán) 

代碼:

while True:
    for event in pymage.event.get():
        if event.type == pygame.QUIT:
            pymage.quit()
            sys.exit()
    #更新并繪制屏幕內(nèi)容
    pygame.display.flip()

二.Pygame Display顯示模塊詳解

Pygame使用pygame.display顯示模塊中的方法創(chuàng)建游戲的主窗口:

格式:

screen = pygame.display.set_mode(size=(),flags=0)

·size:用來(lái)設(shè)置窗口的大小

·flags:功能標(biāo)志位,表示創(chuàng)建的主窗口樣式,flags參數(shù)如下:

flags參數(shù)

標(biāo)志位功能
pygame.FULLSCREEN創(chuàng)建一個(gè)全屏窗口
pygame.HWSURFACE創(chuàng)建一個(gè)硬件加速窗口,必須和FULLSCREEN同時(shí)使用
pygame.OPENGL創(chuàng)建一個(gè)OPENGL渲染窗口
pygame.RESIZABLE創(chuàng)建一個(gè)可以改變大小的窗口
pygame.DOUBLEBUF創(chuàng)建一個(gè)雙緩沖窗口,建議在HWSURFACE或OPENGL時(shí)使用
pygame.NOFRAME創(chuàng)建一個(gè)沒(méi)有邊框的窗口

1.將Surface對(duì)象粘貼至主窗口上

代碼:

scrren.blit(source,dest,area=None,special_flage=0)

·source:表示要粘貼的Surface對(duì)象

·dest:主窗口一個(gè)標(biāo)識(shí)的坐標(biāo)位置

·area:接受一個(gè)Rect對(duì)象,默認(rèn)為None,如果提供該參數(shù)則相當(dāng)于摳圖操作,即在屏幕的指定位置顯示想要的內(nèi)容

·special_flags:可選參數(shù),用于指定對(duì)應(yīng)位置顏色的混合方式

2.設(shè)置窗口主窗口

screen = pygame.display.set_mode(400,400)

3.填充主窗口背景,參數(shù)值RGB

screen.fill((156,156,156))

4.設(shè)置窗口標(biāo)題

pygame.display.set.caption('小馬哥不馬虎')

5.更新屏幕內(nèi)容

pygame.display.flip()

6.pygame.display其他方法

方法名稱說(shuō)明
pygame.display.get_surface()獲取當(dāng)前顯示的Surface對(duì)象
pygame.display.flip()更新整個(gè)待顯示的Surface對(duì)象到屏幕上
pygame.display.update()更新部分軟件界面顯示
pygame.display.lnfo()產(chǎn)生一個(gè)VideInfo對(duì)象,包含了顯示界面的相關(guān)信息
pygame.display.set_icon()設(shè)置左上角的游戲圖標(biāo),圖標(biāo)尺寸大小為32*32
pygame.display.iconify()將顯示的主窗口即Surface對(duì)象最小化,或者隱藏
pygame.display.get_active()當(dāng)前顯示界面顯示在屏幕上時(shí)返回True,如果窗口被隱藏和最小化時(shí)則返回False

三.Pygame Surface創(chuàng)建圖像

1.Surface模塊創(chuàng)建圖像

語(yǔ)法格式:

Surface=pygame.Surface(size=(width,height),flags,depth)

·size:表示Surface對(duì)象的矩形區(qū)域大小

·flage:功能標(biāo)志位,有兩個(gè)可選參數(shù)值HWSURFACE和SPCALPHA,前者代表將創(chuàng)建的Surface對(duì)象存放于顯存中,后者表示讓圖像的每一個(gè)像素包含一個(gè)alpha通道

·depth:指定像素的顏色深度,默認(rèn)為自適應(yīng)模式,由Pygame自動(dòng)調(diào)節(jié)

代碼實(shí)例:

import pygame
import sys
 
pygame.init()
#設(shè)置主窗口
screen = pygame.display.set_mode((400,400))
screen.fill('blue')
#設(shè)置窗口標(biāo)題
pygame.display.set_caption('小馬哥不馬虎')
#創(chuàng)建一個(gè)圖像
face = pygame.Surface((60,60),flags=pygame.HWSURFACE)
#填充圖像
face.fill(color='pink')
while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            sys.exit()
    #將圖像添加到主屏幕上
    screen.blit(face,(100,100))
    #更新屏幕內(nèi)容
    pygame.display.flip()

效果:

2.Surface從外部加載圖像

語(yǔ)法格式:

pygame.image.load('圖片路徑').convert()

代碼實(shí)例:

import pygame
import sys
 
pygame.init()
#設(shè)置主窗口
screen = pygame.display.set_mode((400,400))
screen.fill('white')
#設(shè)置窗口標(biāo)題
pygame.display.set_caption('小馬哥不馬虎')
#加載圖片
image_surface = pygame.image.load('C:/Users/myun/Pictures/不知火舞.jpg')
image_surface.fill((0,0,255),rect=(100,100,100,50),special_flags=0)
image_surface.scroll(100,60)  #移動(dòng)圖片
while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            sys.exit()
    #將圖像添加到主屏幕上
    screen.blit(image_surface,(0,0))
    #更新屏幕內(nèi)容
    pygame.display.flip()

效果圖:

Surface模塊處理圖像方法:

方法說(shuō)明
pygame.Surface.blit()將一個(gè)圖像繪制到另一個(gè)圖像上
pygame.Surface.convert()修改圖像的格式
pygame.Surface.fill()使用純色填充Surface圖像
pygame.Surface.scroll()復(fù)制并移動(dòng)Surface對(duì)象
pygame.Surface.set_alpha()設(shè)置整個(gè)圖像的透明度
pygame.Surface.get_at()獲取一個(gè)像素的顏色值
pygame.Surface.set_at()設(shè)置一個(gè)像素的顏色值
pygame.Surface.get_palette()獲取Surface對(duì)象8位索引的調(diào)色板
pygame.Surface.map_rgb()將一個(gè)RGBA顏色轉(zhuǎn)換為映射的顏色值
pygame.Surface.set_clip()設(shè)置該Surface對(duì)象的剪切區(qū)域
pygame.Surface.subsurface()根據(jù)父對(duì)象創(chuàng)建一個(gè)新的子Surface對(duì)象
pygame.Surface.get_offset()獲取子Surface對(duì)象在父對(duì)象中的偏移量
pygame.Surface.get_size()獲取Surface對(duì)象的大小

四.Pygame Transform圖像變形 

Transform方法

方法說(shuō)明
pygame.transform.scale()將圖片縮放至指定的大小,并返回一個(gè)新的Surface對(duì)象
pygame.transform.rotate()將圖片旋轉(zhuǎn)至指定角度
pygame.transform.rotozoom()以角度旋轉(zhuǎn)圖像,同時(shí)將圖像縮小或放大至指定的倍數(shù)

五.Pygame Time時(shí)間控制

1.游戲暫停

Pygame.time模塊提供以下常用方法

方法說(shuō)明
pygam.time.get_ticks()以毫秒為單位獲取時(shí)間
pygame.time.wait()使程序暫停一段時(shí)間
pygame.time.set_time()創(chuàng)建一個(gè)定時(shí)器,即每隔一段時(shí)間就去執(zhí)行一些動(dòng)作
pygame.time.Clock()創(chuàng)建一個(gè)時(shí)間對(duì)象來(lái)幫助我們確定游戲要以多大的幀數(shù)運(yùn)行

代碼實(shí)例:

import pygame
pygame.init()
screen =pygame.display.set_mode((500,400))
pygame.display.set_caption('時(shí)間設(shè)置')
#獲取時(shí)間
t=pygame.time.get_ticks()
#暫停游戲3000毫秒
t1=pygame.time.wait(3000)
print(t1)
image_surface=pygame.image.load('C:/Users/myun/Pictures/不知火舞.jpg')
while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            exit()
        screen.blit(image_surface,(0,0))
        pygame.display.update()

效果:三秒后加載圖片

2.設(shè)置游戲的幀數(shù)率(FPS)

Clock()方法可以實(shí)現(xiàn)對(duì)游戲幀數(shù)的設(shè)置

方法說(shuō)明
pygame.time.Clock.tick()更新clock對(duì)象
pygame.time.Clock.get_time()獲取上一個(gè)tick中的時(shí)間
pygame.time.Clock.get_fps()計(jì)算clock對(duì)象的幀數(shù)

代碼實(shí)例:

import pygame
pygame.init()
screen =pygame.display.set_mode((500,400))
pygame.display.set_caption('時(shí)間設(shè)置')
#獲取時(shí)間
t=pygame.time.get_ticks()
#暫停游戲3000毫秒
t1=pygame.time.wait(3000)
print(t1)
image_surface=pygame.image.load('C:/Users/myun/Pictures/不知火舞.jpg')
#創(chuàng)建時(shí)間對(duì)象
clock = pygame.time.Clock()
while True:
    #通過(guò)時(shí)間對(duì)象指定循環(huán)幀數(shù),每秒循環(huán)60次
    clock.tick(60)
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            exit()
        screen.blit(image_surface,(0,0))
        pygame.display.update()

注:游戲幀數(shù)中在動(dòng)態(tài)圖時(shí)才顯現(xiàn)出來(lái)

六.Pygame Rect區(qū)域位置

Rect()方法創(chuàng)建一個(gè)指定位置,指定大小的矩形區(qū)域

語(yǔ)法格式:

Rect=pygame.Rect(left,top,width,height)

代碼實(shí)例: 

import pygame
pygame.init()
screen = pygame.display.set_mode((500,300))
pygame.display.set_caption('小馬哥不馬虎')
image_surface = pygame.image.load("C:/Users/myun/Pictures/bg.jpg")
rect1 = pygame.Rect(50,50,100,100)
# 在原圖的基礎(chǔ)上創(chuàng)建一個(gè)新的子圖(surface對(duì)象)
image_child= image_surface.subsurface(rect1)
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
    #在屏幕上顯示子圖的區(qū)域
    screen.blit(image_child,rect1)
    pygame.display.update()

效果:在圖片上截取了一個(gè)和Rect1同樣大小的矩形區(qū)域

Rect對(duì)其他常用方法:

方法說(shuō)明
pygame.Rect.copy()復(fù)制矩形
pygame.Rect.move()移動(dòng)矩形區(qū)域,接受一個(gè)列表參數(shù)
pygame.Rect.move_ip()移動(dòng)矩形(無(wú)返回)
pygame.Rect.inflate()增大或縮小矩形
pygame.Rect.clamp()將矩形移動(dòng)到另一個(gè)矩形內(nèi)
pygame.Rect.union()返回兩個(gè)矩形合并后的矩形
pygame.Rect.fit()按橫縱比調(diào)整矩形或移動(dòng)矩形
pygame.Rect.contains()測(cè)試一個(gè)矩形是否在另個(gè)矩陣內(nèi)
pygame.Rect.collidepoint()測(cè)試點(diǎn)是否在矩形中
pygame.Rect.colliderect()測(cè)試兩個(gè)矩形是否重疊

七.Pygame Event事件模塊 

1.事件類型

通過(guò)事件類型,可以有序的,逐一的處理用戶的操作

事件

事件類型描述成員屬性
        QOUIT用戶按下窗口的關(guān)閉按鈕none
ATIVEEVENTPygame被激活或者隱藏

gain,state

 KEYDOWN鍵盤按下unicode,key,mod
KEYUP鍵盤釋放key,mod
MOUSEMOTION鼠標(biāo)移動(dòng)pos,rel,button
MOUSEBUTTONDOWN鼠標(biāo)按下pos,button
MOUSEBUTTONUP鼠標(biāo)放開(kāi)pos,button
JOYAXISMOTION游戲手柄(Joystick or pad)移動(dòng)joy,axis,value
JOYBALLMOTION游戲球(Joy  ball)移動(dòng)joy,axis,value
JOYHATMOTION游戲手柄(Joystick)移動(dòng)joy,axis,value
JOYBUTTONDOWN游戲手柄按下joy,button
JOYBUTTONUP游戲手柄放開(kāi)joy,button
VIDEORESIZEpygame窗口縮放size,w,h
VIDEOEXPOSEPygame窗口部分公開(kāi)none
USEREVENT觸發(fā)一個(gè)用戶事件事件代碼

2.事件處理方法

Pygam.event模塊提供了處理事件的常用方法,如下:

方法說(shuō)明
pygame.event.get()從事件隊(duì)列獲取一個(gè)事件,并在事件隊(duì)列中刪除該事件
pygame.event.wait()阻塞直至事件發(fā)生才會(huì)繼續(xù)執(zhí)行,若沒(méi)有事件發(fā)生將一直處于阻塞狀態(tài)
pygame.event.set_blocked()控制哪些事件禁止進(jìn)入隊(duì)列,如果參數(shù)值為None,則表示禁止所有事件進(jìn)入
pygame.event.pump()調(diào)用該方法后,Pygame會(huì)自動(dòng)處理事件隊(duì)列
pygame.event.poll()會(huì)根據(jù)實(shí)際情況返回一個(gè)真實(shí)的事件,或者一個(gè)None
pygame.event.peek()檢測(cè)某類事件是否在隊(duì)列中
pygame.event.clear()從隊(duì)列中清除所有的事件
pygame.event.get_blocked()檢測(cè)某一類型的事件是否被禁止進(jìn)入隊(duì)列
pygame.event.post()放置一個(gè)新的事件在隊(duì)列中
pygame.event.Event()創(chuàng)建一個(gè)用戶自定義的事件
pygame.event.set_allowed()控制哪些事件允許進(jìn)入隊(duì)列

3.處理鍵盤事件

鍵盤事件通過(guò)一個(gè)key屬性,通過(guò)該屬性可以獲取鍵盤的按鍵,如下是鍵盤按鍵的常量:

常量名描述
K_BACKSPACE

退格鍵(Backspace)

K_TAB制表鍵(Tab)
K_CLEAR清除鍵(Clear)
K_RETURN回車鍵(Enter)
K_PAUSE暫停鍵(Pause)
K_ESCAPE退出鍵(Escape)
K_SPACE

空格鍵(Space)

K_0~K_90~9
K_a~k_za~z
K_DELETE

刪除鍵(delete)

K_KP0~K_KP9

小鍵盤的0~9

K_F1~K_F15F1~F15
K_UP向上箭頭
K_DOWN向下箭頭
K_RIGHT向右箭頭
K_LEFT向左箭頭
KMOD_ALT同時(shí)按下Alt鍵

4.處理鼠標(biāo)事件

事件說(shuō)明
MOUSEMOTION鼠標(biāo)按下
MOUSEBUTTONDOWN鼠標(biāo)釋放
MOUDEBUTTONUP鼠標(biāo)釋放
import pygame
from random import randint
# 初始化程序
pygame.init()
screen = pygame.display.set_mode((450,400))
# 更新顯示
pygame.display.flip()
while True:
    #等待事件發(fā)生
    event = pygame.event.wait()
    if event.type == pygame.QUIT:
        exit("成功退出")
    if event.type == pygame.MOUSEBUTTONDOWN:
        # pos 獲取鼠標(biāo)當(dāng)前位置
        print('鼠標(biāo)按下',event.pos)
        mx,my = event.pos
        # 調(diào)用 pygame.draw 模塊畫(huà)圓
        pygame.draw.circle(screen,(255,255,0),(mx,my),50)
        # 處理完,更新顯示
        pygame.display.update()
    if event.type == pygame.MOUSEBUTTONUP:
        print('鼠標(biāo)彈起')
        pass
    if event.type == pygame.MOUSEMOTION:
        print('鼠標(biāo)移動(dòng)')
        mx, my = event.pos
        # 隨機(jī)生成 RGB 顏色值
        r = randint(0,255)
        g = randint(0,255)
        b = randint(0,255)
        pygame.draw.circle(screen, (r,g,b,),(mx, my), 50)
        # 處理完,更新顯示
        pygame.display.update()

八.Pygame Dra繪圖函數(shù)

1.繪制矩形

語(yǔ)法格式:

pygame.draw.rect(surface,color,rect,width)

·surface:指主窗口

·color:該參數(shù)用于圖形著色

·rect:繪制圖形的位置和大小

·width:可選參數(shù),指定邊框的寬度,默認(rèn)為0,表示填充該矩形區(qū)域

注:當(dāng)width>0時(shí),表示線框的寬度,而width<0時(shí),此時(shí)不會(huì)繪制任何圖形

2.繪制多邊形

語(yǔ)法格式:

pygame.draw.polygon(surface,color,points,width)

其余參數(shù)與上面相同,points表示組成多邊形的多個(gè)(x,y)坐標(biāo)

3.繪制圓形

語(yǔ)法格式:

pygame.circle(surface,color,pos,radius,width=0)

·pos:該參數(shù)用來(lái)指定圓心的位置

·radius:用來(lái)指定圓的半徑

4.繪制橢圓形

語(yǔ)法格式:

pygame.draw.ellipse(surface,Rect,width=0)

5.繪制圓弧曲線

語(yǔ)法格式:

pygame.draw.arc(Surface,color,Rect,start_angle,stop_angle,width=1)

·start_angle:該段該段圓弧的起始角度

·stop_angle:終止角度

6.繪制直線

語(yǔ)法格式:

一條直線:

pygame.draw.line(surface,color,start_pos,end_pos,width=1)

·start_pos和end_pos:表示線段的起始位置和結(jié)束位置(x,y)

·width=1:表示直線的寬度,默認(rèn)為1

一條消除鋸齒的平滑線:

pygame.aaline(surface,color,start_pos,end_pos,blend=1)

多條直線:

pygame.line(surface,color,closed,pointlist,width=1)

·pointlist:參數(shù)列表,包含了一些列點(diǎn)坐標(biāo)的列表

·closed:布爾參數(shù),如果設(shè)置為True,表示直線的第一個(gè)端點(diǎn)和直線的最后一個(gè)端點(diǎn)要首尾相連

多條抗鋸齒直線:

pygame.draw.aalines(surface,color,closed,pointlist,blend=1)

繪圖方法總匯:

pygame.draw模塊繪圖方法

方法說(shuō)明
pygame.draw.rect()繪制矩陣
pygame.draw.polygon()繪制多邊形
pygame.draw.circle()根據(jù)圓心和半徑繪制圓形
pygame.draw.ellipse()繪制一個(gè)橢圓形
pygame.draw.arc()繪制弧線
pygame.draw.line()繪制線段
pygame.draw.ines()繪制多條連續(xù)的線段
pygame.draw.aaline()繪制一條平滑的線段(抗鋸齒)
pygame.draw.aalines()繪制多條連續(xù)的線段

代碼實(shí)例:

import pygame
from math import pi
#初始化
pygame.init()
# 設(shè)置主屏幕大小
size = (500, 450)
screen = pygame.display.set_mode(size)
# 設(shè)置一個(gè)控制主循環(huán)的變量
done = False
#創(chuàng)建時(shí)鐘對(duì)象
clock = pygame.time.Clock()
while not done:
    # 設(shè)置游戲的fps
    clock.tick(10)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True  # 若檢測(cè)到關(guān)閉窗口,則將done置為True
    # 繪制一條寬度為 3 的紅色對(duì)角線
    pygame.draw.line(screen, (0, 255, 0), [0, 0], (500, 450), 3)
    # 繪制多條藍(lán)色的直線(連續(xù)直線,非抗鋸齒),F(xiàn)alse 表示首尾不相連
    pygame.draw.lines(screen, (0, 0, 255), False, [[0, 80], [50, 90], [200, 80], [220, 30]], 1)
    # 繪制一個(gè)灰色的矩形區(qū)域,以灰色填充區(qū)域
    pygame.draw.rect(screen, (155, 155, 155), (75, 10, 50, 20), 0)
    # 繪制一個(gè)線框?qū)挾葹?的矩形區(qū)域
    pygame.draw.rect(screen, (0, 0, 0), [150, 10, 50, 20],2)
    # 繪制一個(gè)橢圓形,其線寬為2
    pygame.draw.ellipse(screen, (255, 0, 0), (225, 10, 50, 20), 2)
    # 繪制一個(gè)實(shí)心的紅色橢圓形
    pygame.draw.ellipse(screen, (255, 0, 0), (300, 10, 50, 20))
    # 繪制一個(gè)綠色邊框(寬度為2)三角形
    pygame.draw.polygon(screen, (100, 200, 45), [[100, 100], [0, 200], [200, 200]], 2)
    # 繪制一個(gè)藍(lán)色實(shí)心的圓形,其中[60,250]表示圓心的位置,40為半徑,width默認(rèn)為0
    pygame.draw.circle(screen, (0, 0, 255), [60, 250], 40)
    # 繪制一個(gè)圓弧,其中0表示弧線的開(kāi)始位置,pi/2表示弧線的結(jié)束位置,2表示線寬
    pygame.draw.arc(screen, (255, 10, 0), (210, 75, 150, 125), 0, pi / 2, 2)
    # 刷新顯示屏幕
    pygame.display.flip()
# 點(diǎn)擊關(guān)閉,退出pygame程序
pygame.quit()

效果圖:

九.字體繪制

font模塊可以繪制字體

·pygame.font.Font(filename,size):獲取字體

·pygame.font.Font.render(text,antialias,color,background=None):顯示字體

·get_rect():獲取坐標(biāo)對(duì)象

實(shí)例:

import pygame,sys
from pygame.locals import *
 
pygame.init()
 
surface = pygame.display.set_mode((500, 400), 0, 32)
pygame.display.set_caption("文字繪制")
surface.fill((255, 255, 255))
 
# 獲取字體對(duì)象,可以獲取系統(tǒng)自帶的,也可以自定義字體
fonts = pygame.font.get_fonts()
fonts = 'fonts/ARBERKLEY.ttf'
basicFont = pygame.font.SysFont(fonts, 50)
 
# surface對(duì)象
text = basicFont.render('這是一串字符', True, (255,255,255), (0,255,0))
 
# 設(shè)置文本位置
textRect = text.get_rect()
 
textRectObj.center = (250, 200)
 
# 將渲染的surface對(duì)象更新到屏幕上
surface.blit(text,textRect)
 
# 程序主循環(huán)
while True:
 
  # 獲取事件
  for event in pygame.event.get():
    # 判斷事件是否為退出事件
    if event.type == QUIT:
      # 退出pygame
      pygame.quit()
      # 退出系統(tǒng)
      sys.exit()
 
  # 繪制屏幕內(nèi)容
  pygame.display.update()

十.音頻播放

mixer音頻模塊

·pygame.mixer.Sound(filename):播放特效音

·pygame.mixer.music.load(filename):加載背景音樂(lè)

代碼實(shí)例:

import pygame, sys
from pygame.locals import *
 
# 初始化pygame
pygame.init()
 
# 設(shè)置窗口的大小,單位為像素
screen = pygame.display.set_mode((500, 400))
 
# 設(shè)置窗口的標(biāo)題
pygame.display.set_caption('音頻播放')
 
# 設(shè)置背景
screen.fill((255, 255, 255))
 
# 加載并播放一個(gè)特效音頻文件
sound = pygame.mixer.Sound('C:/Users/myun/Music/狙擊槍.wav')
sound.play()
 
# 加載背景音樂(lè)文件
pygame.mixer.music.load('C:/Users/myun/Music/Oh The Larceny - Light That Fire.mp3')
 
# 播放背景音樂(lè),第一個(gè)參數(shù)為播放的次數(shù)(-1表示無(wú)限循環(huán)),第二個(gè)參數(shù)是設(shè)置播放的起點(diǎn)(單位為秒)
pygame.mixer.music.play(-1, 0.0)
 
# 程序主循環(huán)
while True:
    # 獲取事件
    for event in pygame.event.get():
        # 判斷事件是否為退出事件
        if event.type == QUIT:
            # 停止播放背景音樂(lè)
            pygame.mixer.music.stop()
            # 退出pygame
            pygame.quit()
            # 退出系統(tǒng)
            sys.exit()
 
    # 繪制屏幕內(nèi)容
    pygame.display.update()

總結(jié)

到此這篇關(guān)于python游戲庫(kù)pygame經(jīng)典教程的文章就介紹到這了,更多相關(guān)python游戲庫(kù)pygame內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論