pygame.error: display Surface quit
В это коде:
import sys
import pygame
def run_Game():
# Инициализирует игру
pygame.init()
screen = pygame.display.set_mode(size=(1280, 800))
pygame.display.set_caption("Alien Invasion")
bg_color = (230, 230, 230)
# Основной цикл игры
while True:
# Отслеживание событий клавиатуры и мыши
for event in pygame.event.get():
if event.type == pygame.quit():
sys.exit()
screen.fill(bg_color)
pygame.display.flip()
run_Game()
строчка:
screen.fill(bg_color)
Выдает ошибку: pygame.error: display Surface quit
Но если её убрать, то:
pygame.display.flip()
Выдает ошибку: pygame.error: video system not initialized
Ответы (1 шт):
Ссылаясь на документацию, pygame.quit() - Отменяет инициализацию всех модулей pygame, которые были ранее инициализированы. В вашем же случае надо использовать pygame.QUIT. здесь документация событий.
Также, ссылаясь на документацию, вызов sys.exit() будет вызывать ошибку SystemExit, в случае pygame рекомендуется завести переменную run, и менять её значение. Такой подход будет чище и правильнее.
В итоге, ваш код должен выглядеть вот так:
import pygame
def run_Game():
# Инициализирует игру
pygame.init()
screen = pygame.display.set_mode(size=(1280, 800))
pygame.display.set_caption("Alien Invasion")
bg_color = (230, 230, 230)
run = True
# Основной цикл игры
while run:
# Отслеживание событий клавиатуры и мыши
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = not run
screen.fill(bg_color)
pygame.display.flip()
run_Game()
Если вы считаете, что вам не подходит этот вариант, вот решение с sys.exit:
import sys
import pygame
def run_Game():
# Инициализирует игру
pygame.init()
screen = pygame.display.set_mode(size=(1280, 800))
pygame.display.set_caption("Alien Invasion")
bg_color = (230, 230, 230)
# Основной цикл игры
while True:
# Отслеживание событий клавиатуры и мыши
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit(0)
screen.fill(bg_color)
pygame.display.flip()
run_Game()