Перейти к содержимому

Video system not initialized pygame что делать

  • автор:

В программе, написанной с помощью Pygame, вылезает ошибка ‘pygame.error: video system not initialized’ и чёрный экран при запуске

Моя первая игра, точнее, её первоначальный вид (без особо красивых иконок, аватаров, фонов и предметов), была почти готова, и прекрасно запускалась, пока я не захотел добавить стартовое меню, в котором можно будет изменять параметры игры и, собственно, запускать её кнопкой ‘Start’. Однако, после нескольких изменений, неправленных на появление меню, оказалось, что у меня какие-то проблемы с int game() и чёрный экран. Я удалил ранее внесённые изменения и попытался запустить игру без меню, какой она первоначально и была, но чёрный экран всё равно преследовал меня, а его закадычным другом стал он:

Traceback (most recent call last): File "C:\Users\olive\AppData\Local\Temp\main.py\debug.py", line 40, in keys = pygame.key.get_pressed() pygame.error: video system not initialized 

Утомлённый поиском ответов на зарубежных и местных форумах, я решил обратиться к обитателям русского СтакОвера. Очень надеюсь на вашу помощь. Вот, собственно, и сам код (который я сжал как только мог):

Import pygame, sys pygame.init() pygame.font.init() window = pygame.display.set_mode((1000, 690)) screen = pygame.Surface((1000, 690)) player = pygame.Surface((60, 60)) zet = pygame.Surface((60, 60)) arrow = pygame.Surface((20, 40)) count = 0 a_x = 1000 a_y = 1000 strike = False z_x = 0 z_y = 0 x_p = 0 y_p = 640 z_right = True done = False while done == False: for e in pygame.event.get(): if e.type == pygame.QUIT: pygame.quit() done = True keys = pygame.key.get_pressed() #ошибка здесь if keys[pygame.K_w]: y_p -= 5 if keys[pygame.K_s]: y_p += 5 if keys[pygame.K_a]: x_p -= 5 if keys[pygame.K_d]: x_p += 5 if e.type == pygame.KEYDOWN and e.key == pygame.K_SPACE: if strike == False: strike = True a_x = x_p a_y = y_p - 40 if strike: a_y -= 1.5 if a_y < 0: strike = False a_y = 1000 a_x = 1000 if inter(a_x, a_y, z_x, z_y, 20, 40): count += 1 strike = False a_y = 1000 a_x = 1000 if z_right: z_x += 1 if z_x >960: z_x -=1 z_right = False else: z_x -=1 if z_x < 0: z_x += 1 z_right = True string = myfont.render('Счёт: '+str(count), 0, (255,0,0)) screen.fill((0,225,0)) screen.blit(string, (0, 430)) screen.blit(arrow, (a_x, a_y)) screen.blit(zet, (z_x, z_y)) screen.blit(player, (x_p, y_p)) window.blit(screen, (0, 0)) pygame.display.update() pygame.quit() exit() 

Кстати говоря, я не уверен, что обошёл все вопросы на форумах и ответы на них, которые мог, так что какое-то решение мог упустить. Так что, я не отрицаю, что мой вопрос может быть похож на остальные на этом сайте, не сочтите за копипасту или флуд.

Как исправить &quot;pygame.error: video system not initialized&quot;?

Но при его включении показывается просто черный экран, а когда я закрываю приложение вылазит ошибка:

Traceback (most recent call last): File "***", line 17, in keys = pygame.key.get_pressed() pygame.error: video system not initialized

Как исправить?

  • Вопрос задан более года назад
  • 168 просмотров

1 комментарий

Средний 1 комментарий

DMITRY1234455 @DMITRY1234455

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

rungame = True while rungame: for event in pygame.event.get(): if event.type == pygame.QUIT: rungame = False

а pygame.quit() писать в конце программы. И ещё мне кажется надо попробовать изменить систему кнопок на такую:

elif e.type == pygame.KEYDOWN: if e.key == pygame.K_LEFT: x -= speed elif e.key == pygame.K_RIGHT x += speed

вот код который можно попытаться изменить:

import pygame from pygame.color import THECOLORS pygame.init() screen = pygame.display.set_mode((1200, 820)) screen.fill(THECOLORS["green"]) player_image = pygame.image.load("game_file/Pers_right.png") x = 500 y = 500 speed = 5 while rungame: for event in pygame.event.get(): if event.type == pygame.QUIT: rungame = False elif e.type == pygame.KEYDOWN: if e.key == pygame.K_LEFT: x -= speed elif e.key == pygame.K_RIGHT x += speed screen.blit(player_image, (500, 500)) pygame.quit()

python ошибка :pygame.error: video system not initialized что не так с кодом ?

import pygame
###########values########
pygame.init()
winx = 1200
winy =750
gameon = True
heroex = 50
heroey = 50
weight = 40
height = 40
speed = 5
win= pygame.display.set_mode((winx,winy))
pygame.display.set_caption("Game")
#pygame.mouse.get_pos(heroex, heroey)

#######main########
while gameon:
pygame.time.delay(100)
for event in pygame.event.get():
if event.type == pygame.quit():
gameon == False

Лучший ответ

1. Ты хочешь проверить, что произошло событие выхода (event.type == pygame.QUIT), а вместо этого вызываешь функцию pygame.quit(), которая выходит из твоей программы.
2. Ты хочешь присвоить (=) переменной gameon значение False, а вместо этого, просто делаешь сравнение (==)
Исправленный вариант: [ссылка заблокирована по решению администрации проекта]

3. Тебе на самом деле не нужна переменная gameon, можно просто сделать бесконечный цикл, и выходить из него при получении эвента.
Почищенный вариант: [ссылка заблокирована по решению администрации проекта]

pygame.error: video system not initialized

See the basic Intro tutorial, or the specific Import and Initialize tutorial, which explains:

Before you can do much with pygame, you will need to initialize it. The most common way to do this is just make one call.

pygame.init() 

This will attempt to initialize all the pygame modules for you. Not all pygame modules need to be initialized, but this will automatically initialize the ones that do. You can also easily initialize each pygame module by hand. For example to only initialize the font module you would just call.

In your particular case, it's probably pygame.display that's complaining that you called either its set_caption or its flip without calling its init first. But really, as the tutorial says, it's better to just init everything at the top than to try to figure out exactly what needs to be initialized when.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *