Pygame错误:视频系统未初始化卡在游戏循环中

时间:2016-06-17 00:30:30

标签: python windows python-2.7 pyqt pygame

好吧所以我有这个蛇游戏,我使用pygame非常基本,它的工作,但我创建了一个登录程序,我需要从游戏中解决,每当我尝试关闭游戏时,我得到的错误看起来像这就是当我尝试在python中使用pygame.exit()之后的sys.exit()时,我的登录程序关闭并运行一个空白的python窗口:

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()

蛇游戏

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()  

登录def调用蛇游戏:

lastView.setTranslationZ(-10);

任何帮助都会让我感到非常难过,因为即使我打破了循环,我仍然会收到错误

2 个答案:

答案 0 :(得分:0)

您正在退出pygame,然后再次尝试使用它:

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

退出pygame然后打破围绕它的while循环,然后在main()中再次调用函数,但这次pygame已经退出。你需要打破外循环才能退出永远不会完成的游戏。

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:
                    return False
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_c:
                        score = 0
                        return True
                    if event.key == pygame.K_q:
                        return False         
def main():
    while True:
        final = gameLoop()
        if not playAgain(final): break
    pygame.quit()

if __name__ == '__main__':
    main()

我认为这是你想要的行为,希望这会有所帮助。

答案 1 :(得分:0)

我猜This可能会回答你的问题。

确保在开始游戏程序之前调用pygame.init()