溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PyGame之怎么打開一個窗口

發(fā)布時間:2021-10-25 16:38:38 來源:億速云 閱讀:872 作者:iii 欄目:編程語言

這篇文章主要介紹“PyGame之怎么打開一個窗口”,在日常操作中,相信很多人在PyGame之怎么打開一個窗口問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PyGame之怎么打開一個窗口”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

導(dǎo)入和運(yùn)行pygame

    你可以創(chuàng)建一個python文件,比如mygame1.py。然后在文件開頭寫入

import pygame

pygame.init()

好的,運(yùn)行它。沒有變化?那就對了,現(xiàn)在也就是控制臺有幾行輸出。

Screen、Surface和Background

    pygame運(yùn)行的時候顯示的最大的那個窗口就是screen,比如你運(yùn)行LOL,哪個窗口最大應(yīng)該很好確定。通過pygame,我們可以在screen中創(chuàng)建和控制很多長方形的區(qū)域,這些區(qū)域叫做surface。我們會用一個surface作為背景,這個surface就是background。接下來我們創(chuàng)建一個background并把它添加到screen中。

screen = pygame.display.set_mode((640,480))     # 設(shè)置窗口的大小
background = pygame.Surface(screen.get_size())  # 創(chuàng)建一個surface,名字叫background,大小和screen一樣
background.fill((255,255,255))                  # 用白色填充background;255,255,255是RGB的白色
background = background.convert()               # 對background進(jìn)行convert(),可以加快后面添加時速度

把background添加(blit)到screen

    運(yùn)行你的程序。什么?只看到一個黑窗口一閃而過?那又對了~

    到目前為止,我們只是在內(nèi)存中創(chuàng)建了background,還沒有把background添加到screen中,所以我們是看不到白背景的。

screen.blit(background, (0, 0))    # 把background添加到screen中,(0, 0)表示把background的左上角放到screen的左上角

    在很多游戲框架中,當(dāng)然pygame也是,坐標(biāo)原點在窗口左上角的頂點處,就是這個樣子

PyGame之怎么打開一個窗口

主循環(huán)和事件處理

    主循環(huán)就是一個近乎無限的循環(huán),只有你要退出游戲時主循環(huán)才停止。

mainloop = True

while mainloop:
    for event in pygame.event.get():         # 這一部分就是事件處理
        if event.type == pygame.QUIT:        # 如果按下右上角的叉叉
            mainloop = False                 # 退出主循環(huán)
        elif event.type == pygame.KEYDOWN:   # 如果按下了鍵盤
            if event.key == pygame.K_ESCAPE: # 而且按下的還是ESC鍵
                mainloop = False             # 退出主循環(huán)

    # 在這里做一些游戲相關(guān)的運(yùn)算,這里暫時省略

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

Ok,再次運(yùn)行你的游戲~ 這時你將得到一個白色的窗口。下面我們將在窗口里顯示一些東西。

顯示幀率

幀率就是游戲每秒運(yùn)行的幀數(shù),簡稱FPS,玩過游戲你一定知道FPS。幀率越高,游戲就越流暢。我們可以這樣獲得幀率

clock = pygame.time.Clock()     # 創(chuàng)建clock對象

clock.get_fps()                 # 獲得幀率

現(xiàn)在我們把顯示幀率的邏輯加入到主循環(huán)中

clock = pygame.time.Clock()     # 創(chuàng)建clock對象 
FPS = 30                        # 定義幀率的上限,就是幀率的最大值

mainloop = True

while mainloop:
    clock.tick(FPS)                          # 設(shè)置最大幀率 
    
    for event in pygame.event.get():         # 這一部分就是事件處理
        if event.type == pygame.QUIT:        # 如果按下右上角的叉叉
            mainloop = False                 # 退出主循環(huán)
        elif event.type == pygame.KEYDOWN:   # 如果按下了鍵盤
            if event.key == pygame.K_ESCAPE: # 而且按下的還是ESC鍵
                mainloop = False             # 退出主循環(huán)

    # 在這里做一些游戲相關(guān)的運(yùn)算,這里暫時省略
    text = "FPS: {0:.2f}".format(clock.get_fps())  
    pygame.display.set_caption(text)
    
    pygame.display.flip()                    # 刷新顯示

運(yùn)行你的代碼~ 幀率可以顯示了

PyGame之怎么打開一個窗口

退出pygame

    程序結(jié)束時,需要退出pygame以釋放申請的計算資源。

pygame.quit()

完整的代碼

import pygame

pygame.init()

screen = pygame.display.set_mode((640,480))     # 設(shè)置窗口的大小
background = pygame.Surface(screen.get_size())  # 創(chuàng)建一個surface,名字叫background,大小和screen一樣
background.fill((255,255,255))                  # 用白色填充background;255,255,255是RGB的白色
background = background.convert()               # 對background進(jìn)行convert(),可以加快后面添加時速度
screen.blit(background, (0, 0))

clock = pygame.time.Clock()     # 創(chuàng)建clock對象 
FPS = 30                        # 定義幀率的上限,就是幀率的最大值

mainloop = True

while mainloop:
    clock.tick(FPS)                          # 設(shè)置最大幀率 
    
    for event in pygame.event.get():         # 這一部分就是事件處理
        if event.type == pygame.QUIT:        # 如果按下右上角的叉叉
            mainloop = False                 # 退出主循環(huán)
        elif event.type == pygame.KEYDOWN:   # 如果按下了鍵盤
            if event.key == pygame.K_ESCAPE: # 而且按下的還是ESC鍵
                mainloop = False             # 退出主循環(huán)

    # 在這里做一些游戲相關(guān)的運(yùn)算,這里暫時省略
    text = "FPS: {0:.2f}".format(clock.get_fps())  
    pygame.display.set_caption(text)
    
    pygame.display.flip()                    # 刷新顯示

pygame.quit()

到此,關(guān)于“PyGame之怎么打開一個窗口”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI