![](/img/trans.png)
[英]Pygame: How to make sprites face the same direction when no key is pressed
[英]How to disbale certain key when another key is pressed in pygame
我正在完成我的大学作业,他们给了我一项任务,即使用 pygame 在 python 中制作蛇游戏,我已经制作了游戏,但我面临一个问题,如果我按下了右键并且我的蛇在移动向右,然后我按下左键,蛇撞到自己,我输掉了比赛。
我想要的是如果我的蛇朝某个方向移动,例如:右左键应该被禁用,换句话说,当按下右键时左键不应该工作。 2天以来我一直在尝试解决问题,但找不到任何东西,任何帮助将不胜感激,谢谢
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -snake_block
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
elif event.key == pygame.K_UP:
x1_change = 0
y1_change = -snake_block
elif event.key == pygame.K_DOWN:
x1_change = 0
y1_change = snake_block
您需要添加一个额外的条件来检查蛇没有朝相反的方向移动。
例如,如果蛇向右移动,则不允许按LEFT :
if not x1_change > 0 and event.key == pygame.K_LEFT:
事件循环:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if not x1_change > 0 and event.key == pygame.K_LEFT:
x1_change = -snake_block
y1_change = 0
elif not x1_change < 0 and event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
elif not y1_change > 0 and event.key == pygame.K_UP:
x1_change = 0
y1_change = -snake_block
elif not y1_change < 0 and event.key == pygame.K_DOWN:
x1_change = 0
y1_change = snake_block
您还可以通过注意蛇是否尚未朝该方向移动来禁用按键:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if y1_change:
if event.key == pygame.K_LEFT:
x1_change = -snake_block
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block
y1_change = 0
elif x1_change:
elif event.key == pygame.K_UP:
x1_change = 0
y1_change = -snake_block
elif event.key == pygame.K_DOWN:
x1_change = 0
y1_change = snake_block
此代码仅允许玩家在水平移动时将其方向更改为上/下,当他垂直移动时将其更改为左/右。 当玩家向左移动时, y1_change
为 0,使得if y1_change
不被执行。 然后玩家不能向左移动(因为他已经这样做了)而不是向右移动(使蛇与自身相撞)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.