Я думаю, вам нужно поместить строку lead_x1 += velocity
внутри оператора else, что-то вроде этого: -
import pygame
width, height = 800, 600
gameDisplay = pygame.display.set_mode((width, height))
pygame.display.set_caption("Test")
gameExit = False
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
block_size = 10
def gameloop():
lead_x1, lead_x2 = 1, 100
lead_y1, lead_y2 = 1, 1
velocity = 0.2
gameExit = False
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
block_size = 10
toogle_flag = 1
while not gameExit:
gameDisplay.fill(white)
pygame.draw.rect(gameDisplay, black, [lead_x1, lead_y1, block_size, block_size])
pygame.draw.rect(gameDisplay, black, [lead_x2, lead_y2, block_size, block_size])
lead_x1 += toggle_flag * velocity
if lead_x1 >= lead_x2:
toggle_flag = -1*toggle_flag
if lead_x1 <= 0:
toggle_flag = -1*toggle_flag
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
pygame.display.update()
pygame.quit()
quit()
gameloop()
Итак, что я здесь делаю, давайте возьмем флаг с именем toggle_flag
, инициализируем его как 1
.
Выходная коробка находится в позиции 1, мы добавляем toggle_flag * velocity
к нашему lead_x1
. то есть мы в основном добавляем velocity
.
Как только мы коснемся второго поля, мы изменяем значение от toggle_flag
до -1
.
Что произойдет, мы продолжаем добавлять -velocity
к нашему lead_x1
.
Теперь, когда мы достигнем 0
. Мы снова переворачиваем значение toggle_flag
, умножая его на -1
, что позволяет нам добавить velocity
к lead_x1
.
Надеюсь, это поможет!