資訊內(nèi)容
pygame事件處理游戲界面進(jìn)行全屏切換
我們?cè)诘谝粋€(gè)程序里使用了如下的語句
screen = pygame.display.set_mode((640, 480), 0, 32)
也講述了各個(gè)參數(shù)的意思,當(dāng)我們把第二個(gè)參數(shù)設(shè)置為FULLSCREEN時(shí),就能得到一個(gè)全屏窗口了
screen = pygame.display.set_mode((640, 480), FULLSCREEN, 32)
注意:如果你的程序有什么問題,很可能進(jìn)入了全屏模式就不太容易退出來了,所以最好先用窗口模式調(diào)試好,再改為全屏模式。
看一下這個(gè)示例:
background_image_filename = './img/Spaceship.png' import pygame from pygame.locals import * from sys import exit pygame.init() screen = pygame.display.set_mode((640, 480), 0, 32) background = pygame.image.load(background_image_filename).convert() Fullscreen = False while True: for event in pygame.event.get(): if event.type == QUIT: exit() if event.type == KEYDOWN: if event.key == K_f: Fullscreen = not Fullscreen if Fullscreen: screen = pygame.display.set_mode((640, 480), FULLSCREEN, 32) else: screen = pygame.display.set_mode((640, 480), 0, 32) screen.blit(background, (0,0)) pygame.display.update()
運(yùn)行這個(gè)程序,默認(rèn)還是窗口的,按“f ”,顯示模式會(huì)在窗口和全屏之間切換。
事件(Event) 基本上說是一個(gè)用戶操作,如按鍵、點(diǎn)擊、鼠標(biāo)移動(dòng)等等,或者是一些提示信息,如系統(tǒng)生成的通知。
事件檢索
上面程序中,使用了pygame.event.get()來處理所有的事件,這好像打開大門讓所有的人進(jìn)入。然后根據(jù)需要進(jìn)行篩選,過濾,根據(jù)不同的事件類型進(jìn)行處理。
在上面的程序中如果是用戶按下關(guān)閉按鈕(QUIT),那么執(zhí)行推出;如果是鍵盤按鍵按下事件(KEYDOWN),判斷是否是f鍵,然后進(jìn)行全屏切換。
下表是一個(gè)常用事件集:
事件 | 產(chǎn)生途徑 | 參數(shù) |
---|---|---|
QUIT | 用戶按下關(guān)閉按鈕 | none |
ATIVEEVENT | Pygame被激活或者隱藏 | gain, state |
KEYDOWN | 鍵盤被按下 | unicode, key, mod |
KEYUP | 鍵盤被放開 | key, mod |
MOUSEMOTION | 鼠標(biāo)移動(dòng) | pos, rel, buttons |
MOUSEBUTTONDOWN | 鼠標(biāo)按下 | pos, button |
MOUSEBUTTONUP | 鼠標(biāo)放開 | pos, button |
JOYAXISMOTION | 游戲手柄(Joystick or pad)移動(dòng) | joy, axis, value |
JOYBALLMOTION | 游戲球(Joy ball)?移動(dòng) | joy, axis, value |
JOYHATMOTION | 游戲手柄(Joystick)?移動(dòng) | joy, axis, value |
JOYBUTTONDOWN | 游戲手柄按下 | joy, button |
JOYBUTTONUP | 游戲手柄放開 | joy, button |
VIDEORESIZE | Pygame窗口縮放 | size, w, h |
VIDEOEXPOSE | Pygame窗口部分公開(expose)? | none |
USEREVENT | 觸發(fā)了一個(gè)用戶事件 |
code |
本站部分內(nèi)容轉(zhuǎn)載自網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系管理員及時(shí)刪除。
