2014-01-11 83 views
-1

我想爲pygame事件類寫一個簡化的類,但我不太確定我會如何去做這件事。簡化的鍵盤鼠標:輸入

我想簡單的檢查,如果一個鍵或鼠標已被按下例如沒有長篇大論的for循環在事件:

for event in pygame.event.get(): 
    if event.type == QUIT: 
     sys.exit() 
    elif event.type == KEYDOWN and event.key == K_ESCAPE: 
     //do something 

相反,我想

if keydown(K_ESCAPE): 
    //do something 

但我真的不確定的如何去做這件事。

對此有何想法?

回答

0

要寫出你所描述的功能:

def keydown(event, *keys): 
    return event.type == KEYDOWN and event.key in keys 

,那麼你可以把它叫做:

if keydown(event, K_ESCAPE): 

您可以通過多個鍵爲連續位置參數。

+0

但是,如果我這樣做,我必須定義事件。我只是想要如果keydown(K_ESCAPE)。我該怎麼做呢? –

+0

你怎麼用鼠標輸入來做到這一點? –

+0

您也可以在函數中封裝'event.get'循環,但您需要考慮如何處理退出。對於鼠標輸入,[閱讀文檔](http://www.pygame.org/docs/ref/event.html)。 – jonrsharpe

0

你仍然需要一個for循環,但如果你想簡單的事件處理,你會發現這個代碼很有用(尤其是EventHandle類和eventLoop()):https://bazaar.launchpad.net/~freevial/freevial/trunk/view/head:/src/common/events.py

的使用例子是在方法here`juguem( )':

for event in eventLoop(): 

    if event.keyUp('q', 'ESCAPE', 'KP_ENTER', 'F3', 'F5') or \ 
    event.keyUp('RETURN') and estat != 0: 
     return 

    if event.keyUp('DOWN'): 
     pass # do something 
+0

在鏈接中給出的代碼不運行? –