Полноэкранный режим Pygame Glitch - PullRequest
0 голосов
/ 04 июля 2018

Я только начинал новую игру с pygame на python 3.6.5 на ПК с Windows 10, когда у меня получился действительно сумасшедший сбой, который я не мог решить. Это мой код, позже я объясню свою проблему.

import pygame

pygame.init()

def create_window():
    window = pygame.display.set_mode((800,600),pygame.HWSURFACE|pygame.DOUBLEBUF|pygame.FULLSCREEN)


create_window()

isRunning = True

while isRunning:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.type == K_a:
                isRunning = False


pygame.quit()

Поэтому, когда я запускал этот код, pygame запускался как обычно, создавая полноэкранное черное окно. Потом появилась мышь и когда я нажал на клавишу А. Когда я сделал это, я не мог выйти из окна пигмея. Я зашел в диспетчер задач Control + Alt + Delete, и он показал мне рабочий стол. Графика стала менее реалистичной, а экран увеличился. Единственный выход - перейти к диспетчеру задач и завершить задачу python. Затем он вернулся к обычному рабочему столу. Я посмотрел на другой проект: выход в полноэкранном режиме Pygame Я попробовал это решение, но оно не сработало. Я продолжал пытаться найти решение для странного рабочего стола, но не смог. Буду признателен за помощь!

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Я обнаружил несколько проблем с вашим кодом. Вот несколько решений:

Первая проблема заключается в том, что вы используете event.type там, где вам нужно использовать event.key.

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        if event.type == pygame.K_a:
            isRunning = False

Второй event.type необходимо изменить на event.key.

Вторая проблема заключается в том, что K_a должен иметь префикс pygame., например:

if event.key == pygame.K_a:

Ваш рабочий стол выглядел нечетко, потому что приложение PyGame работало с разрешением 800x600, которое меньше, чем у большинства мониторов. Окно PyGame все еще было открыто, пока вы его не закрыли. Пока окно открыто, пользовательское разрешение остается.

Надеюсь, я вам помог!

0 голосов
/ 04 июля 2018

Вы получаете черный экран, потому что ничего не рисовали.

Код все еще выполняется в бесконечном цикле, поэтому вы должны завершить его в диспетчере задач.

Нажатие A не делает ничего , потому что ваш код не проверяет это правильно:

if event.type == K_a:

должно быть

if event.key == pygame.K_a:

Ваш рабочий стол странный, потому что вы заставили pygame изменить видеокарту на разрешение 800x600, а не на собственное разрешение рабочего стола

Все правильно, и код ведет себя так, как вы его написали.

Я запускаю код с указанным выше изменением, и он корректно завершается при нажатии A

...