![](/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.