這篇文章主要介紹了python基于pygame實現響應游戲中事件的方法,實例分析了Python基于pygame針對鍵盤及鼠標事件的響應方法,具有一定參考借鑒價值,需要的朋友可以參考下
本文實例講述了python基于pygame實現響應游戲中事件的方法。分享給大家供大家參考,具體如下:
先看一下我做的demo效果:
當玩家按下鍵盤上的:上,下,左,右鍵的時候,后臺會打印出玩家所按鍵的數字值,而圖形會隨之移動
這是客觀上面存在的現象。
那么啥是事件呢?
你叫我做出定義,我不知道,我只能舉個例子說明,例如接下來的代碼中,列出來一些關于游戲中的事件
- '''
- 事件 產生途徑 參數
- QUIT 用戶按下關閉按鈕 none
- ATIVEEVENT Pygame被激活或者隱藏 gain, state
- KEYDOWN 鍵盤被按下 unicode, key, mod
- KEYUP 鍵盤被放開 key, mod
- MOUSEMOTION 鼠標移動 pos, rel, buttons
- MOUSEBUTTONDOWN 鼠標按下 pos, button
- MOUSEBUTTONUP 鼠標放開 pos, button
- JOYAXISMOTION 游戲手柄(Joystick or pad)移動 joy, axis, value
- JOYBALLMOTION 游戲球(Joy ball)?移動 joy, axis, value
- JOYHATMOTION 游戲手柄(Joystick)?移動 joy, axis, value
- JOYBUTTONDOWN 游戲手柄按下 joy, button
- JOYBUTTONUP 游戲手柄放開 joy, button
- VIDEORESIZE Pygame窗口縮放 size, w, h
- VIDEOEXPOSE Pygame窗口部分公開(expose) none
- USEREVENT 觸發了一個用戶事件 code
- '''
如鼠標按下事件,鼠標放開事件,鍵盤按下事件.....
這些事件的發生都伴隨著一個動作的發生,正是因為有動作的發生,所以我們才可以撲捉到這些動作,從而做出相應的反應
如,我們按下鍵盤的左鍵,圖片就向左移動一段距離...
代碼部分如下:
- #handle the key event
- import pygame
- from pygame.locals import *
- from sys import exit
- '''
- 事件 產生途徑 參數
- QUIT 用戶按下關閉按鈕 none
- ATIVEEVENT Pygame被激活或者隱藏 gain, state
- KEYDOWN 鍵盤被按下 unicode, key, mod
- KEYUP 鍵盤被放開 key, mod
- MOUSEMOTION 鼠標移動 pos, rel, buttons
- MOUSEBUTTONDOWN 鼠標按下 pos, button
- MOUSEBUTTONUP 鼠標放開 pos, button
- JOYAXISMOTION 游戲手柄(Joystick or pad)移動 joy, axis, value
- JOYBALLMOTION 游戲球(Joy ball)?移動 joy, axis, value
- JOYHATMOTION 游戲手柄(Joystick)?移動 joy, axis, value
- JOYBUTTONDOWN 游戲手柄按下 joy, button
- JOYBUTTONUP 游戲手柄放開 joy, button
- VIDEORESIZE Pygame窗口縮放 size, w, h
- VIDEOEXPOSE Pygame窗口部分公開(expose) none
- USEREVENT 觸發了一個用戶事件 code
- '''
- __author__ = {'name' : 'Hongten',
- 'mail' : 'hongtenzone@foxmail.com',
- 'QQ' : '648719819',
- 'Version' : '1.0'}
- BG_IMAGE = 'C://py//ball.png'
- pygame.init()
- screen = pygame.display.set_mode((500, 500), 0, 32)
- bg = pygame.image.load(BG_IMAGE).convert()
- x, y = 0, 0
- move_x, move_y = 0, 0
- while 1:
- for event in pygame.event.get():
- #print(event.type)
- if event.type == QUIT:
- exit()
- if event.type == KEYDOWN:
- print(event.key)
- #event.key返回的是一個數字值,而K_LEFT,K_UP,K_RIGHT,K_DOWN等都是常量,
- #他們代表的也是一個數字值,這些數字值可以用:print(event.key)獲取到
- #如:K_LEFT = 276
- # K_UP = 273
- #所以下面的代碼可以替換為:
- #if event.key == 276:
- # move_x = -10
- if event.key == K_LEFT:
- move_x = -10
- elif event.key == K_UP:
- move_y = -10
- elif event.key == K_RIGHT:
- move_x = 10
- elif event.key == K_DOWN:
- move_y = 10
- elif event.type == KEYUP:
- move_x = 0
- move_y = 0
- x += move_x
- y += move_y
- #print(x, y)
- screen.fill((0, 0, 0))
- screen.blit(bg, (x, y))
- pygame.display.update()
完整實例代碼代碼點擊此處本站下載。
希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答