pygame.display.flip()和pygame.display.update()的區(qū)別及說明
pygame.display.flip()和pygame.display.update()區(qū)別
主要有兩點(diǎn)區(qū)別
一是:
- pygame.display.flip() 更新整個(gè)待顯示的Surface對象到屏幕上
- pygame.display.update() 更新部分內(nèi)容顯示到屏幕上,如果沒有參數(shù),則與flip功能相同(上一條)
二是:
- 當(dāng)使用OpenGL的時(shí)候,不能使用pygame.display.update()來更新窗口,需要使用pygame.display.flip() 來更新
pygame Display顯示模塊詳解
Pygame 使用pygame.display顯示模塊中的方法創(chuàng)建游戲的主窗口:
screen = pygame.display.set_mode(size=(),flags=0)
上述函數(shù)有兩個(gè)參數(shù)常用參數(shù):
- size:元組參數(shù),用來設(shè)置主窗口的大小
- flags:功能標(biāo)志位,表示創(chuàng)建的主窗口樣式,比如創(chuàng)建全屏窗口、無邊框窗口等,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è)雙緩沖區(qū)窗口,建議在HWSURFACE 或者 OPENGL 時(shí)使用。pygame.NOFRAME
創(chuàng)建一個(gè)沒有邊框的窗口。
體驗(yàn)過電腦游戲的朋友們都知道,當(dāng)運(yùn)行程序后會在電腦桌面上出現(xiàn)一個(gè)游戲的主窗口,這個(gè)主窗口的本質(zhì)是一個(gè) surface 對象,把理解為畫布、畫板、白紙?jiān)诤线m不過了,它相當(dāng)于一個(gè)載體,用于承載一切游戲所用到的元素。
假如您需要將一段文本方放置到主窗口中,那么您需要先創(chuàng)建一個(gè)包含文本的 surface 對象,之后再將它附加到主窗口上。
簡單的理解,就是將一張圖 A 粘貼到另一張圖 B 上。
主窗口(screen)相當(dāng)于游戲程序中尺寸最大的 Surface 對象,在這個(gè)最大的“畫布”中,我們還可以添加其他“小”的 Surface 對象,這些對象以矩形的形式存在于主窗口中,它們共同組成了一個(gè)游戲程序。
通過下列方法可以將一個(gè) Surface 對象粘貼至主窗口上:
scrren.blit(source, dest, area=None, special_flags = 0)
下面對上述參數(shù)做簡單的介紹:
source
:表示要粘貼的 Surface 對象。dest
:主窗口中的一個(gè)標(biāo)識的坐標(biāo)位置,可以接受一個(gè) (x,y) 元組,或者 (x,y,width,height) 元組,也可以是一個(gè) Rect 對象;area
:接受一個(gè) Rect 對象,默認(rèn)為 None,如果提供該參數(shù)則相當(dāng)于摳圖操作,即在屏幕的指定區(qū)域顯示想要的內(nèi)容;special_flags
:可選參數(shù),它是 Pygame.1.8 版本新增的功能,用于指定對應(yīng)位置顏色的混合方式,參數(shù)值有 BLEND_RGBA_ADD、BLEND_SUB 等。如果不提供該參數(shù)的情況下,默認(rèn)使用 source 的顏色覆蓋 screen 的顏色。
除了創(chuàng)建游戲的主窗口之外,display 模塊還提供了許多的和“顯示”相關(guān)的方法,比如設(shè)置游戲窗口的名稱,如下表所示
import sys import pygame #使用pygame之前必須初始化 pygame.init() #設(shè)置主屏窗口 screen = pygame.display.set_mode((400,400)) #填充主窗口的背景顏色,參數(shù)值RGB(顏色元組) screen.fill((156,156,156)) #設(shè)置窗口標(biāo)題 pygame.display.set_caption('c語言中文網(wǎng)') # 如果沒有下列主循環(huán)代碼,運(yùn)行結(jié)果會一閃而過 while True: # 循環(huán)獲取事件,監(jiān)聽事件 for event in pygame.event.get(): # 判斷用戶是否點(diǎn)了關(guān)閉按鈕 if event.type == pygame.QUIT: #卸載所有模塊 pygame.quit() #終止程序 sys.exit() #更新屏幕內(nèi)容 pygame.display.flip()
pygame.display 模塊還提供了一些和“顯示”相關(guān)的其他方法,如下表所示:
方法名稱 說明
pygame.display.get_surface()
獲取當(dāng)前顯示的 Surface 對象。pygame.display.flip()
更新整個(gè)待顯示的 Surface 對象到屏幕上。pygame.display.update()
更新部分軟件界面顯示。pygame.display.Info()
產(chǎn)生一個(gè) VideoInfo 對象,包含了顯示界面的相關(guān)信息。pygame.display.set_icon()
設(shè)置左上角的游戲圖標(biāo),圖標(biāo)尺寸大小為 32*32。pygame.display.iconify()
將顯示的主窗口即 Surface 對象最小化,或者隱藏。pygame.display.get_active()
當(dāng)前顯示界面顯示在屏幕上時(shí)返回 True,如果窗口被隱藏和最小化則返回 False。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python 請求服務(wù)器的實(shí)現(xiàn)代碼(http請求和https請求)
本篇文章主要介紹了python 請求服務(wù)器的實(shí)現(xiàn)代碼(http請求和https請求),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05Python EOL while scanning string literal問題解決方法
這篇文章主要介紹了Python EOL while scanning string literal問題解決方法,本文總結(jié)出是數(shù)據(jù)庫數(shù)據(jù)出現(xiàn)問題導(dǎo)致這個(gè)問題,需要的朋友可以參考下2015-04-04Python代理抓取并驗(yàn)證使用多線程實(shí)現(xiàn)
這里沒有使用隊(duì)列只是采用多線程分發(fā)對代理量不大的網(wǎng)頁還行但是幾百幾千性能就很差了,感興趣的朋友可以了解下,希望對你有所幫助2013-05-05Python爬蟲實(shí)現(xiàn)HTTP網(wǎng)絡(luò)請求多種實(shí)現(xiàn)方式
這篇文章主要介紹了Python爬蟲實(shí)現(xiàn)HTTP網(wǎng)絡(luò)請求多種實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06Python中統(tǒng)計(jì)函數(shù)運(yùn)行耗時(shí)的方法
這篇文章主要介紹了Python中統(tǒng)計(jì)函數(shù)運(yùn)行耗時(shí)的方法,涉及Python時(shí)間操作的相關(guān)技巧,非常簡單實(shí)用,需要的朋友可以參考下2015-05-05Python實(shí)現(xiàn)數(shù)據(jù)的序列化操作詳解
在日常開發(fā)中,對數(shù)據(jù)進(jìn)行序列化和反序列化是常見的數(shù)據(jù)操作,Python提供了兩個(gè)模塊方便開發(fā)者實(shí)現(xiàn)數(shù)據(jù)的序列化操作,即?json?模塊和?pickle?模塊。本文就為大家詳細(xì)講解這兩個(gè)模塊的使用,需要的可以參考一下2022-07-07