微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我的播放器移动不正确,按住键时,它应该连续移动,但只能移动一次

如何解决我的播放器移动不正确,按住键时,它应该连续移动,但只能移动一次

我试图在 pygame 中写一些简单的东西,但这是我不明白的。 我正在尝试添加移动,但它不是连续的。我按住键,但键只经过 1 x_change

import pygame,sys
from pygame.locals import *

pygame.init()
gdis=pygame.display.set_mode((400,300))

Black=(0,0)
White=(255,255,255)
Red=(255,0)
Blue=(0,255)
Silver=(192,192,192)

clock=pygame.time.Clock()
x=195
y=270
wid=20
hght=20
speed=5

x_change=0
y_change=0
left=False
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == K_LEFT:
                x_change-=5
            

                
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                            x_change=0

        x+=x_change

        gdis.fill(Black)

        pygame.draw.rect(gdis,Silver,(x,y,wid,hght))
        clock.tick(60)

    
    pygame.display.update()

解决方法

这是Indentation的问题。您必须在应用程序循环而不是事件循环中移动和绘制播放器:

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == K_LEFT:
                x_change = -5
            
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                x_change = 0

    # INDENTATION

    #<--|

    x += x_change

    gDis.fill(Black)
    pygame.draw.rect(gDis,Silver,(x,y,wid,hght))
    pygame.display.update()
    clock.tick(60)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。