pygame.erreur: système de vidéo n'est pas initialisé
Je ne semble pas capable de se débarrasser de cette erreur quand j'essaie d'exister le jeu. le jeu fonctionne bien mais seulement obtenir l'erreur quand j'essaie d'exister le jeu.
import pygame
from pygame import *
import random
import time
import os
import sys
from pygame.locals import *
black = (0,0,0)
white = (255,255,255)
pygame.init()
def game():
os.environ['SDL_VIDEO_CENTERED'] = '1'
mouse.set_visible(False)
#screen
screen_width = 800
screen_height = 500
screen = pygame.display.set_mode([screen_width,screen_height])
#load images etc.
backdrop = pygame.image.load('bg.jpg').convert_alpha()
menu = pygame.image.load('green.jpg').convert_alpha()
ballpic = pygame.image.load('ball.gif').convert_alpha()
mouseball = pygame.image.load('mouseball.gif').convert_alpha()
display.set_caption('Twerk')
back = pygame.Surface(screen.get_size())
def text(text,x_pos,color,font2=28):
tfont = pygame.font.Font(None, font2)
text=tfont.render(text, True, color)
textpos = text.get_rect(centerx=back.get_width()/2)
textpos.top = x_pos
screen.blit(text, textpos)
start = False
repeat = False
while start == False:
for event in pygame.event.get():
if event.type == pygame.QUIT:
start = True
#falling = True
#finish = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
start = True
#game over screen
screen.blit(menu,[0,0])
pygame.display.set_caption("TWERK")
#Text
#"Welcome to Escape"
#needs replacing with logo
text("Twerk",60,white,300)
#"Instructions"
text("Instructions",310,white)
text("----------------------------------------------------------------------------------------",320,white)
text("Avoid the the enemies",340,white)
text("Last as long as you can!",360,white)
text("Press space to start",420,white)
pygame.display.flip()
while start == True:
positionx=[]
positiony=[]
positionxmove=[]
positionymove=[]
falling = False
finish = False
score=0
enemies=4
velocity=1
for i in range(enemies):
positionx.append(random.randint(300,400)+random.randint(-300,200))
positiony.append(random.randint(200,340)+random.randint(-200,100))
positionxmove.append(random.randint(1,velocity))
positionymove.append(random.randint(1,velocity))
font = pygame.font.Font(None, 28)
text = font.render('Starting Twerk... ', True, (100,100,100))
textRect = text.get_rect()
textRect.centerx = screen.get_rect().centerx
textRect.centery = screen.get_rect().centery
screen.blit(backdrop, (0,0))
screen.blit(text, textRect)
pygame.display.update()
game=time.localtime()
while start == True:
end=time.localtime()
score= (end[1]-game[1])*3600 + (end[4]-game[4])*60 + end[5]-game[5]
if score > 1: break
first=True
strtTime=time.localtime()
while not finish or falling:
screen.blit(backdrop, (0,0))
for i in range(enemies):
screen.blit(ballpic,(positionx[i],positiony[i]))
(mousex,mousey)=mouse.get_pos()
screen.blit(mouseball,(mousex,mousey))
display.update()
strt = time.localtime()
if first:
while True:
end=time.localtime()
score= (end[3]-strt[3])*3600 + (end[4]-strt[4])*60 + end[5]-strt[5]
if score > 3: break
first = False
if falling:
for i in range(enemies):
positionymove[i]=1000
positionxmove[i]=0
for i in range(enemies): positionx[i]=positionx[i]+positionxmove[i]
for i in range(enemies): positiony[i]=min(600,positiony[i]+positionymove[i])
if falling:
falling=False
for posy in positiony:
if posy<600: falling=True
if not falling:
for i in range(enemies):
for j in range(i+1,enemies):
if abs(positionx[i]-positionx[j])<20 and abs(positiony[i]-positiony[j])<20:
temp=positionxmove[i]
positionxmove[i]=positionxmove[j]
positionxmove[j]=temp
temp=positionymove[i]
positionymove[i]=positionymove[j]
positionymove[j]=temp
for i in range(enemies):
if positionx[i]>600: positionxmove[i]*=-1
if positionx[i]<0: positionxmove[i]*=-1
if positiony[i]>440: positionymove[i]*=-1
if positiony[i]<0: positionymove[i]*=-1
for i in range(enemies):
if abs(positionx[i]-mousex)<40 and abs(positiony[i]-mousey)<40:
falling = True
finish = True
#start = False
endTime=time.localtime()
score= (endTime[3]-strtTime[3])*3600 + (endTime[4]-strtTime[4])*60 + endTime[5]-strtTime[5]
break
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
pygame.quit()
game()
C'est l'erreur que je reçois, j'ai changé quit() pour ARRÊTER, mais toujours pas de chance.
Traceback (most recent call last):
File "C:\Users\MO\Desktop\Twerk\ballbounce_changed.py", line 171, in <module>
game()
File "C:\Users\MO\Desktop\Twerk\ballbounce_changed.py", line 160, in game
for event in pygame.event.get():
pygame.error: video system not initialized
merci 🙂
- Double Possible de pygame.error: système de vidéo n'est pas initialisé
Vous devez vous connecter pour publier un commentaire.
Vous devez arrêter votre boucle principale lorsque vous voulez quitter le jeu.
Mes suggestions, soit de
exit()
aprèspygame.quit()
finish = True
etstart = False
(même si en raison de certaines indentation des problèmes avec votre collé de code, il n'est pas possible de dire que ce serait en fait le travail)Vous devriez appeler
pygame.quit()
uniquement lorsque vous souhaitez mettre fin à votre Python session.Ma suggestion: si vous voulez l'appeler
game()
plus d'une fois, par exemple dans une session interactive, vous devez supprimer l'appel àpygame.quit()
à l'intérieur degame()
. Cette fonction désinitialise pygame et, naturellement, toutes les tentatives de les appeler ses fonctionnalités échouera ensuite.start = False
? Vous devriez vraiment avoir un oeil sur l'indentation, votre indentation largeurs sont incompatibles. Cela peut être un mal, une source d'erreur. Probablement vous aussi mélanger onglet retraits et des espaces d'indentation? Surtout quand vous êtes de l'équipe-développement, c'est essentiel pour être compatible sur. Voir aussi PEP8Je pense que c'est parce que vous appelez pygame.quit() manuellement. Pygame auto-arrêter de lui-même, lorsque le script se termine.
De vérifier pygame est de fonctionner, vous pouvez exécuter ce passe-partout: http://ninmonkey.googlecode.com/hg/boilerplate/pygame/1.%20blank%20screen/1%20-%20basic.%20pygame%20--nocomments.py
Lorsque vous souhaitez arrêter de fumer, jeu de done=True. ( Voir la ligne 37 et de la ligne 64 dans l'exemple ci-dessus. )
Vous avez appelé pygame.quit(), mais je pense que vous devez également appeler sys.exit().
C'est ce que je fais dans tous mes jeux.
J'ai eu ce problème en essayant certaines Kivy fichiers de test à l'aide de Spyder. Dans mon cas, car je viens d'essayer la démo de fichiers, ce qui a rapidement travaillé était en train de redémarrer le noyau.
Je sais que c'est un bout de solution, mais si vous êtes sur un IDE et vous n'avez pas l'esprit de le faire, il est plus rapide que de taper les commandes.
Que vous pouvez faire :
et Il fonctionne très bien !