这是我的代码:
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(如您所见),因此我很感谢您的帮助。
答案 0 :(得分:0)
这里发生的事情是,您放置了代码以更新事件循环中的位置,这意味着仅当pyame检测到按键之类的事件时,才运行移动对象的代码。但是,如果按住某个键,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()
只要按住键,需要移动的对象现在将连续移动!