簡體   English   中英

在Python變量更新中需要幫助(Pygame模塊)

[英]Need Help in Python Variable updation (Pygame module)

我試圖在我的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()

您正在將事件 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中的延遲以適合您的口味。 另外,請注意將速度重置為零的附加功能。 浮點運算並不完全精確,因此反復進行加減運算可能會導致負數為“零”。

我看到的完成方式是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM