| 1 | [[분류:Python]][[분류:라이브러리]][[분류:게임 개발 도구]] |
|---|
| 2 | [[https://www.pygame.org||공식 사이트.]] 공식 문서와 커뮤니티 등의 기능을 한다. |
|---|
| 3 | [목차] |
|---|
| 4 | == 개요 == |
|---|
| 5 | [[Python]]으로 작성 가능한 게임 등의 멀티미디어 표현을 위한 라이브러리이다. [[SDL]] 기반이다. 오픈 소스이자 무료 도구이며, Python을 돌릴 수 있는 플랫폼이라면 어디서든 실행할 수 있다. 게임 개발 도구이지만 이미지 프로세스 또는 조이스틱 입력, 음악 재생 등의 기능만 떼어다 쓸 수도 있다. |
|---|
| 1 | 6 | |
|---|
| 7 | 상징은 게임패드를 물고 있는 노란색 뱀이다. |
|---|
| 8 | |
|---|
| 9 | 비주얼 노벨 툴인 [[Ren'Py]] 또한 Pygame에 기반하고 있다. |
|---|
| 10 | |
|---|
| 11 | == 주요 모듈 == |
|---|
| 12 | === pygame === |
|---|
| 13 | pygame 모듈들을 사용하기 위해서는 pygame.init(), pygame.quit() 등으로 초기화, 종료를 시켜줘야 한다. |
|---|
| 14 | === sprite === |
|---|
| 15 | pygame.sprite.Sprite() 클래스로 [[스프라이트(컴퓨터 그래픽)|스프라이트]] 객체를 생성할 수 있다. sprite의 모음인 pygame.sprite.Group() 클래스로 스프라이트들을 효율적으로 관리할 수 있다. |
|---|
| 16 | |
|---|
| 17 | == 예제 == |
|---|
| 18 | === [[Hello, world!]] === |
|---|
| 19 | {{{#!syntax python |
|---|
| 20 | import pygame # pygame 모듈의 임포트 |
|---|
| 21 | import sys # 외장 모듈 |
|---|
| 22 | from pygame.locals import * # QUIT 등의 pygame 상수들을 로드한다. |
|---|
| 23 | |
|---|
| 24 | width = 600 # 상수 설정 |
|---|
| 25 | height = 400 |
|---|
| 26 | white = (255, 255, 255) |
|---|
| 27 | black = ( 0, 0, 0) |
|---|
| 28 | fps = 30 |
|---|
| 29 | |
|---|
| 30 | pygame.init() # 초기화 |
|---|
| 31 | |
|---|
| 32 | pygame.display.set_caption('Hello, world!') # 창 제목 설정 |
|---|
| 33 | displaysurf = pygame.display.set_mode((width, height), 0, 32) # 메인 디스플레이를 설정한다 |
|---|
| 34 | clock = pygame.time.Clock() # 시간 설정 |
|---|
| 35 | |
|---|
| 36 | gulimfont = pygame.font.SysFont('굴림', 70) # 서체 설정 |
|---|
| 37 | helloworld = gulimfont.render('Hello, world!', 1, black) |
|---|
| 38 | # .render() 함수에 내용과 안티앨리어싱, 색을 전달하여 글자 이미지 생성 |
|---|
| 39 | hellorect = helloworld.get_rect() # 생성한 이미지의 rect 객체를 가져온다 |
|---|
| 40 | hellorect.center = (width / 2, height / 2) # 해당 rect의 중앙을 화면 중앙에 맞춘다 |
|---|
| 41 | |
|---|
| 42 | while True: # 아래의 코드를 무한 반복한다. |
|---|
| 43 | for event in pygame.event.get(): # 발생한 입력 event 목록의 event마다 검사 |
|---|
| 44 | if event.type == QUIT: # event의 type이 QUIT에 해당할 경우 |
|---|
| 45 | pygame.quit() # pygame을 종료한다 |
|---|
| 46 | sys.exit() # 창을 닫는다 |
|---|
| 47 | displaysurf.fill(white) # displaysurf를 하얀색으로 채운다 |
|---|
| 48 | displaysurf.blit(helloworld, hellorect) # displaysurf의 hellorect의 위치에 helloworld를 뿌린다 |
|---|
| 49 | |
|---|
| 50 | pygame.display.update() # 화면을 업데이트한다 |
|---|
| 51 | clock.tick(fps) # 화면 표시 회수 설정만큼 루프의 간격을 둔다 |
|---|
| 52 | }}} |
|---|
| 53 | pygame 초기화, 기본 세팅과 디스플레이 상에 폰트를 렌더링하는 기초 예제이다. 결과는 아래와 같다. |
|---|
| 54 | |
|---|
| 55 | [[파일:pygamehell.png]] |
|---|
| 56 | |
|---|
| 57 | == 여담 == |
|---|
| 58 | |
|---|
| 59 | 한때, pygame 메인 화면에 아카이브 링크와 github 링크가 있고, 검정화면에 [[조지 플로이드 사망 사건|I can't breathe]]라고 적혀있던 적이 있었다.[[https://web.archive.org/web/20200602183220/https://www.pygame.org/news|아카이브 링크]] |
|---|