我正在使用CFFI port of libtcod在python3中构建一个游戏。你知道吗
使用sys_wait_for_event
方法处理用户输入非常有效(键盘和鼠标事件都会立即被捕获),但是这会阻止我使游戏实时化,因为该方法仅在用户做某事时返回事件,而不是在我希望游戏(例如)移动敌人时返回事件。你知道吗
我可以切换到sys_check_for_event
,但不知何故,这使得CPU的使用率达到100%,而且似乎无法捕捉鼠标的移动。这就好像它经常检查事件一样。试图通过调用time.sleep
每个循环来降低速度也不管用。你知道吗
我使用以下代码:
import tcod
tcod.console_set_custom_font('terminal16x16_gs_ro.png',
tcod.FONT_TYPE_GREYSCALE | tcod.FONT_LAYOUT_ASCII_INROW)
cod.console_init_root(40, 40, 'My game', False)
tcod.sys_set_fps(60)
key = tcod.Key()
mouse = tcod.Mouse()
while not tcod.console_is_window_closed():
# listen for user input, which sends CPU usage to 100%
event = tcod.sys_check_for_event(tcod.EVENT_KEY_PRESS | tcod.EVENT_MOUSE, key, mouse)
# do stuff
some_handling_method(key, mouse)
# flush consoles to the window
tcod.console_flush()
我如何解决这个问题-
有没有办法使用sys_wait_for_event
直到一段时间过去,之后我可以让游戏在没有用户输入的情况下更新状态,
有什么问题吗sys_check_for_event
或
我用错了吗?
谢谢!你知道吗
更新我认为sys_check_for_event
中有一个bug:它返回除鼠标移动以外的所有事件。我通过查看mouse
对象中的(x, y)
坐标来测试这一点-即使这些数字改变,方法的输出仍然0
,即没有事件。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