pygame--窗口操作


pygame.display.list_modes()    #返回本機所支持的窗口大小--列表

[(1920, 1080), (1680, 1050), (1600, 900), (1440, 900), (1400, 1050), (1366, 768), (1360, 768), (1280, 1024), (1280, 960), (1280, 800), (1280, 768), (1280, 720), (1280, 600), (1152, 864), (1024, 768), (800, 600), (640, 480), (640, 400), (512, 384), (400, 300), (320, 240), (320, 200)]

練習:通過F1鍵在滿屏和窗口之間進行切換

import pygame

pygame.init()  #游戲初始化的設置,他應該在游戲代碼編寫的最前邊
screen = pygame.display.set_mode((960, 600))  #創建窗口以進行顯示;screen定義了一個游戲的屏幕,后續游戲場景中的游戲對象,都要在這個screen上繪制
#參數一:640和480是寬度和高度
#參數二:標志位:具體意思見下表,如果不用什么特性,就指定0
#              0             用戶設置的窗口大小
#
pygame.FULLSCREEN 創建一個全屏窗口 # pygame.DOUBLEBUF 創建一個“雙緩沖“窗口,建議在HWSURFACE或OPENGL時使用 # pygame.HWSURFACE 創建一個硬件加速窗口,必須和FULLSCREEN同時使用 # pygame.OPENGL 創建一個OPENGL渲染的窗口 # pygame.RESIZABLE 創建一個可以改變大小的窗口 # pygame.NOFRAME 創建一個沒有邊框的窗口 #參數三:色深 pygame.display.set_caption("窗口大小變換") #設置當前游戲窗口的標題 fullscreen = False background =pygame.image.load('2.jpg') #加載圖片 while True: for event in pygame.event.get(): #pygame.event.get() 游戲中的事件 if event.type == pygame.QUIT: #如果事件類型是退出 exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_F1: fullscreen = not fullscreen if fullscreen: screen = pygame.display.set_mode((960, 600), pygame.FULLSCREEN) else: screen = pygame.display.set_mode((960, 600), 0) screen.blit(background, (0, 0)) #把圖片加到窗口 pygame.display.update() #更新窗口

 

import pygame

pygame.init()
SCREEN_SIZE = (640, 480)
screen = pygame.display.set_mode(SCREEN_SIZE,pygame.RESIZABLE)

pygame.display.set_caption("窗口大小變換")
fullscreen = False
background =pygame.image.load('2.jpg')
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
        if event.type == pygame.VIDEORESIZE:   #如果窗口大小發生了變化
            SCREEN_SIZE=event.size   #返回當前窗口大小--元組(寬,高)
            print(event.size)
            screen = pygame.display.set_mode(SCREEN_SIZE, pygame.RESIZABLE)


            pass
    screen.blit(background, (0, 0))
    pygame.display.update()

 

如果你想創建一個硬件顯示(surface會存放在顯存里,從而有着更高的速度),但必須和全屏一起用:

screen = pygame.display.set_mode(SCREEN, HWSURFACE | FULLSCREEN) 

 當然你完全可以把雙緩沖(更快)DOUBLEBUF也加上,這就是一個很nice的游戲顯示了,不過記得你要使用pygame.display.flip()來刷新顯示。pygame.display.update()是將數據畫到前面顯示,而這個是交替顯示的意思

稍微說一下雙緩沖的意思,可以做一個比喻:我的任務就是出黑板報,如果只有一塊黑板,那我得不停的寫,全部寫完了稍微Show一下就要擦掉重寫,這樣一來別人看的基本都是我在寫黑板報的過程,看到的都是不完整的黑板報;如果我有兩塊黑板,那么可以掛一塊給別人看,我自己在底下寫另一塊,寫好了把原來的換下來換上新的,這樣一來別人基本總是看到完整的內容了。雙緩沖就是這樣維護兩個顯示區域,快速的往屏幕上換內容,而不是每次都慢慢地重畫。

還有OPENGL模式,這是一個得到廣泛應用的3D加速顯示模式。不過一旦使用了這個模式,pygame中的2D圖像函數就不能使用了

 

screen.fill((255,255,255))  #用指定顏色填充窗口

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM