2011-08-29 2 views
1

키를 치기 전까지는 백그라운드에서 수행하는 게임을 작성하려고하므로 동시에 다른 작업을하면서 입력을 기다리고 있습니다. 전에 이런 식으로 한 적이 없지만 해결책은 이벤트 처리와 관련이 있다고 들었습니다. "asyncore"라이브러리 또는 "signal"라이브러리 (Python) 중 하나를 사용하려고하는데 문서를 이해하지 못하고 기본 개념이 누락되었다고 생각합니다. 신호 처리를 사용하는 방법을 설명해 주시겠습니까? (아니면 내가 할 수있는 다른 것이 있습니까?)신호 처리는 어떻게 사용합니까?

고마워요!

답변

1

파이썬의 asyncore 라이브러리는 네트워크 통신용이며 signal 라이브러리는 타이머 용이고 operating system signals (키보드 입력과 관련 없음) 용입니다.

시작하려면 먼저 목적에 맞는 Python 게임 프로그래밍 라이브러리를 찾아야합니다.

게임 프로그래밍 라이브러리의 도움없이 키보드 입력처럼 간단하게 처리하려면 Win32 및 X11과 같은 원시 API를 사용해야합니다. 게임 프로그래밍 라이브러리를 사용하면 먼저 이벤트 및 백그라운드 작업에 대해 배울 수 있습니다.

+0

감사합니다. 나는 아래에 무엇이 있는지보고 싶었 기 때문에 그 일을 피하려고했습니다.하지만 그 때 시도 할 것입니다. –

+0

@badatmath : :) 일이 어떻게 작동하는지 알기를 원하는 데는 아무런 해가 없습니다. 나는 그 라인을 따라 몇 가지 여분의 노트를 추가했다. –

+0

오, 그 비참하게 들리 겠지만, 나는 다른 시스템에서 다른 일을해야 할거야. (정보 주셔서 감사합니다. –

1

파이썬에서 SDL을 지원하는 게임을 작성하려면 파이 게임 사용을 고려해야합니다.

SDL : Simple DirectMedia Layer는 오디오, 키보드, 마우스, 조이스틱, OpenGL을 통한 3D 하드웨어 및 2D 비디오 프레임 버퍼에 낮은 수준의 액세스를 제공하도록 설계된 크로스 플랫폼 멀티미디어 라이브러리입니다. [http://www.libsdl.org/]

파이 게임은 SDL과 파이썬 바인딩입니다 : http://www.pygame.org

을하지만 당신은 정말 어려운 방법을 수행하려는 경우, 당신은 멀티 패키지를 사용하는 것이 좋다고 생각합니다.

이유는 게임에 입력 (마우스, 키보드)을 분석하고 게임 화면을 업데이트하는 데 사용되는 기본 루프가 있어야하기 때문입니다. 이 프로세스는 너무 많은 오버 헤드가 없어야합니다. 그렇지 않으면 게임이 성능 저하의 징후를 보일 것입니다 ...

두 번째 프로세스는 백그라운드에서 다른 작업을 코드화하는 데 사용할 작업자 프로세스 여야합니다 ...

멀티 프로세싱 패키지는 당신이 당신의 게임을위한 프레임 워크 또는하지를 사용하는 경우에도 (파이프, 큐, 이벤트) ... http://docs.python.org/library/multiprocessing.html

, 결론하려면 프로세스 간 통신을 위해 당신에게 많은 선택을 제공합니다, 당신의 배경 물건에 있어야한다 당신의 게임의 메인 루프와 다른 프로세스. (파이썬에서 스레딩은 I/O를 많이 사용하는 경우에만 유용하기 때문에 현재 원하는 패키지가 아닙니다.)

+0

흥미 롭습니다, 도움 주셔서 감사합니다! –

+0

나는 어떤 종류의 도움이되고 행복 해요 ^^ – HexaGridBrain

관련 문제