激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 如何創(chuàng)建第一個(gè)Pygame程序

如何創(chuàng)建第一個(gè)Pygame程序

2022-03-03 00:01zx Python

本文主要介紹了如何創(chuàng)建第一個(gè)Pygame程序,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Pygame 作為一個(gè)入門級(jí)的游戲開(kāi)發(fā)庫(kù),其實(shí)并不難學(xué),只要掌握 Python 編程的相關(guān)知識(shí)就能很輕松地掌握它。

Pygame 語(yǔ)法簡(jiǎn)單、明了,秉持了 Python 語(yǔ)言一貫的風(fēng)格。同時(shí),它作為一個(gè)游戲開(kāi)發(fā)庫(kù)來(lái)說(shuō),具有圖形編程的基本特點(diǎn),如果您對(duì)于圖形編程從未了解過(guò),即使您有 Python 編程基礎(chǔ),也會(huì)略感迷茫。因此,在接下來(lái)的學(xué)習(xí)中會(huì)詳細(xì)介紹 Pygame 的常用模塊,以及圖形編程中的相關(guān)概念,幫助您快速掌握 Pygame 的使用。

下面是一個(gè)簡(jiǎn)單的 Pygame 程序,如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#導(dǎo)入所需的模塊
import sys
import pygame
# 使用pygame之前必須初始化
pygame.init()
# 設(shè)置主屏窗口
screen = pygame.display.set_mode((400,400))
# 設(shè)置窗口的標(biāo)題,即游戲名稱
pygame.display.set_caption('hello world')
# 引入字體類型
f = pygame.font.Font('C:/Windows/Fonts/simhei.ttf',50)
# 生成文本信息,第一個(gè)參數(shù)文本內(nèi)容;第二個(gè)參數(shù),字體是否平滑;
# 第三個(gè)參數(shù),RGB模式的字體顏色;第四個(gè)參數(shù),RGB模式字體背景顏色;
text = f.render("C語(yǔ)言中文網(wǎng)",True,(255,0,0),(0,0,0))
#獲得顯示對(duì)象的rect區(qū)域坐標(biāo)
textRect =text.get_rect()
# 設(shè)置顯示對(duì)象居中
textRect.center = (200,200)
# 將準(zhǔn)備好的文本信息,繪制到主屏幕 Screen 上。
screen.blit(text,textRect)
# 固定代碼段,實(shí)現(xiàn)點(diǎn)擊"X"號(hào)退出界面的功能,幾乎所有的pygame都會(huì)使用該段代碼
while True:
    # 循環(huán)獲取事件,監(jiān)聽(tīng)事件狀態(tài)
    for event in pygame.event.get():
        # 判斷用戶是否點(diǎn)了"X"關(guān)閉按鈕,并執(zhí)行if代碼段
        if event.type == pygame.QUIT:
            #卸載所有模塊
            pygame.quit()
            #終止程序,確保退出程序
            sys.exit()
    pygame.display.flip() #更新屏幕內(nèi)容

如果您熟悉 Python 編程的基礎(chǔ)知識(shí),那么在注釋的幫助下,應(yīng)該能很容易地理解上述代碼。假如不能也沒(méi)有關(guān)系,因?yàn)榻酉聛?lái),我們會(huì)對(duì)上述代碼進(jìn)行細(xì)致的分析。常言道:“授人以魚(yú)不如授人以漁”,分析代碼的邏輯,有助于我們理解和編寫 Pygame 程序,而至于代碼中涉及的模塊、方法等,會(huì)在后續(xù)內(nèi)容做詳細(xì)介紹。

初始化程序

在使用 Pygame 編寫程序前,要做的第一個(gè)步驟是“初始化程序”,代碼如下所示:

?
1
pygame.init()

這是整個(gè)程序中的第一句代碼,它的作用是自動(dòng)檢測(cè) Pygame 軟件包是否正常可用,并檢查電腦的硬件調(diào)用接口、基礎(chǔ)功能是否存在問(wèn)題,比如音頻、光驅(qū)、聲卡驅(qū)動(dòng)等設(shè)備。同時(shí),它會(huì)完成 Pygame 中所有模塊的初始化操作,比如 display(顯示模塊)、font(字體模塊)、mixer(聲音控制模塊)、cursors(光標(biāo)控制模塊)等。
由此可見(jiàn),初始化程序的重要性,因此上述代碼,在編寫程序時(shí)候千萬(wàn)不能“漏掉”。

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

