Как повторить определённый фрагмент кода?

while True:
    screen.fill((0, 0, 0))
    pygame.time.delay(30)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit() 

    if oneY < 1080:
        oneY += speed
    if oneY == 1080:
        oneX2 += speed2
    if oneX2 > 1920:
        oneY3 += speed
    if oneY3 > 1080:
        oneX4 += speed
                          
    screen.blit(img, (oneX, oneY))
    screen.blit(img2, (oneX2, oneY2))
    screen.blit(img3, (oneX3, oneY3))
    screen.blit(img4, (oneX4, oneY4))   
    pygame.display.update()

Мне нужно, чтобы повторялся этот фрагмент кода:

if oneY < 1080:
    oneY += speed
if oneY == 1080:
    oneX2 += speed2
if oneX2 > 1920:
    oneY3 += speed
if oneY3 > 1080:
    oneX4 += speed

Ответы (1 шт):

Автор решения: NkL322

Можно использовать вызов функции следующим способом:

def foo():
    if oneY < 1080:
        oneY += speed
    if oneY == 1080:
        oneX2 += speed2
    if oneX2 > 1920:
        oneY3 += speed
    if oneY3 > 1080:
        oneX4 += speed

for i in range(5):
    foo()

Если используются не глобальные переменные, нужно добавить параметры к функции:

def foo(oneY, oneX2, oneY3, oneY3, oneX4, speed):
    if oneY < 1080:
        oneY += speed
    if oneY == 1080:
        oneX2 += speed2 # speed?
    if oneX2 > 1920:
        oneY3 += speed
    if oneY3 > 1080:
        oneX4 += speed

for i in range(5):
    foo()

Если данные операции нигде больше выполнять не нужно, проще будет сделать так:

for i in range(5):
    if oneY < 1080:
        oneY += speed
    if oneY == 1080:
        oneX2 += speed2
    if oneX2 > 1920:
        oneY3 += speed
    if oneY3 > 1080:
        oneX4 += speed
→ Ссылка