事件(Event)是Pygame 的重要模組之一,它是建立整個遊戲程式的核心,例如常用的滑鼠點擊、鍵盤敲擊、遊戲視窗移動、調整視窗大小、觸發特定的情節、退出遊戲等,這些都可以看做是「事件」。
Pygame 定義了一個專門用來處理事件的結構,即事件佇列,該結構遵循遵循佇列「先到先處理」的基本原則,透過事件佇列,我們可以有順序的、逐一的處理使用者的操作(觸發事件)。下述表格列出了Pygame 中常用的遊戲事件:
#名稱 | ##說明|
---|---|
使用者按下視窗的關閉按鈕 |
|
Pygame被啟動或隱藏 |
|
#鍵盤按下 |
|
鍵盤放開 |
|
滑鼠移動 |
|
滑鼠按下 |
|
##滑鼠放開 |
|
遊戲手把(Joystick or pad) 移動 |
##JOYBALLMOTION |
#遊戲球(Joy ball) 移動
|
JOYHATMOTION |
遊戲手把(Joystick) 移動
|
#JOYBUTTONDOWN |
遊戲手把按下
|
JOYBUTTONUP |
遊戲手把放開
|
VIDEORESIZE |
Pygame視窗縮放
|
VIDEOEXPOSE |
# Pygame視窗部分公開(expose)
|
USEREVENT |
觸發一個使用者事件
|
事件處理方法名稱
從事件佇列中取得事件,並從佇列中刪除該事件
|
##pygame.event.wait() | |||||||||||||||||||||||||||||||||||
|
pygame.event.set_blocked() | |||||||||||||||||||||||||||||||||||
|
pygame.event.set_allowed() | |||||||||||||||||||||||||||||||||||
|
pygame.event.pump() | |||||||||||||||||||||||||||||||||||
|
pygame.event.poll() | |||||||||||||||||||||||||||||||||||
|
pygame.event.peek() | |||||||||||||||||||||||||||||||||||
|
pygame.event.clear() | |||||||||||||||||||||||||||||||||||
|
pygame.event.get_blocked() | |||||||||||||||||||||||||||||||||||
|
pygame.event.post() | |||||||||||||||||||||||||||||||||||
|
#pygame.event.Event() | |||||||||||||||||||||||||||||||||||
|
說明 | |
---|---|
K_BACKSPACE
|
|
|
|
|
|
|
|
|
K_TAB |
製表鍵(Tab)
|
K_CLEAR |
|
|
|
清除鍵(Clear) |
K_RETURN |
#Enter鍵(Enter) |
|
|
|
|
# #K_PAUSE |
暫停鍵(Pause) |
#K_ESCAPE | ##退出鍵(Escape)|
K_SPACE
| 空白鍵(Space)|
K_0...K_9
| 0…9|
K_a...Kz
| a…z|
K_DELETE
| 刪除鍵(delete)
K_DOWN#########################K_DOWN###################向下箭頭(down arrow)###############K_RIGHT##########向右箭頭(right arrow)############ ###K_LEFT#########向左箭頭(left arrow)################KMOD_ALT#########同時按下Alt鍵###############下面透過「圖片移動」範例來了解鍵盤事件的處理過程,如下所示:###K_F1...K_F15
F1…F15#K_UP
向上箭頭(up arrow)
import pygame import sys # 初始化pygame pygame.init() # 定义变量 size = width, height = 600, 400 bg = (255, 255, 255) # 加载logo图 img = pygame.image.load("./python.png") # 获取图像的位置 position = img.get_rect() # 创建一个主窗口 screen = pygame.display.set_mode(size) # 标题 pygame.display.set_caption("Python自学网") # 创建游戏主循环 while True: # 设置初始值 site = [0, 0] for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() # 图像移动 KEYDOWN 键盘按下事件 # 通过 key 属性对应按键 if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: site[1] -= 8 if event.key == pygame.K_DOWN: site[1] += 8 if event.key == pygame.K_LEFT: site[0] -= 8 if event.key == pygame.K_RIGHT: site[0] += 8 # 移动图像 position = position.move(site) # 填充背景 screen.fill(bg) # 放置图片 screen.blit(img, position) # 更新显示界面 pygame.display.flip()###處理滑鼠事件###### ###Pygame 提供了三個滑鼠事件,分別是滑鼠移動(MOUSEMOTION)、滑鼠按下(MOUSEBUTTONDOWN)、滑鼠釋放(MOUSEBUTTONUP),不同事件類型對應著不同的成員屬性。如下圖:######pygame.event.MOUSEMOTION滑鼠移動事件###### event.pos 相對於視窗左上角,滑鼠的目前座標值(x,y)### event.rel 滑鼠相對運動距離(X,Y),相對於上次事件### event.buttons 滑鼠按鈕初始狀態(0,0,0),分別對應(左鍵,滑輪,右鍵),移動過程中點選那個鍵,對應位置變會為1######pygame.event.MOUSEBUTTONUP滑鼠鍵釋放事件###### event.pos 相對於視窗左上角,滑鼠的目前座標值(x,y)### event .button 滑鼠釋放鍵編號(整數)左鍵為1,按下滾動輪2、右鍵為3######pygame.event.MOUSEBUTTONDOWN 滑鼠鍵按下事件###### event.pos 相對於視窗左上角,滑鼠的目前座標值(x,y)### event.button 滑鼠按下鍵編號(整數),左鍵為1,按下滾動輪2、右鍵為3,向前滾動滑輪4、向後滾動滑輪5######
import pygame from random import randint # 初始化程序 pygame.init() screen = pygame.display.set_mode((450, 400)) pygame.display.set_caption("Python自学网") # 更新显示 pygame.display.flip() while True: # 等待事件发生 event = pygame.event.wait() if event.type == pygame.QUIT: exit("成功退出") if event.type == pygame.MOUSEBUTTONDOWN: # pos 获取鼠标当前位置 print('鼠标按下', event.pos) mx, my = event.pos # 调用 pygame.draw 模块画圆 pygame.draw.circle(screen, (255, 255, 0), (mx, my), 50) # 处理完,更新显示 pygame.display.update() if event.type == pygame.MOUSEBUTTONUP: print('鼠标弹起') pass if event.type == pygame.MOUSEMOTION: print('鼠标移动') mx, my = event.pos # 随机生成 RGB 颜色值 r = randint(0, 255) g = randint(0, 255) b = randint(0, 255) pygame.draw.circle(screen, (r, g, b,), (mx, my), 50) # 处理完,更新显示 pygame.display.update()
以上是Python之Pygame的Event事件模組怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!