想要掌握 Pygame 的編程邏輯,首先就要理解 surface 對(duì)象的概念,它是 Pygame 中最重要的組成部分。

Surface 翻譯為表面、表層、外觀,在 Pygame 中,您可以把 surface 對(duì)象理解成一張“白紙”,通過(guò)這張紙可以做許多的事情,比如在紙上添加文字、填充顏色、添加圖片以及繪制任意形狀的圖形等。既然是“紙”就有規(guī)格尺寸,Pygame 允許您創(chuàng)建任意大小的紙。

那么我們應(yīng)該如何創(chuàng)建 Surface 對(duì)象呢?Pygame 提供了多種創(chuàng)建 Surface 對(duì)象的方法,這里先介紹以下幾種方法。

上述示例,使用如下方式創(chuàng)建了一個(gè) surface 對(duì)象:

?
1
2
#也叫screen對(duì)象,本質(zhì)上是一個(gè)Surface,大小400*400
screen = pygame.display.set_mode((400,400))

screen 的本質(zhì)上就是一個(gè) Surface 對(duì)象,它是游戲的主窗口,也就是整個(gè)游戲中尺寸最大的“紙”,任何其他的 Surface 對(duì)象都需要附著在這張最大的“紙”上,比如創(chuàng)建一個(gè)包含文本的 Surface 對(duì)象,通過(guò)以下方法將它繪制在主屏幕上:

?
1
2
3
4
#創(chuàng)建一個(gè)包含文字的Surface對(duì)象
text = f.render("C語(yǔ)言中文網(wǎng)",True,(255,0,0),(0,0,0))
#通過(guò)blit方法將其繪制在主屏幕上,這里的textRect表示位置坐標(biāo)
screen.blit(text,textRect)

如果想創(chuàng)建一個(gè)包含圖像的 surface 對(duì)象可以使用如下方法:

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

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

游戲,在我們?nèi)粘I钪薪?jīng)常接觸到,無(wú)論是手游、還是電腦端游戲,已經(jīng)成了信息社會(huì)中,不可或缺的一部分。

游戲大致來(lái)講是由動(dòng)畫(huà)和人機(jī)交互的體驗(yàn)兩部分構(gòu)成,其中動(dòng)畫(huà)則是由一系列連續(xù)靜止的圖片,經(jīng)過(guò)一定頻率的刷新構(gòu)成的,這個(gè)頻率被稱為 FPS,如果頻率值越大則畫(huà)面越流暢;如果頻率值越小則畫(huà)面會(huì)出現(xiàn)卡頓的感,在游戲過(guò)程中一般人能接受的最低 FPS 約為 30Hz,如果想要畫(huà)面流暢則 FPS 要大于 60 Hz。
FPS 越高,細(xì)節(jié)越好,體驗(yàn)也越好,但是文件容量也越高

動(dòng)畫(huà)保證了玩家的視覺(jué)體驗(yàn),而人機(jī)交互則是操作上的體驗(yàn)。通過(guò)移動(dòng)和點(diǎn)擊鼠標(biāo)、按下鍵盤上的技能鍵,或是滑動(dòng)手機(jī)屏幕等操作來(lái)實(shí)現(xiàn)人機(jī)交互,這些與游戲程序交互的操作被稱為事件(Event)。
如果您接觸過(guò) JavaScript,那么您對(duì)于“事件”這一名詞,一定不會(huì)陌生。

Pygame 作為一個(gè)游戲開(kāi)發(fā)庫(kù),同樣具有設(shè)置和監(jiān)聽(tīng)事件的功能。它提供了一個(gè) enevt 事件模塊,這個(gè)模塊中包含了所有常用到游戲事件。下面是退出游戲的代碼示例(其他事件類型,后續(xù)會(huì)做介紹):

?
1
2
3
4
5
6
7
# 循環(huán)獲取事件,監(jiān)聽(tīng)事件狀態(tài),使用get()獲取事件
for event in pygame.event.get():
    # 判斷事件類型,用戶是否點(diǎn)了"X"關(guān)閉按鈕
    # pygame.QUIT 指點(diǎn)擊右上角窗口的"X"號(hào)
    if event.type == pygame.QUIT:
        #點(diǎn)擊后,卸載所有pygame模塊
        pygame.quit()

游戲循環(huán)

