python基于pygame實(shí)現(xiàn)響應(yīng)游戲中事件的方法(附源碼)
本文實(shí)例講述了python基于pygame實(shí)現(xiàn)響應(yīng)游戲中事件的方法。分享給大家供大家參考,具體如下:
先看一下我做的demo效果:
當(dāng)玩家按下鍵盤上的:上,下,左,右鍵的時(shí)候,后臺(tái)會(huì)打印出玩家所按鍵的數(shù)字值,而圖形會(huì)隨之移動(dòng)
這是客觀上面存在的現(xiàn)象。
那么啥是事件呢?
你叫我做出定義,我不知道,我只能舉個(gè)例子說明,例如接下來的代碼中,列出來一些關(guān)于游戲中的事件
''' 事件 產(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 '''
如鼠標(biāo)按下事件,鼠標(biāo)放開事件,鍵盤按下事件.....
這些事件的發(fā)生都伴隨著一個(gè)動(dòng)作的發(fā)生,正是因?yàn)橛袆?dòng)作的發(fā)生,所以我們才可以撲捉到這些動(dòng)作,從而做出相應(yīng)的反應(yīng)
如,我們按下鍵盤的左鍵,圖片就向左移動(dòng)一段距離...
代碼部分如下:
#handle the key event import pygame from pygame.locals import * from sys import exit ''' 事件 產(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 ''' __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返回的是一個(gè)數(shù)字值,而K_LEFT,K_UP,K_RIGHT,K_DOWN等都是常量, #他們代表的也是一個(gè)數(shù)字值,這些數(shù)字值可以用: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()
完整實(shí)例代碼代碼點(diǎn)擊此處本站下載。
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
django 擴(kuò)展user用戶字段inlines方式
這篇文章主要介紹了django 擴(kuò)展user用戶字段inlines方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03python實(shí)現(xiàn)根據(jù)主機(jī)名字獲得所有ip地址的方法
這篇文章主要介紹了python實(shí)現(xiàn)根據(jù)主機(jī)名字獲得所有ip地址的方法,涉及Python解析IP地址的相關(guān)技巧,需要的朋友可以參考下2015-06-06Python實(shí)現(xiàn)讀取SQLServer數(shù)據(jù)并插入到MongoDB數(shù)據(jù)庫的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)讀取SQLServer數(shù)據(jù)并插入到MongoDB數(shù)據(jù)庫的方法,涉及Python同時(shí)進(jìn)行SQLServer與MongoDB數(shù)據(jù)庫的連接、查詢、讀取、寫入等相關(guān)操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-06-06Python標(biāo)準(zhǔn)庫之多進(jìn)程(multiprocessing包)介紹
這篇文章主要介紹了Python標(biāo)準(zhǔn)庫之多進(jìn)程(multiprocessing包)介紹,本文講解了進(jìn)程池、共享資源、共享內(nèi)存、Manager等內(nèi)容,需要的朋友可以參考下2014-11-11