Pygame не отвечает при выполнении расчетов - PullRequest
1 голос
/ 08 мая 2020

В настоящее время я работаю над игрой AI против AI в pygame, я только заканчиваю ее, но одна из функций работает не так, как ожидалось. Это примерно так (это находится в pygame.event.get () l oop):

if event.type == right_input:
    for e in range(100):
        data = compute_data(variables)
        re_draw_window(data)

Функция compute_data может занять 0,5 секунды, но после примерно 30 раз окно pygame перестает отображаться ответить и через 20 секунд, когда он вернется к событию l oop, он покажет окончательный результат.

1 Ответ

1 голос
/ 08 мая 2020

Проблема вызвана l oop в l oop. compute_data и re_draw_window выполняется 100 раз подряд. При этом окно не отвечает, потому что события не обрабатываются. Внутренний l oop блокирует приложение до тех пор, пока l oop не завершится.

Измените настройку и инициализируйте переменную count перед приложением l oop и увеличьте count в l oop.
Чтобы запустить процесс один раз с помощью ввода, затем добавьте переменную start в приложение и установите переменную в событии ввода:

start = False
count = 0
while True:
    # [...]

    for event in pygame.event.get():
        # [...]

        if event.type == right_input:
            # start the process
            start = True


    if start:
        # run the process
        if count < 100:
            data = compute_data(varibals)
            re_draw_window(data)
            count += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...