我正在尝试编写一个在背景中执行操作的游戏,直到您按下某个键,因此它在同时执行其他操作时等待输入。我之前从未做过这样的事情,但我听说解决方案与事件处理有关。我试图使用“asyncore”库或“信号”库(Python),但我不理解文档,我认为我缺少基本概念。你能解释一下我如何使用信号处理吗? (或者我可以做其他事情吗?)
谢谢!
答案 0 :(得分:1)
Python的asyncore库用于网络通信,signal库用于计时器和operating system signals(与键盘输入无关)。
要开始使用,您应该找到适合您目的的Python游戏编程库。
如果你想在没有游戏编程库帮助的情况下做一些看似简单的键盘输入,你很快就会被迫使用像Win32和X11这样的原生API。通过使用游戏编程库,您将有机会首先了解事件和后台任务。
答案 1 :(得分:1)
如果你想在支持SDL的python中编写游戏,你应该考虑使用pygame。
SDL:简单的DirectMedia Layer是一个跨平台的多媒体库,旨在通过OpenGL和2D视频帧缓冲提供对音频,键盘,鼠标,操纵杆,3D硬件的低级访问。 [http://www.libsdl.org/]
Pygame是与SDL的python绑定:http://www.pygame.org
但如果你真的想要这么做,我认为你应该考虑使用多处理包。
原因是你的游戏应该有一个主循环,用于分析输入(鼠标,键盘)和更新你的游戏屏幕。这个过程不应该有太多开销,否则游戏会出现性能不佳的迹象......
第二个过程应该是您想要在后台编写其他内容的工作进程...
多处理包为进程间通信提供了大量选择(管道,队列,事件)...... http://docs.python.org/library/multiprocessing.html
总而言之,即使您使用框架或不使用游戏,您的背景材料应该与游戏的主循环不同。 (在python中进行线程处理仅适用于I / O的高使用率,因此它不是您现在想要的包。)