【问题标题】:Python; how can I make something move continuouslyPython;我怎样才能让某物不断移动
【发布时间】:2018-09-08 20:25:50
【问题描述】:

这是我的代码:

import pygame
pygame.init()

win = pygame.display.set_mode((500,500))

pygame.display.set_caption("Test")
x = 50
y = 50
width = 40
height = 60
vel =5

run = True
while run:
    pygame.time.delay(100)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

        keys = pygame.key.get_pressed()

        if keys[pygame.K_LEFT]:
            x -= vel
        if keys[pygame.K_RIGHT]:
            x += vel
        if keys[pygame.K_UP]:
            y -= vel
        if keys[pygame.K_DOWN]:
            y += vel

        win.fill((0,0,0))
        pygame.draw.rect(win, (255,255,255), (x,y,width,height))
        pygame.display.update()

pygame.quit()

我希望矩形在您按住其中一个按钮时连续移动,但每次按下它只会移动一次。 我刚刚开始学习 Python 和 Pygame(如您所见),所以我很感谢您的帮助。

【问题讨论】:

标签: python pygame


【解决方案1】:

这里发生的事情是,您将代码用于更新事件循环中的位置,这意味着您移动对象的代码仅在 pygame 检测到诸如按键之类的事件时运行。但是,如果您按住某个键,pygame 不会将其注册为事件。

只需从 for 循环中删除 keys = pygame.key...display.update() 的所有代码,并将其放入 while 循环中。

这样:

while run:
    pygame.time.delay(100)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    keys = pygame.key.get_pressed()

    if keys[pygame.K_LEFT]:
        x -= vel
    if keys[pygame.K_RIGHT]:
        x += vel
    if keys[pygame.K_UP]:
        y -= vel
    if keys[pygame.K_DOWN]:
        y += vel

    win.fill((0,0,0))
    pygame.draw.rect(win, (255,255,255), (x,y,width,height))
    pygame.display.update()

pygame.quit()

现在只要按住按键,需要移动的物体就会连续移动!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 2012-12-20
    • 2014-06-22
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多