Как заставить pygame обновить дисплей, когда я этого захочу? - PullRequest
0 голосов
/ 29 февраля 2020

Я работаю над простой графической программой, которая принимает пользовательские команды в консоли, а затем в окне pygame отображает результаты в окне. До сих пор у меня это работало, когда я настраивал команды в жестком коде, но теперь, когда я пытаюсь разрешить ему принимать пользовательский ввод, у него возникают проблемы.

Внутри игры l oop:

        while True:
            command = input("Enter a command: " + "\n"
                            "1: input" + "\n"
                            "2: apply transformation" + "\n"
                            "3: display pixels" + "\n"
                            "4: output" + "\n"
                            "5: basic translate" + "\n"
                            "6: basic scale" + "\n"
                            "7: basic rotate" + "\n"
                            "8: scale" + "\n"
                            "9: rotate" + "\n"
                            "Command:  ")

            command = int(command)

            if command == 1:
                num = Inputlines(datalines, num)
            elif command == 2:
                datalines = ApplyTransformation(matrix, datalines)
            elif command == 3:
                Displaypixels(datalines, num)
                pygame.display.update()
            elif command == 4:
                Outputlines(datalines, num)
            elif command == 5:
                Tx = int(input("Input a Tx value: "))
                Ty = int(input("Input a Ty value: "))
                matrix = BasicTranslate(Tx, Ty)
            elif command == 6:
                Sx = int(input("Input an Sx value: "))
                Sy = int(input("Input an Sy value: "))
                matrix = BasicScale(Sx, Sy)
            elif command == 7:
                angle = int(input("Input an Sx value: "))
                matrix = BasicRotation(angle)
            elif command == 8:
                Sx = int(input("Input an Sx value: "))
                Sy = int(input("Input an Sy value: "))
                Cx = int(input("Input a Cx value: "))
                Cy = int(input("Input a Cy value: "))
                matrix = Scale(Sx, Sy, Cx, Cy)
            elif command == 9:
                angle = int(input("Input an angle value: "))
                Cx = int(input("Input a Cx value: "))
                Cy = int(input("Input a Cy value: "))
                matrix = Rotate(angle, Cx, Cy)
            else:
                print("Not a valid command")

По сути, это всего лишь способ выбора пользователем функций из консоли. Функции работают по большей части, но проблема возникает, когда команда = 3. Она должна вызывать Displaypixels, которая является просто функцией добавления пикселей, необходимых в консоль. Затем я вызываю pygame.display.update () для обновления экрана, но ничего не происходит.

На экране написано Не отвечает. Я все еще могу продолжить программу через консоль, но ничего не работает. Возможно, я неправильно понял цель pygame.display.update ()?

Любая помощь или конструктивная критика очень ценится. Спасибо за ваше время.

1 Ответ

1 голос
/ 29 февраля 2020

Вы должны использовать pygame.event.get (), чтобы использовать мышь / любую клавишу из системы ..... иногда процесс уничтожения системы из-за зависания программы, так что вы также должны проверить отображение пикселей в системе

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