Python 多键按键游戏
我想做一个游戏,如果有一个会射击的小机器人。问题是,它只有在不动的时候才会射击,当我向左或向右移动,或者当我跳的时候它不会射击。当我按下其他键时,我能做些什么让我的barspace键工作吗?我试图在已经存在的关键语句中添加另一个if-key语句,但它不起作用,我的意思是:Python 多键按键游戏,python,pygame,Python,Pygame,我想做一个游戏,如果有一个会射击的小机器人。问题是,它只有在不动的时候才会射击,当我向左或向右移动,或者当我跳的时候它不会射击。当我按下其他键时,我能做些什么让我的barspace键工作吗?我试图在已经存在的关键语句中添加另一个if-key语句,但它不起作用,我的意思是: elif keys[py.K_LEFT] and man.x >= 0: man.x -= man.vel man.right = False man.left = True man.st
elif keys[py.K_LEFT] and man.x >= 0:
man.x -= man.vel
man.right = False
man.left = True
man.standing = False
man.idlecount = 0
man.direction = -1
if keys [py.K_SPACE] and shootloop == 0:
if man.left:
facing = -1
elif man.right:
facing = 1
if len(bullets) < 5:
man.standing = True
man.shooting = True
bullets.append(bulletss(round(man.x + man.lenght//2), round(man.y + man.lenght//2), facing))
shootloop = 1
elif键[py.K_左]和man.x>=0:
man.x-=man.vel
对=错
左=真
站着的人
man.idlecount=0
方向=-1
如果键[py.K_SPACE]和shootloop==0:
如果男子离开:
正面=-1
伊里夫·曼·赖特:
朝向=1
如果长度(项目符号)<5:
站着
射击=真的
项目符号。附加(项目符号(圆形(man.x+man.lenght//2),圆形(man.y+man.lenght//2),面向))
shootloop=1
我把我的github留在这里,这样你就可以运行程序了。谢谢你的帮助,很抱歉我的代码乱七八糟
如果键[py.K_SPACE]和shootloop==0:语句不应位于
elif键[py.K_LEFT]和man.x>=0:
子句的内部,否则只能在按下左箭头键时进行拍摄
此外,在回购协议中
if keys[py.K_RIGHT] and man.x <= 700:
# ...
elif keys[py.K_LEFT] and man.x >= 0:
# ...
elif keys [py.K_SPACE] and shootloop == 0:
请看这一页。您在此处发布的代码与您的回购协议中的代码不同,您也不应该发布到项目文件的链接,因为您的代码很可能会更改,链接可能会丢失。我还建议您发布项目,以获取有关如何简化和美化代码的提示(您可以在此处添加到您的回购协议的链接)。如果我不把下载图片的链接也放在上面,我怎么能让用户试用我的程序?感谢codereview tipIt的建议,在您将代码发布到这里之前,应该将代码简化为一个最小的、可运行的示例。当然你不必这么做,但这会很好,因为它节省了我们的时间。pygame程序中的图像通常可以替换为简单的
pygame。表面
实例填充不同的颜色。小提示:使用smoothscale
而不是scale
,角色看起来会更好。并使用或convert_alpha
转换曲面以提高性能。谢谢!你知道为什么它工作得很好,除了当我同时跳和向左移动的时候?我有同样的问题,我认为这与我们键盘的硬件限制有关。当我使用左控制键而不是空格键时,它工作正常。
elif keys[py.K_LEFT] and man.x >= 0:
man.x -= man.vel
man.right = False
man.left = True
man.standing = False
man.idlecount = 0
man.direction = -1
else:
man.standing = True
if keys [py.K_SPACE] and shootloop == 0:
if man.left:
facing = -1
elif man.right:
facing = 1
if len(bullets) < 5:
man.standing = True
man.shooting = True
bullets.append(bulletss(round(man.x + man.lenght//2), round(man.y + man.lenght//2), 1))
shootloop = 1
else:
man.shooting = False