Cla*_*diu 9 python keyboard user-interface user-input interactive
实现键盘处理的好方法是什么?在我编写键盘交互式程序(如俄罗斯方块游戏)的任何语言中,我最终得到的代码如下所示:
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)
Run Code Online (Sandbox Code Playgroud)
(缩短).我不喜欢这个,因为这必须在我的主循环中,并且它与程序的所有部分混淆.这也使得用户配置屏幕不可能改变哪个键映射到哪个动作.使用某种形式的函数回调是否有良好的模式?
and*_*wrk 17
你可以创建一个字典,其中键是输入,值是一个处理按键的函数:
def handle_quit():
quit()
def handle_left():
curpiece.shift(-1, 0)
shadowpiece = curpiece.clone(); setupshadow(shadowpiece)
def handle_right():
curpiece.shift(1, 0)
shadowpiece = curpiece.clone(); setupshadow(shadowpiece)
def handle_pause():
if not paused:
paused = True
branch = {
K_q: handle_quit
K_e: handle_pause
K_LEFT: handle_left
K_RIGHT: handle_right
}
for event in pygame.event.get():
if event.type == KEYDOWN:
branch[event.key]()
Run Code Online (Sandbox Code Playgroud)
然后更改密钥是修改字典的键的问题.
归档时间: |
|
查看次数: |
3392 次 |
最近记录: |