在Python变量更新中需要帮助(Pygame模块)

时间:2015-06-19 07:49:32

标签: python python-2.7 variables python-3.x pygame

我试图在我的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()

2 个答案:

答案 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