我试图在我的pygame代码中增加我的速度变量。但是当我运行这段代码时,速度保持为0.1(如果我按下UP键)和0(否则为大小写)。我无法调试这个。任何帮助都将非常感激。
import pygame
speed = 0
screen = pygame.display.set_mode((400,400),0,32)
pygame.display.update()
clock = pygame.time.Clock()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
break
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
if speed < 8 :
speed+=0.1
if event.type == pygame.KEYUP:
if event.key == pygame.K_UP:
if speed > 0 :
speed+= -0.1
pygame.display.update()
print(speed)
clock.tick(60)
pygame.quit()
quit()
答案 0 :(得分:0)
您将事件 KEYUP与UP 键混淆。释放键(任何键)时发生KEYUP事件。按任意键时会发生事件KEYDOWN。
在你的代码中,这意味着当按下UP键时,速度设置为0.1,当释放UP键时,速度设置为0.0。
如果您希望保持的速度增加,并且在释放密钥时减少速度,则应使用计时器,如下所示:
import pygame
speed = 0
screen = pygame.display.set_mode((400,400),0,32)
pygame.display.update()
clock = pygame.time.Clock()
pygame.time.set_timer(pygame.USEREVENT+1, 20)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
break
if event.type == pygame.USEREVENT+1:
if pygame.key.get_pressed()[pygame.K_UP]:
if speed < 8 :
speed+=0.1
else:
if speed > 0.1:
speed+= -0.1
else:
speed = 0.0
pygame.display.update()
print(speed)
clock.tick(60)
pygame.quit()
quit()
调整set_timer中的延迟以适合您的口味。另外,请注意添加将速度重置为零。浮动操作并不完全准确,因此重复添加和减少可能会导致“零”为负。
答案 1 :(得分:0)
我看到这样做的方式是:
keys_pressed = pygame.key.get_pressed()
if keys_pressed[pygame.K_UP]:
if speed < 8:
speed += 0.1
if keys_pressed[pygame.K_DOWN]:
if speed > 0:
speed += -0.1