Как мне использовать обработку сигналов? - PullRequest
1 голос
/ 30 августа 2011

Я пытаюсь написать игру, которая работает в фоновом режиме, пока вы не нажмете клавишу, поэтому она ждет ввода, одновременно делая другие вещи.Я никогда не делал ничего подобного раньше, но я слышал, что решение связано с обработкой событий.Я пытаюсь использовать библиотеку «asyncore» или библиотеку «signal» (Python), но я не понимаю документацию и думаю, что мне не хватает базовых понятий.Можете ли вы объяснить мне, как я могу использовать обработку сигналов?(Или, может быть, я еще что-нибудь могу сделать?)

Спасибо!

Ответы [ 2 ]

1 голос
/ 30 августа 2011

Если вы хотите написать игру на python с поддержкой SDL, вам следует рассмотреть возможность использования pygame.

SDL: Simple DirectMedia Layer - это кроссплатформенная мультимедийная библиотека, разработанная для обеспечения низкоуровневого доступа к аудио,клавиатура, мышь, джойстик, 3D-оборудование с помощью OpenGL и 2D видео кадровый буфер.[http://www.libsdl.org/]

Pygame - это привязки Python к SDL: http://www.pygame.org

Но если вы действительно хотите сделать это трудным путем, я думаю, что вы должны рассмотреть возможность использованиямногопроцессорный пакет.

Причина в том, что ваша игра должна иметь основной цикл, который используется для анализа входных данных (мышь, клавиатура) и обновления экрана вашей игры.Этот процесс не должен иметь слишком много накладных расходов, иначе игра покажет признаки низкой производительности ...

Второй процесс должен быть рабочим процессом, который вы хотите использовать для кодирования других ваших вещей в фоновом режиме ...

пакет многопроцессорности предоставляет вам множество вариантов межпроцессного взаимодействия (канал, очередь, событие) ... http://docs.python.org/library/multiprocessing.html

В заключение, даже если вы используете платформу или не используете ееВо время игры ваш фоновый материал должен проходить в другом процессе, чем основной цикл вашей игры.(Многопоточность в python хороша только для интенсивного использования ввода-вывода, поэтому сейчас это не тот пакет, который вам нужен).

1 голос
/ 30 августа 2011

Библиотека Python's asyncore предназначена для сетевого взаимодействия, а библиотека signal используется для таймеров и сигналов операционной системы (не относится к вводу с клавиатуры).

Для начала вы должны найти библиотеку программирования игр Python, которая соответствует вашим целям.

Если вы хотите сделать что-то столь же простое, как ввод с клавиатуры, без помощи библиотеки программирования игр, вам быстро придется использовать нативные API, такие как Win32 и X11. Используя библиотеку программирования игр, вы получите возможность сначала узнать о событиях и фоновых задачах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...