본문 바로가기

Python/Library

[Python][Library] pygame

 

 

 

pygame : 2D 게임 개발을 위한 python 라이브러리. SDL 기반으로 크로스-플랫폼이라 이식이 쉬우며 (python 을 돌릴 수 있는 플랫폼이라면 어디서든 실행 가능), 게임 개발이 아니라도 이미즈 프로세스, 조이스틱 입력 음악 재생 등의 기능을 떼어다 쓰기도 한다.
출처 : https://www.pygame.org/docs/

 

 

■ pygame 상위 패키지

>> init

  • Purpose :  import 된 모든 pygame 모듈 initialize
  • Signature : init()
  • Parameters : 
  • return : (numpass, numfail)
    Variables Type Description
    numpass  int 모듈 초기화 성공횟수
    numfail int 모듈 초기화 실패횟수
  • 모듈을 초기화하다가 실패했다고 해서 예외가 발생하지는 않는다. 단지 실패횟수만 반환한다.

 

>> quit

  • Purpose : pygame 모듈 initialize 해제(uninitialize)
  • Signature : quit()
  • Parameters :
  • return : 
  • python 인터프리터가 종료 될때 이 메소드는 자동으로 호출 되지만, 만약 pygame 을 종료 후 다른것을 진행해야 한다면 호출 해주어야 한다.

 

 

 

display

>> set_mode

  • Purpose : display 할 window 또는 screen 을 initialize 함.
  • Signature : set_mode(size=(width, height), flags=, depth=0, display=0, vsync=0)
  • Parameters :
    Variables Type Optional defaults Description
    size tuple full-
    screen
    화면 크기, (width, height) 순으로 입력
    flags   full-
    screen
    추가 옵션 모음, | (파이프 문자)를 사용하여 여러 옵션 결합하여 사용 가능
    depth int fit to pc 색상에 사용할 비트 수
    - 일반적으로 명시 하지 않음. 명시하지 않으면 system 에 최적화된 비트 수를 자동으로 셋팅함.
    display int 0 display 옵션. 0은 pygame이 실행되는 시스템의 기본 display를 의미한다.
    vsync int 0 1로 셋팅시 vertical sync된 display 생성.
    하지만 실행되는 시스템 하드웨어와 드러이버 구성에 따라 실행되지 않을 수 있음.
    flags값에 pygame.OPENGL 또는 pygame.SCALED 설정되어야만 작동함.
  • return :
    Variables Type Description
    Surface Surface 셋팅한 옵션 값에 맞는 Surface 반환
  • flags 옵션
    Signature Description
    pygame.FULLSCREEN  
    pygame.DOUBLEBUF  
    pygame.HWSURFACE  
    pygame.OPENGL  
    pygame.RESIZABLE  
    pygame.NOFRAME  
    pygame.SCALED  
    pygame.SHOWN  
    pygame.HIDDEN  

 

>> set_caption

  • Purpose : 가장 최근에 생성된 window의 caption 셋팅
  • Signature : set_caption(title, icontitle=None)
  • Parameters :
    Variables Type Optional defaults Description
    title str X   caption 내용
    icontitle   None icon title

>> flip

  • Purpose :  전체 display Surface를 화면에 업데이트 한다.
  • Signature : flip()
  • Parameters : 
  • return :
  • display의 flags가 특정 모드로 셋팅 되어 있을때를 제외하고 단순 업데이트를 진행 한다. 만약, flags가 HWSURFACE 와 DOUBLEBUF로 셋팅 되어 있다면 Vertical Retrace를 기다렸다가 Surface를 swap(교체) 한다. flags가 OPENGL 이라면 GL의 Buffer Swap 을 실행 한다.

 

 

 

time

>> Clock

  • Purpose : 시간을 추적할 수 있는(time tracking) 할 수 일도록 해주는 Clock 객체 생성
  • Signature : Clock()
  • Parameters :
  • return :
    Variables Type Description
    Clock Clock Clock 객체
  • 아래 Clock 객체의 함수의 상세 사항은 아래 clock 태그 참조

 