當(dāng)打我們游戲時(shí)可能會(huì)觸發(fā)游戲中的各種事件,比如鼠標(biāo)事件、鍵盤按鍵事件、攝像拍照事件等等,因此游戲程序需要一直循環(huán)監(jiān)聽(tīng)玩家的操作,只有當(dāng)用戶點(diǎn)擊了游戲“關(guān)閉”按鈕時(shí),監(jiān)聽(tīng)才會(huì)結(jié)束。如果想要達(dá)到“循環(huán)監(jiān)聽(tīng)”目的,此時(shí)就需要設(shè)置一個(gè)游戲循環(huán)(Game Loop)也稱為游戲的主循環(huán),這樣才能保證人機(jī)交互的體驗(yàn)感。代碼示例如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
#游戲主循環(huán)(游戲循環(huán))
while True:
    # 循環(huán)獲取事件,監(jiān)聽(tīng)事件
    for event in pygame.event.get():
        # 判斷用戶是否點(diǎn)了關(guān)閉按鈕
        if event.type == pygame.QUIT:
            # 當(dāng)用戶關(guān)閉游戲窗口時(shí)執(zhí)行以下操作
            # 這里必須調(diào)用quit()方法,退出游戲
            pygame.quit()
            #終止系統(tǒng)
            sys.exit()
    #更新并繪制屏幕內(nèi)容
    pygame.display.flip()

游戲主循環(huán)是每個(gè) Pygame 游戲程序中必不可少的一部分,它主要承擔(dān)著以下三個(gè)重要任務(wù):

  • 處理游戲事件
  • 更新游戲狀態(tài)
  • 把更新后的游戲狀態(tài)繪制到屏幕上

如何創(chuàng)建第一個(gè)Pygame程序

圖2:主循環(huán)示意圖

游戲畫(huà)面和游戲操作狀態(tài)會(huì)因?yàn)閯?dòng)畫(huà)效果和玩家的操作而改變,因此需要以循環(huán)的方式實(shí)時(shí)地更新主屏幕(screen)的顯示內(nèi)容。把下列代碼放入游戲主循環(huán)中即可實(shí)現(xiàn)實(shí)時(shí)更新和繪制屏幕內(nèi)容,如下所示:

?
1
2
#刷新界面顯示
pygame.display.flip()

除了上述方法外,Pygame 還提供了另一個(gè)方法。如下所示:

?
1
pygame.display.update()

這兩個(gè)方法的主要區(qū)別是:后者可以根據(jù)選定的區(qū)域來(lái)更新部分內(nèi)容,而前者則是更新整個(gè)待顯示的內(nèi)容。如果后者沒(méi)有提供區(qū)域位置參數(shù)時(shí),其作用和 display.flip() 相同。

通過(guò)上述學(xué)習(xí),我們對(duì) Pygame 程序有了基本的認(rèn)識(shí)。下面對(duì) Pygame 模塊中的方法、屬性做更加細(xì)致的講解。

到此這篇關(guān)于如何創(chuàng)建第一個(gè)Pygame程序的文章就介紹到這了,更多相關(guān)創(chuàng)建Pygame程序內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:http://c.biancheng.net/pygame/the-first-programm.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: av在线日韩| 国产精彩视频在线 | 亚洲国产一区二区三区 | 91 在线视频观看 | 91福利影视 | 看免费黄色大片 | 国产精品区一区二区三区 | 91av久久| 成人羞羞视频在线观看 | 中文字幕国产日韩 | 欧美日韩免费看 | 国产伦精品一区二区三区 | 毛片在线看免费 | 欧美成人福利 | 欧美性猛交xxx乱大交3蜜桃 | 日本欧美中文字幕 | 日韩在线视频观看免费 | 国产精品午夜未成人免费观看 | 一级做a爰性色毛片免费 | 一级全毛片 | 国产超碰人人爽人人做人人爱 | 久久精品一区二区三 | 成人免费区 | 国产电影精品久久 | 天堂热| 中文字幕亚洲视频 | 99成人在线 | 欧美乱淫 | 一区二区三区四区在线观看视频 | 久久日本 | 91精品国产91久久久久久 | 日本黄色片免费播放 | 鲁丝一区二区三区不属 | 美女视频网站黄色 | 亚洲精品a级 | 一级看片免费视频 | 香蕉久草视频 | 欧美一级棒 | 中文字幕一区二区三区久久 | 国产黄色一级大片 | 主播粉嫩国产在线精品 |