2016-06-17 8 views
0

Ok, also habe ich dieses Spiel Schlange, die ich mit Pygame gemacht ist sehr einfach und es funktioniert, aber ich habe ein Login-Programm, das ich brauche das Spiel aus und wann immer ich es versuche um das Spiel zu schließen, bekomme ich einen Fehler, der so aussieht. Die Sache ist, dass wenn ich sys.exit() nach dem pygame.exit() in den snake Code einfüge, mein Login-Programm schließt und einfach ein leeres Python-Fenster startet:Pygame Fehler: Video System nicht initialisiert stecken in Spiel Schleife

Traceback (most recent call last): 
    File "C:\Users\test\Desktop\Summative\LukaLogin.py", line 119, in Snake 
    snake = snakeSummative.main()   
    File "C:\Users\test\Desktop\Summative\snakeSummative.py", line 178, in main 
    playAgain(final) 
    File "C:\Users\test\Desktop\Summative\snakeSummative.py", line 161, in playAgain 
    for event in pygame.event.get(): 
pygame.error: video system not initialized 

Snake-Spiel:

def playAgain(final): 
    gameDisplay.fill(WHITE) 
    username = 'luka' 
    message_to_screen("Game Over, press c to play again press q to quit", RED) 
    message_to_screen1(str(final),GREEN) 
    file = open('Scores.txt','a') 
    file.write(username + ' ' + 'Snake' + ' ' + str(final) + ' ' + '\n') 
    pygame.display.update() 
    while True: 
     for event in pygame.event.get(): 
       if event.type == pygame.QUIT: 
        pygame.quit() 
       if event.type == pygame.KEYDOWN: 
        if event.key == pygame.K_c: 
         score = 0 
         return True 
        if event.key == pygame.K_q: 
         pygame.quit() 
         break    
def main(): 
    while True: 
     final = gameLoop() 
     playAgain(final) 
    pygame.quit() 
    quit() 

if __name__ == '__main__': 
    main() 

Anmeldung def, die die Schlange Spiel ruft:

class GameHub(QtGui.QMainWindow,Ui_GameHub): 
    def __init__ (self): 
     QtGui.QMainWindow.__init__(self) 
     self.setupUi(self) 
     self.play_BlackJack.clicked.connect(self.BlackJack) 
     self.play_Snake.clicked.connect(self.Snake) 
     self.play_Scores.clicked.connect(self.HighScores) 
     self.play_Logout.clicked.connect(self.LogOut) 
    def Snake(self): 
     import snakeSummative 
     snake = snakeSummative.main() 

Jede Hilfe wirklich ratlos zu würde apreciated im so, warum ich den Fehler, obwohl ich die Schleife

Antwort

0
brechen

Sie pygame sind verlassen und dann zu versuchen, um es wieder zu verwenden:

if event.key == pygame.K_q: 
    pygame.quit() 
    break 

dies beendet pygame dann bricht die while-Schleife um ihn herum, dann wird Funktion aufgerufen wieder in main() aber diesmal pygame verlassen wurde. Sie müssen die äußere Schleife aufbrechen, um das Spiel zu beenden, was nie gemacht wird.

Ich denke, das ist das Verhalten, für das Sie waren, hoffe, dass dies hilft.

0

Ich denke, This könnte Ihre Frage beantworten.

Stellen Sie sicher, dass Sie pygame.init() aufgerufen haben, bevor Sie das Spielprogramm starten.

+0

Warum postest du das als Antwort? Ich habe es bereits als Duplikat markiert. –

+0

Habe es @LPK nicht bemerkt –