最近在用pygame做一个小游戏。但在让角色移动时,我希望:
按住←键持续向左、按住→键持续向右、按住↑键持续向后、按住↓键持续向下
我的思路:
创建一个列表,[0, 0, 0, 0],每个0代表着4个方向之一 是否移动(0不动,1动)。在按下相应↑↓←→时, 列表里相应的0便更改为1。而当检测到keyup时,列表重新变成[0, 0, 0, 0]。
原思路问题:
由于我不知道如何检测松开的键是什么,所以无论我松开什么键,人物都会立刻停止移动,导致其十分不流畅。
解决方案:
检测松开的是什么键,并准确更改列表
检测是否持续按住,一旦停止持续按住就更改列表
当然,如果有其他办法,也麻烦提出来,谢谢
也可以循环判断按下按键,每按下一个键,就把特定变量更改成和这个按键对应的值,在在另一个语句块判断变量值,循环检测松开按键的时候,与变量内容匹配,成功则把变量改成none,否则不管,这就实现了松开一按下的按键才停止移动
在这个游戏对象的类中添加一个设置,分别是moveup,movedown,moveleft,moveright之类的变量,刚开始设置为False,检测到按键就设置为True,松开就改成False,关于怎么检测可以查找一下关于pygame.event.get()的资料。再在对象移动刷新的方法里面添加if语句,moveup是否为True,是的话就向上移动。以此类推。你可以查看一下我的程序原理 Pythonpygame主角躲避飞动的刺球伤害的小游戏-Python文档类资源-CSDN下载 Pythonpygame主角躲避飞动的刺球伤害的小游戏更多下载资源、学习资料请访问CSDN下载频道. https://download.csdn.net/download/qq_48979387/21479002
通过下面这两行命令可以判断抬起的键是哪一个。
if event.type == pygame.KEYUP:
if event.key == K_LEFT: #判断是否是左移键
# 后续的命令。。。。