自动来回移动矩形

moving rectangle back and forth automatically

如何在 pygame 中创建一个矩形使其在不使用 for 循环的情况下自行移动或在 python 中自动移动。 我可以让它前进但不能让它在没有 ifor 循环的情况下返回并且当我尝试使用键移动我的另一个矩形时它会导致问题。

import pygame
import time
pygame.init()

win=pygame.display.set_mode((600,400))
pygame.display.set_caption('game trial')

x=300
y=300
true=True

x1=20
y1=100
vel=4

def draw():
    global x
    if x<550:
        x+=10
    elif x==550:
        for i in range(550):
            x-=1
            win.fill('black')
            pygame.draw.rect(win,('blue'),(x1,y1,50,50))
            pygame.draw.rect(win,('red'),(x,y,50,50))
            pygame.display.update()
            time.sleep(.003)
    win.fill('black')
    pygame.draw.rect(win,('red'),(x,y,50,50))
    pygame.draw.rect(win,('blue'),(x1,y1,50,50))
    pygame.display.update() 

clock=pygame.time.Clock()
while true:
    clock.tick(30)
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
          true=False
          
    key=pygame.key.get_pressed()
    
    if [pygame.K_LEFT]:
        x1-=4
    elif [pygame.K_RIGHT]:
        x1+=4
          
    draw()
    
          
pygame.quit()

在每一帧中将速度 (vel) 添加到对象的位置 (x)。当物体需要改变方向时反转速度(vel*= -1):

def draw():
    global x, vel
    x += vel
    if x <= 0 or x >= 550:
        vel *= -1
    
    win.fill('black')
    pygame.draw.rect(win,('red'),(x,y,50,50))
    pygame.draw.rect(win,('blue'),(x1,y1,50,50))
    pygame.display.update()