我花了大约一年的时间开发了俄罗斯方块克隆游戏,并在游戏变得更加激烈时开发了更高级别的游戏,而您使用的游戏手柄相当容易同时按下两个按钮。例如上和左。问题是Up很难掉下来,这意味着您可以很容易地非自愿地进入Game Over情况。
我正在使用事件泵,如预期的那样,当同时按下两个游戏手柄按钮时,您首先为第一个按钮按下Down,然后从SDL_PollEvent退出事件循环,SDL_PollEvent执行该按钮的动作,然后按下Down第二个按钮和一个事件循环出口,后跟两个Up事件。
我曾尝试解决这种特殊情况,但从未找到适合始终有效的解决方案。在执行操作之前,等待Down / Up事件组合将不起作用,因为它将破坏自动重复。
要使游戏正常运行,输入命令的基本处理至关重要。我的策略是将同时按下游戏手柄的按钮转换成涉及向左/向右的方向。
https://github.com/drpatrik/combatris/blob/master/combatris/src/combatris.cpp
代码从175行开始,非常直白,恕我直言。我能想到的唯一解决方案是停止使用事件处理,但随后我将放弃许多其他不错的功能,例如游戏手柄数据库。
因此,对于我如何以一致的方式处理此问题的任何帮助,我将不胜感激。