最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年11月17日 15:17:57   投稿:zx  
本文主要介紹了如何創(chuàng)建第一個Pygame程序,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

Pygame 作為一個入門級的游戲開發(fā)庫,其實并不難學,只要掌握 Python 編程的相關知識就能很輕松地掌握它。

Pygame 語法簡單、明了,秉持了 Python 語言一貫的風格。同時,它作為一個游戲開發(fā)庫來說,具有圖形編程的基本特點,如果您對于圖形編程從未了解過,即使您有 Python 編程基礎,也會略感迷茫。因此,在接下來的學習中會詳細介紹 Pygame 的常用模塊,以及圖形編程中的相關概念,幫助您快速掌握 Pygame 的使用。

下面是一個簡單的 Pygame 程序,如下所示:

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

如果您熟悉 Python 編程的基礎知識,那么在注釋的幫助下,應該能很容易地理解上述代碼。假如不能也沒有關系,因為接下來,我們會對上述代碼進行細致的分析。常言道:“授人以魚不如授人以漁”,分析代碼的邏輯,有助于我們理解和編寫 Pygame 程序,而至于代碼中涉及的模塊、方法等,會在后續(xù)內容做詳細介紹。

初始化程序

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

pygame.init()

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

創(chuàng)建Surface對象

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

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

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

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

#也叫screen對象,本質上是一個Surface,大小400*400
screen = pygame.display.set_mode((400,400))

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

#創(chuàng)建一個包含文字的Surface對象
text = f.render("C語言中文網(wǎng)",True,(255,0,0),(0,0,0))
#通過blit方法將其繪制在主屏幕上,這里的textRect表示位置坐標
screen.blit(text,textRect)

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

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

事件監(jiān)聽

游戲,在我們日常生活中經(jīng)常接觸到,無論是手游、還是電腦端游戲,已經(jīng)成了信息社會中,不可或缺的一部分。

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

動畫保證了玩家的視覺體驗,而人機交互則是操作上的體驗。通過移動和點擊鼠標、按下鍵盤上的技能鍵,或是滑動手機屏幕等操作來實現(xiàn)人機交互,這些與游戲程序交互的操作被稱為事件(Event)。
如果您接觸過 JavaScript,那么您對于“事件”這一名詞,一定不會陌生。

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

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

游戲循環(huán)

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

#游戲主循環(huán)(游戲循環(huán))
while True:
    # 循環(huán)獲取事件,監(jiān)聽事件
    for event in pygame.event.get():
        # 判斷用戶是否點了關閉按鈕
        if event.type == pygame.QUIT:
            # 當用戶關閉游戲窗口時執(zhí)行以下操作
            # 這里必須調用quit()方法,退出游戲
            pygame.quit()
            #終止系統(tǒng)
            sys.exit()
    #更新并繪制屏幕內容
    pygame.display.flip() 

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

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

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

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

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

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

pygame.display.update() 

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

通過上述學習,我們對 Pygame 程序有了基本的認識。下面對 Pygame 模塊中的方法、屬性做更加細致的講解。

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

相關文章

  • OpenAI的Whisper模型進行語音識別使用詳解

    OpenAI的Whisper模型進行語音識別使用詳解

    這篇文章主要介紹了OpenAI的Whisper模型進行語音識別使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Python操作mongodb數(shù)據(jù)庫的方法詳解

    Python操作mongodb數(shù)據(jù)庫的方法詳解

    這篇文章主要介紹了Python操作mongodb數(shù)據(jù)庫的方法,結合實例形式詳細分析了Python下載、安裝pymongo及操作MongoDB數(shù)據(jù)庫相關實現(xiàn)技巧,需要的朋友可以參考下
    2018-12-12
  • Python實現(xiàn)身份證號碼驗證的示例代碼

    Python實現(xiàn)身份證號碼驗證的示例代碼

    本文主要介紹了Python實現(xiàn)身份證號碼驗證的示例代碼,當用戶輸入身份證號,按下檢查按鈕,即可判斷身份證號是否正確,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • python實現(xiàn)壁紙批量下載代碼實例

    python實現(xiàn)壁紙批量下載代碼實例

    本篇文章通過代碼實例給大家分享了用python實現(xiàn)壁紙批量下載這個功能,有興趣的朋友參考下吧。
    2018-01-01
  • python中終止協(xié)程和異常處理方式

    python中終止協(xié)程和異常處理方式

    這篇文章主要介紹了python中終止協(xié)程和異常處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 利用django-suit模板添加自定義的菜單、頁面及設置訪問權限

    利用django-suit模板添加自定義的菜單、頁面及設置訪問權限

    這篇文章主要給大家介紹了關于利用django-suit模板添加自定義的菜單、頁面及設置訪問權限的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起看看吧
    2018-07-07
  • python人工智能tensorflow函數(shù)tf.get_collection使用方法

    python人工智能tensorflow函數(shù)tf.get_collection使用方法

    這篇文章主要為大家介紹了python人工智能tensorflow函數(shù)tf.get_collection使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Python Flask框架實現(xiàn)簡單加法工具過程解析

    Python Flask框架實現(xiàn)簡單加法工具過程解析

    這篇文章主要介紹了Python Flask框架實現(xiàn)簡單加法工具過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • pytorch如何自定義forward和backward函數(shù)

    pytorch如何自定義forward和backward函數(shù)

    PyTorch自動求導功能強大,但在特定情況下需要用戶自行定義backward函數(shù),通過實例解釋了保存變量、計算梯度、鏈式法則等核心概念,并展示了如何通過自定義函數(shù)集成到網(wǎng)絡中以及如何正確返回梯度,此外,還討論了多輸出情況下的梯度傳遞
    2024-10-10
  • python return邏輯判斷表達式實現(xiàn)解析

    python return邏輯判斷表達式實現(xiàn)解析

    這篇文章主要介紹了python return邏輯判斷表達式實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12

最新評論

台南县| 双桥区| 新平| 三亚市| 福泉市| 青岛市| 阜康市| 淮滨县| 永宁县| 威海市| 寻甸| 台南市| 兴仁县| 新安县| 互助| 蒙阴县| 永新县| 富蕴县| 阿克苏市| 新巴尔虎左旗| 郎溪县| 措勤县| 晋江市| 荣昌县| 新郑市| 永年县| 阿拉尔市| 凤翔县| 五指山市| 江门市| 双城市| 且末县| 隆子县| 汾西县| 台山市| 定兴县| 宾川县| 永年县| 宜宾县| 铁岭县| 高密市|