2014-09-24 81 views
1

我在嘗試掌握py遊戲代碼中的幾件事情時遇到了困難,首先爲什麼有兩種類型的退出或它們是否相同?例如:試圖瞭解pygame

pygame.QUIT 
pygame.quit() 

我也無法把握這一小塊代碼完全:

for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 

我理解的第一行代碼,但我不明白event.type?是.type pygame或python中的函數一般?它有什麼作用?

+0

你的誤解更多的是與python相比pygame ...函數調用將(通常)以'()'結尾。 – Gerrat 2014-09-24 20:07:11

回答

1

pygame.QUIT只是一個常量,而pygame.quit()pygame模塊中的一個函數,它可以對其進行初始化。代碼片段:

for event in pygame.event.get(): 
    if event.type == pygame.QUIT: 
     ... 

pygame程序的典型控制迴路的一部分。方法pygame.event.get()返回下一個事件。如果事件類型(事件對象的屬性)爲pygame.QUIT,則應用程序應該執行退出所需的操作,包括可能調用pygame.quit()

2
pygame.QUIT 

是用於將輸入的枚舉用信號爲節目退出

pygame.quit() 

是一個函數調用卸載pygame的模塊。根據文檔它不會真的退出遊戲: http://www.pygame.org/docs/ref/pygame.html#pygame.quit 你可以使用sys.exit(0)。

這這裏循環:

for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 

檢查每一個事件,如果他們中的一個具有價值pygame.QUIT那麼一些退出代碼應該遵循。

+0

pygame.quit()不退出遊戲,只卸載pygame模塊 – Ikke 2014-09-24 20:06:00

+0

謝謝,我更新了我的答案。 – 2014-09-24 20:08:11

-1

pygame.quit()手冊上說:

未初始化先前已初始化所有pygame的模塊。當Python解釋器關閉時,不管這個方法是什麼,所以你的程序不應該需要它,除非它想要終止它的pygame資源並繼續。

所以你通常應該自己調用這個方法。

pygame.QUIT是一個所謂的事件類型。 Pygame使用事件來告訴你發生了什麼事。代碼檢查隊列中的每個事件並檢查是否發生QUIT事件。

event.type是pygame的東西,它告訴你它是什麼類型的事件。通過與pygame.QUIT進行比較,您可以檢查是否調用了quit()方法,並採取措施關閉遊戲。

+0

你在說什麼'quit()'方法?當用戶關閉窗口時,將QUIT事件推入隊列。 – 2014-09-24 22:17:42

+0

@BartlomiejLewandowski pygame.quit(),就像我鏈接到的。 – Ikke 2014-09-25 06:46:50

+0

quit事件類型與被調用的quit函數無關。 – 2014-09-25 09:04:33