2011-08-29 39 views
1

我想寫一個遊戲,在背景中做東西,直到你點擊一個鍵,所以它在等待輸入,同時做其他的東西。我從來沒有做過這樣的事情,但我聽說解決方案與事件處理有關。我試圖使用「asyncore」庫或「信號」庫(Python),但我不理解文檔,我想我缺少基本概念。你能向我解釋我可能會如何使用信號處理? (或者也許還有其他事情我可以做?)如何使用信號處理?

謝謝!

回答

1

Python的asyncore庫用於網絡通信,signal庫用於定時器和operating system signals(與鍵盤輸入無關)。

要開始,你應該找到一個適合你的目的的Python遊戲編程庫。

如果您不想在遊戲編程庫的幫助下做一些看似簡單的鍵盤輸入操作,您很快就會被迫使用Win32和X11等本機API。通過使用遊戲編程庫,您將有機會首先了解事件和後臺任務。

+0

謝謝,我試圖避免這樣做,因爲我想看看底下是什麼,但我想我會嘗試那麼:) –

+0

@badatmath::)想要知道事情如何工作並沒有什麼壞處。我已經在這些行中添加了一些額外的註釋。 –

+0

哦,這聽起來很痛苦,我不得不在不同的系統上做不同的事情:(感謝信息。 –

1

如果你想用python編寫一個支持SDL的遊戲,你應該考慮使用pygame。

SDL:Simple DirectMedia Layer是一個跨平臺的多媒體庫,旨在通過OpenGL提供對音頻,鍵盤,鼠標,操縱桿,3D硬件的低級訪問以及2D視頻幀緩衝。 [http://www.libsdl.org/]

pygame的是python綁定使用SDL:http://www.pygame.org

但如果你真的想這樣做硬盤的方式,我認爲你應該考慮使用多包。

原因是你的遊戲應該有一個主循環用於分析輸入(鼠標,鍵盤)和更新你的遊戲畫面。這個過程不應該有太多的開銷,還是遊戲將顯示性能不佳的跡象...

第二個過程應該是要在背景中使用的代碼你的其他的東西的工作進程...

的多包爲您提供了很多選擇的進程間通信(管道,隊列,事件)... http://docs.python.org/library/multiprocessing.html

總之,即使你用你的遊戲的框架或沒有,你的背景的東西應該是一個不同的過程,你的遊戲的主循環。 (python中的線程只適用於I/O的高度使用,所以它不是你現在想要的包)。

+0

有趣的,謝謝你的幫助! –

+0

我很高興得到某種幫助^^ – HexaGridBrain