什么是实现键盘处理的好方法?在任何语言中,当我编写键盘交互程序(例如俄罗斯方块游戏)时,我最终得到的代码如下所示:
for event in pygame.event.get():
if event.type == KEYDOWN:
if False: pass #make everything an elif
elif rotating: pass
elif event.key == K_q:
elif event.key == K_e:
elif event.key == K_LEFT:
curpiece.shift(-1, 0)
shadowpiece = curpiece.clone(); setupshadow(shadowpiece)
elif event.key == K_RIGHT:
curpiece.shift(1, 0)
shadowpiece = curpiece.clone(); setupshadow(shadowpiece)
(简称)。我不喜欢这样,因为这必须进入我的主循环,它扰乱了程序的所有部分。这也使得不可能有一个用户配置屏幕,在那里他们可以更改哪些键映射到哪个操作。有没有一个好的模式来使用某种形式的函数回调来实现这一点?在
除了superjoe30's answer,还可以使用两个级别的映射(两个字典)
我认为这将使允许用户定义映射更容易。i、 因此用户可以将他们的键映射到“命令”而不是“函数名”
您可以创建一个字典,其中键是输入,值是处理按键的函数:
那么改变键就是修改字典的键。在
我现在所做的是有一些输入收集类/函数/线程,它将检查预定义键->事件绑定的列表。在
像这样:
这基本上就是superjoe30所做的,除了不直接调用回调之外,我通过使用事件调度系统添加了另一个级别的分离,这样任何关心按键被按下的代码都只需监听该事件。在
此外,键可以很容易地绑定到不同的事件,这些事件可以从配置文件或其他文件中读取,任何未绑定到事件的键都会被忽略。在
相关问题 更多 >
编程相关推荐