clock

>> tick

  • Purpose : Clock 객체 업데이트. 보통 한 프레임에서 다음 프레임을 호출할때 몇 밀리초가 경과했는지 계산할 때 사용됩니다.
  • Signature : tick(framerate=0)
  • Parameters :
    Variables Type Optional defaults Description
    framerate int None  값을 지정할 경우 초당 주어진 틱보다 느리게 실행되도록 합니다. 인수로 들어온 정수 만큼 초당 실행 될수 있는 프레임 수를 제한 합니다.
    ex) tick(40) -> 1초당 40프레임 이하로 실행
  • return :
    Variables Type Description
    milliseconds int 이전 호출 이후 경과된 밀리초 반환

 

>> get_fps

  • Purpose : clock 객체의 프레임 속도를 계산하여 반환합니다.
  • Signature : get_fps()
  • Parameters :
  • return :
    Variables Type Description
    fps float tick()의 마지막 10개의 호출을 평균하여 계산된 초당 프레임 수를 반환합니다.

 

 

 

event

  pygame에서는 event que를 통해 모든 event를 메시징 처리하는데 이 대기열을 관리하는데 도움이 되는 모듈이 아래에 있는 모듈 들이다. event que는 보유할 수 있는 event 수에 대하 제한이 있고 표준 SDL 1.2 기준으로 128개라고 한다.

>> Event Type

  • Purpose :  pygame에서 지원하는 Event type.
  • Variables:
    Signature Description
    QUIT  
    ACTIVEEVENT  
    KEYDOWN  
    KEYUP  
    MOUSEMOTION  
    MOUSEBUTTONUP  
    MOUSEBUTTONDOWN  
    JOYAXISMOTION  
    JOYBALLMOTION  
    JOYHATMOTION
     
    JOYBUTTONUP  
    JOYBUTTONDOWN  
    VIDEORESIZE  
    VIDEOEXPOSE  
    USEREVENT
     
  • pygame 버전에 따라 event는 추가/삭제 될 수 있다.

 

>> pump

  • Purpose :  내부적으로 파이게임 이벤트 핸들러를 처리한다. system에서는 너무 오랫동안 event que 를 호출 하지 않으면 프로그램이 잠겼다고 판단하는데 이를 방지하기 위해 내부적으로 
  • Signature : pump()
  • Parameters : 
  • return :
  • system에서는 너무 오랫동안 event que 를 호출 하지 않으면(상호작용하지 않으면) 프로그램이 잠겼다고 판단하는데 이를 방지하기 위해 내부적으로 기본 창을 다시 업데이트 하거나 system에 응답해주는 일을 한다.
  • event를 일관적으로 계속 처리할 경우 해당 함수를 호출 할 필요는 없다.
  • 이 함수는 pygame.display로 initialize된 스레드 안에서 호출되어야 한다.

 

>> get

  • Purpose : 큐(대기열)에서 event를 가져와 리스트 형태로 반환하고 가져온 이벤트는 큐에서 삭제한다.
  • Signature : get(eventtype=None, pump=True)
  • Parameters :
    Variables Type Optional defaults Description
    eventtype event
    -Type
    None 값을 지정하지 않으면 현재 큐에 쌓인 모든 event를 가져온다. 하지만 값을 지정하면 해당하는 event만 반환된다.
    * event를 지정하여 가져 올때의 주의할 점은 사용하지 않는 event는 삭제 되지 못하고 que에 남아 있다는 것이다.
    pump bool False True를 지정할 경우 pump() 가 자동으로 호출 된다.
  • return :
    Variables Type Description
    EventList list
    [Event]
    현재 event que 에 쌓인 이벤트들을 리스트 형태로 반환 한다.

 

 

'Python > Library' 카테고리의 다른 글

[Python][Library] pyopengl  (0) 2021.10.10
[Python][Library] Intro  (0) 2021.10.10