在 Python 变量更新(Pygame 模块)中需要帮助
Need Help in Python Variable updation (Pygame module)
我正在尝试增加 pygame 代码中的速度变量。但是当我 运行 这段代码时,速度保持为 0.1(如果我按向上键)和 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()
您混淆了 事件 KEYUP 和 UP key。当一个键(任何键)被释放时,事件 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 中的延迟以适合您的口味。另外,请注意将速度重置为零的添加。浮点运算并不完全精确,因此重复加减会导致 'zero' 为负数。
我看到的方法是:
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
我正在尝试增加 pygame 代码中的速度变量。但是当我 运行 这段代码时,速度保持为 0.1(如果我按向上键)和 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()
您混淆了 事件 KEYUP 和 UP key。当一个键(任何键)被释放时,事件 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 中的延迟以适合您的口味。另外,请注意将速度重置为零的添加。浮点运算并不完全精确,因此重复加减会导致 'zero' 为负数。
我看到的方法是:
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