2011-08-29 38 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