2016-09-03 3 views
0

У меня есть небольшая аркадная игра на питон, которую я конвертировал в автономный .exe с помощью pyInstaller. Он отлично работает с pygame, но проблема в том, что я использую pickle для сохранения рекордов. Первоначально я использовал cmd для ввода пользователем, поэтому в cmd он сказал бы «Пожалуйста, введите свое имя», и все, что вы набрали, будет храниться в отдельном файле с использованием pickle. Две проблемы: я не могу использовать cmd в автономном .exe (и он выглядит уродливым в любом случае), и когда я храню его в отдельном файле с рассолом, я не думаю, что он включен в автономный. Я говорю «думаю», потому что код никогда не проделывает мимо раздела пользовательского ввода.Получение пользовательского ввода на экран в pygame и его сохранение

Как я могу получить ввод пользователя для отображения на экране (в моем собственном шрифте и местоположении), а не в cmd?

и

Как я могу включить пользовательский ввод файла (который хранится с рассол) должны быть включены в EXE-файл?

Это то, что я в настоящее время (все в пределах основного контура):

if lives == 0: 
    username = input("Please type your name: ") 
    highscore = {username: points} 
    try: 
     with open("C:/Python35/highscore.txt", "rb") as highscoreBest: 
      highscoreBest = pickle.load(highscoreBest) 

    except EOFError: 
     with open("C:/Python35/highscore.txt", "wb") as highscoreBest: 
      pickle.dump(highscore, highscoreBest) 

    for (k, v), (k2, v2) in zip(highscore.items(), highscoreBest.items()): 
     if v >= v2: 
      with open("C:/Python35/highscore.txt", "wb") as highscoreBest: 
       pickle.dump(highscore, highscoreBest) 

    with open("C:/Python35/highscore.txt", "rb") as highscoreBest: 
     highscoreBest = pickle.load(highscoreBest) 

    for key, value in highscoreBest.items(): 
     print("%s has the highscore of %s!" % (key, value)) 
     highscoreText = highscorefont.render("Highscore %s" % (value), 1, textcolor) 

    gameOverText = font.render("GAME OVER", 1, textcolor) 
    scoreText = font.render("Score %s" % (points), 1, textcolor) 

    while 1: 
     screen.blit(gameOverText, (200, 400)) 
     screen.blit(scoreText, (225, 450)) 
     screen.blit(highscoreText, (235,500)) 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: sys.exit() 
     pygame.display.flip() 
     time.sleep(1) 

Спасибо всем, кто ответил.

ответ

0

похоже, что вы хотите иметь графический интерфейс в своей игре. Прочтите это http://www.pygame.org/wiki/gui, это должно вам помочь.

Например,

OcempGUI 

Links 

Home Page: http://ocemp.sourceforge.net/gui.html 
Source:  http://sourceforge.net/project/showfiles.php?group_id=100329&package_id=149654 
Installation http://ocemp.sourceforge.net/manual/installation.html 

Что касается текстового файла для рекордов можно включить в комплект поставки вместе с исполняемым файлом, см https://pythonhosted.org/PyInstaller/spec-files.html#adding-files-to-the-bundle

Adding Data Files 
To have data files included in the bundle, provide a list that describes the files as the value of the datas= argument to Analysis. The list of data files is a list of tuples. Each tuple has two values, both of which must be strings: 

The first string specifies the file or files as they are in this system now. 
The second specifies the name of the folder to contain the files at run-time. 
For example, to add a single README file to the top level of a one-folder app, you could modify the spec file as follows: 

a = Analysis(... 
    datas=[ ('src/README.txt', '.') ], 
    ... 
    ) 
You have made the datas= argument a one-item list. The item is a tuple in which the first string says the existing file is src/README.txt. That file will be looked up (relative to the location of the spec file) and copied into the top level of the bundled app. 
+0

Я знаю, что я могу связать его с ехе, но Я не знаю, как это сделать с pyInstaller, поскольку он автоматически связывает файлы, которые мне нужны, поэтому я не знаю, как их вручную добавить. Кроме того, я не знаю, как установить любую из этих «GUI-библиотек». Не могли бы Вы уточнить? –

+0

только что обновил мои предложения – sr3z

+0

Спасибо, это было очень полезно, но что мне делать с файлом '.gz', который я загрузил для OcempGUI? Все опции «extract» выделены серым цветом. –

Смежные вопросы