#python #user-interface #console #pygame #frontend
#python #пользовательский интерфейс #консоль #pygame #интерфейс
Вопрос:
Я создаю текстовое приключение, и я хочу, чтобы в pyGame были анимации, иллюстрации и HUD!
Как я могу вставить эту консоль?
Спасибо!
Ответ №1:
Я почти уверен, что это невозможно. Если вам нужна консоль на экране Pygame, вам придется написать свою собственную или найти ту, что написана кем-то другим (напримерhttp://pygame.org/project-pygame-console-287-.html )
Комментарии:
1. . Реализовать базовую консоль намного проще, чем кажется
2. Не могли бы вы дать мне несколько примеров кода для реализации базовой консоли? Я пытаюсь использовать библиотеку pyGame-console, но, похоже, у меня проблемы с совместимостью с 3.1
3. Я никогда не пробовал внедрять консоль в Pygame — я предполагал, что это будет сложно. Но если Эли говорит, что это проще, чем кажется, я мог бы попробовать позже. Звучит как интересный проект.
Ответ №2:
Для вашей игры вы можете использовать subsurface для разных «разделов» экрана.
При использовании python 3x возникнут проблемы с несколькими библиотеками, которые не были предварительно скомпилированы для вас. Если вы можете, это упростит использование 2.7 или 2.6. (Есть двоичный файл python2.7, но его нет на главной странице)
Консоль не слишком сложна. Вам нужно разбить компоненты, решив, что вам нужно. Начните с минипроекта, реализуя функции по одной за раз.
- ввод с клавиатуры, вывод букв на консоль
- визуализация текста из строки
- вывод кэшированного текста. демонстрационный код появится позже, если вам интересно
dict()
строк для команд со значениями имен функций.- нарисуйте последние 10 строк текста
- вверх = прокрутить историю команд
- разрешить псевдонимы команд, такие как «n» и «north», будут указывать на move_north
- Реализуйте это с помощью класса: Command() . В котором хранится список всех псевдонимов.
команды = { «n»: move_north, «s»: move_south, «fps»: toggle_fps, «help»: print_help }
При вводе вызовите значение dict, если ключ существует:
if cmd in commands:
commands[cmd]()
# same as commands["n"]()
Вы могли бы даже заставить консоль print_help() использовать функцию docstrings.