【发布时间】:2019-07-28 11:31:28
【问题描述】:
我正在尝试按照 youtube 上的教程使用 pygame(未完成)制作赛车游戏。代码工作得很好,除了当我按下箭头键并很快按下箭头键的反面时,赛车卡住了,直到我放开钥匙并再次按下钥匙。有什么办法可以解决吗?
import pygame
pygame.init()
display_width = 800
display_height = 600
black = (0, 0, 0)
white = (255, 255, 255)
red = (255, 0, 0)
gameDisplay = pygame.display.set_mode((display_width, display_height))
pygame.display.set_caption('A bit Racey')
clock = pygame.time.Clock()
carImg = pygame.image.load('BlackCar.png')
def car(x, y):
gameDisplay.blit(carImg, (x, y))
x = (display_width * 0.45)
y = (display_height * 0.8)
x_change = 0
y_change = 0
crashed = False
while not crashed:
for event in pygame.event.get():
if event.type == pygame.QUIT:
crashed = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x_change = -5
if event.key == pygame.K_RIGHT:
x_change = 5
if event.key == pygame.K_UP:
y_change = -5
if event.key == pygame.K_DOWN:
y_change = 5
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
x_change = 0
if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
y_change = 0
x += x_change
y += y_change
gameDisplay.fill(white)
car(x, y)
pygame.display.flip()
clock.tick(60)
pygame.quit()
quit()
【问题讨论】:
-
好的,尝试删除 KEYUP 事件的代码,看看会发生什么,然后告诉我。为简洁起见,让我们删除上面的 cmets。
-
您可以在
KEYDOWN和KEYUP中使用x_change -= 5x_change += 5,然后它应该会更好地工作。它会“累积两个箭头,并在您释放另一个箭头时“记住”前一个箭头。现在,当您释放第二个键时,它会设置x_change = 0并且它不会记住第二个键。 -
还是不行
标签: python python-3.x pygame