Определение первого появления в цикле - PullRequest
0 голосов
/ 09 мая 2018

Я очень плохо знаком с Python, но я осмотрелся и не увидел ничего, что соответствовало бы тому, что я пытаюсь сделать.

Я использую PyGame для обнаружения столкновений между тремя объектами (шар, квадрат A, квадрат B). Я хочу, чтобы X возникал, если мяч попадал в квадрат B, но только в том случае, если он ранее попадал в квадрат A. Поскольку это внутри непрерывного цикла, я не могу просто установить ballAcollide как true, когда это происходит, потому что он будет сброшен немедленно.

У меня сейчас есть кое-что, что работает, но я уверен, что это уродливый обходной путь, и есть лучший способ сделать это. Вот фрагмент кода в вопросе:

def fastball(ball, squareA, squareB):
    # This needs to be improved
    if ball.rect.colliderect(squareA.rect):
        # do unrelated
        global firsthit
        firsthit = False
    elif ball.rect.colliderect(squareB.rect):
        try:
            if not firsthit:
                # do X
        except NameError:
            # do nothing

1 Ответ

0 голосов
/ 09 мая 2018

Ответ основан на предложении ПатрикАртнера:

def fastball2(ball, squareA, squareB, list):
    if ball.rect.colliderect(squareA.rect):
        if len(list) == 0:
            list.append('A')
        # do unrelated
    elif ball.rect.colliderect(squareB.rect) and len(list) > 0:
        # do x
Затем список

сбрасывается в другой точке цикла, если выполняются определенные условия. Ценю помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...