강의노트 pygame 시작하기

강의노트 • 조회수 678 • 댓글 0 • 수정 4일 전  
  • 파이게임
  • 파이게임

참고 도서 : "Python and Pygame" 장선호 지음 도서출판 그린.

pygame의 설치

Pygame을 설치하는 가장 좋은 방법은 pip 도구를 사용하는 것이다.

python3 -m pip install -U pygame --user

pygame이 잘 설치되었는지는 다음 예제의 작동 여부로 확인할 수 있다.

python3 -m pygame.examples.aliens

introduction

pygame의 개발은 2000년 10월에 시작되었으며 6개월 후에 pygame 버전 1.0이 출시되었다.

Pygame은 Python과 SDL(Simple DirectMedia Layer)을 결합한 게임 개발 모듈로, 다양한 플랫폼에서 실행될 수 있으며 게임 제작에 필요한 도형, 이벤트, 음악 등을 지원합니다. SDL은 그래픽, 사운드, 입력 장치에 접근할 수 있는 C 프레임워크이다.

파이게임 라이브러리

pygame modules overview

모듈 설명 모듈 설명
pygame 파이게임 패키지 camera 카메라 사용
color 색 표현 cursors 커서 제어
display 디스플레이 창 또는 화면 제어 draw 도형을 그리기
event 이벤트 및 이벤트 대기열 관리 font TrueType 글꼴 생성 및 렌더링
image 이미지 저장 및 로드 joystick 조이스틱 장치 관리
key 키보드 관리 mouse 마우스 관리
locals 파이게임의 상수 music 오디오 제어
sprite 게임 오브젝트 surface 이미지 표시
time 타이밍 제어 transform 이미지 크기 조정, 회전 및 뒤집기

pygame 모듈

모듈 설명 모듈 설명
pygame.init() 초기화 pygame.quit() 초기화 해제
pygame.error SDL 작업이 실패하는 경우 발생 pygame.vesion 버젼 확인
pygame.encode_string() 유니코드인 경우 인코딩, 바이트이면 변경되지 않은 상태로 반환 pygame.get_error() 오류 메세지 제공
pygame.get_init() 초기화되어 있는 경우 True 반환 pygame.get_sdl_byteorder() SDL라이브러리 순서 반환
pygame.get_sdl_version() SDL 라이브러리 버전 번호 반환 pygame.set_error() 오류 메세지 설정

camera 모듈

모듈 설명 모듈 설명
camera.Camera 카메라 로드 camera.Camera.get_controls() 설정된 제어값 반환
camera.Camera.get_image() 이미지를 RGB로 반환 camera.Camera.get_raw() 이미지를 기본 픽셀 형식의 문자열 반환
camera.Camera.get_size() 이미지 크기 반환 camera.Camera.query_image() 이미지를 가져올 준비 여부 반환
camera.Camera.set_controls() 카메라 설정 변경 camera.Camera.start() 이미지를 버퍼에 기록
camera.Camera.stop() 녹화 중지 camera.colorspace() 색 변환
camera.list_cameras() 카메라 목록 반환

color 모듈

모듈 설명 모듈 설명
Color.a 알파값 반환 Color.r 빨간색 값 반환
Color.g 녹색값 반환 Color.b 파란색 값 반환
Color.cmy CMY값 반환 Color.correct_gamma() 감마 값 적용
Color.hsla HSLA값 설정/ 반환 Color.hsva HSVA값 설정/반환
Color.i1i2i3 i1i2i3 값 설정/반환 Color.lerp() 색상에 선형보간 적용
Color.normalize() 색상에 표준화된 RGBA값 반환 Color.set_length() 색상 요소수를 설정

cursors 모듈

모듈 설명 모듈 설명
pygame.mouse.set_cursor 커서 설정(1) pygame.cursors.compile 문자열 커서 설정(2)

(1) pygame.cursors.[arrow, diamond, broken_x, tri_left, tri_right]
(2) pygame.cursors.[thickarrow_strings, sizer_x_strings, sizer_y_strings, sizer_xy_strings] [ ]안의 하나의 값을 선택한다.

display 모듈

모듈 설명 모듈 설명
display.init() 초기화 display.quit() 해제
display.set_mode() 표면 생성 display.set_caption() 제목 설정
display.flip() 전체 내용 업데이트 display.update() 화면 일부만 업데이트
display.get_active() 화면 활성화 display.get_caption() 창 제목 반환
display.get_driver() 화면 백엔드 이름 반환 display.get_init() 화면 모듈 초기화
display.get_num_displays() 화면 수 반환 display.get_surface() 창에 대한 참조 반환
display.get_window_size() 창크기 반환 display.get_wm_info() 창 정보 반환
display.gl_get_attribute() OpenGL 플래그 값 반환 display.gl_set_attribute() OpenGL 플래그 값 설정
display.iconify() 화면을 아이콘화 display.Info() 화면 정보 반환
display.list_modes() 화면 목록 반환 display.mode_ok() 색상 깊이 선택
display.set_icon() 런타임 아이콘 설정 display.set_palette() 색상 팔레트 변경
display.toggle_fullscreen() 화면 창 변경

draw 모듈

모듈 설명 모듈 설명
draw.aaline() 직선 표시 draw.aalines() 직선을 연속적으로 표시
draw.arc() 호 그리기 draw.circle() 원 그리기
draw.ellipse() 타원 그리기 draw.line() 직선 그리기
draw.lines() 연속적인 직선 그리기 draw.polygon() 다각형 그리기
draw.rect() 사각형 그리기

font 모듈

모듈 설명 모듈 설명
font.Font 폰트 객체 생성 font.init() 폰트 모듈 초기화
font.quit() 폰트 모듈 해제 font.SysFont() 시스템 폰트 객체 생성
font.Font.render() 폰트를 생성 font.Font.get_ascent() 폰트의 높이를 픽셀 단위로 반환
font.Font.set_bold() 폰트의 굵은 모드 세팅 font.Font.get_bold() 폰트가 굵은 모드면 참 반환
font.Font.get_descent() 글꼴 아래쪽까지의 픽셀 반환 font.Font.get_height() 폰트 높이의 픽셀 단위 반환
font.Font.set_italic() 폰트 기울임꼴로 설정 font.Font.get_italic() 폰트의 기울임꼴 모드이면 참 반환
font.Font.get_linesize() 직선 그리기 font.Font.get_underline() 문장의 높이를 픽셀로 반환
font.Font.metrics() 진행 오프셋이 포함된 투플 반환 font.Font.set_underline() 텍스트 밑줄을 표시
font.Font.size() 폰트 크기 반환 font.get_default_font() 시스템 글꼴 이름 반환
font.get_fonts() 사용 가능한 글꼴 목록 반환 font.get_init() 폰트 모듈 초기화 반환
font.match_font() 특정 글꼴의 전체 경로 반환

image 모듈

모듈 설명 모듈 설명
image.frombuffer() 버퍼로부터 새로운 표면 생성 image.fromstring() 문자열로부터 새로운 표면 생성
image.get_extended() 확장된 이미지 형식이면 True 반환 image.load() 이미지 로드
image.save() 이미지를 저장 image.tostring() 문자열 버퍼에서 이미지 전송

key 모듈

모듈 설명 모듈 설명
key.get_focused() 키보드 포커스가 있는 경우 참 반환 key.get_mods() 비트 마스크의 정수 반환
key.get_pressed() 키버튼이 눌린 경우 참 반환 key.get_repeat() 키 누르고 있는 경우 키 다운 이벤트가 반복적으로 발생하지 않음
key.name() 키보드 버튼 id 반환 key.set_mods() 눌린 키 설정
key.set_repeat() 여러개의 키눌림 이벤트 생성 key.set_text_input_rect() 입력에 사용되는 사각형 설정

locals 모듈

모듈 설명 모듈 설명

mouse 모듈

모듈 설명 모듈 설명
mouse.set_cursor() 마우스 커서 이미지 설정 mouse.get_cursor() 마우스 커서 이미지 반환
mouse.get_focused() 마우스 이벤트가 활성화된 경우 참 반환 mouse.set_pos() 마우스 위치 설정
mouse.get_pos() 마우스 위치 반환 mouse.get_pressed() 마우스 버튼 값 목록 반환
mouse.get_rel() 마우스 움직인 거리 반환 mouse.set_visible() 마우스 커서를 숨기거나 표시
mouse.get_visible() 마우스 커서의 보임 상태 반환

mixer.music 모듈

모듈 설명 모듈 설명
mixer.music.load() 음악 파일 객체 로드 mixer.music.play() 로드된 음악 재생 시작
mixer.music.stop() 음악 재생 중지 mixer.music.pause() 음악 재생 일시정지
mixer.music.unpause() 음악 재생 일시정지 해제 mixer.music.fadeout() 음악이 점점 줄어들다 재생 중지
mixer.music.get_busy() 재생중이면 참 반환 mixer.music.get_endevent() 음악 재생이 끝나면 이벤트 유형 반환
mixer.music.set_pos() 재생이 시작될 위치 설정 mixer.music.get_pos() 재생이 시작될 위치 반환
mixer.music.set_volume() 재생 볼륨 설정 mixer.music.get_volume() 재생 볼륨 반환
mixer.music.queue() 음악 파일을 로드하고 큐에 삽입 mixer.music.rewind() 현재 음악의 처음으로 재설정
mixer.music.unload() 음악을 언로드

Rect 모듈

모듈 설명 모듈 설명
Rect.clamp() 새로운 rect객체 반환 Rect.clamp_ip() 현 위치에서 클램프 메서드 실행
Rect.clip() rect객체에 들어가도록 새 rect객체 반환 Rect.collidedict() 호출하는 rect객체와 교차하는 키와 값을 반환
Rect.collidedictall() 호출 rect객체와 교차하는 모든 키와 값 목록 반환 Rect.collidelist() rect가 일련의 rect와 충돌한 첫번째 충돌 색인 반환
Rect.collidelistall() rect와 충돌하는 모든 인덱스 목록 반환 Rect.collidepoint() 점이 rect안이면 참 반환
Rect.colliderect() rect가 일부 겹치면 참 반환 Rect.contains() rect객체가 호출한 rect객체 내부에 포함되면 참 반환
Rect.copy() 원본과 같은 새로운 객체 반환 Rect.fit() 다른 rect객체에 맞춰 조정된 새로운 객체 반환
Rect.inflate() 객체 중심으로부터 확대/축소하여 새로운 객체 반환 Rect.inflate_ip() 현 위치에서 inflate메서드 실행
Rect.move() 지정된 오프셋 만큼 이동 Rect.move_ip() 현 위치에서 move메서드 실행
Rect.normalize() 값이 음수이면 뒤집어 표시 Rect.union() 두 rect객체의 영역을 덮는 새로운 객체 반환
Rect.unionall() 여러 rect를 모두 덮는 새로운 객체 반환 Rect.unionall_ip() 현 위치에서 unionall메서드 실행
Rect.union_ip() 현 위치에서 union메서드 실행

sprite 모듈

sprite : 더 큰 배경에 삽입되는 2D 그래픽 또는 애니메이션. 배경 데이터를 변경하지 않고 화면을 가로 질러 이동할 수 있는 캐릭터.

모듈 설명 모듈 설명
sprite.Sprite 게임 오브젝트의 기본 클래스 sprite.Group sprite객체의 컨테이너.
sprite.DirtySprite sprite의 서브 클래스 sprite.LayeredDirty DirtySprite객체를 위해 사용
sprite.LayeredUpdates 레이어를 처리하고 OrderedUpdates를 호출 sprite.RenderClear sprite.Group과 동일
sprite.RenderPlain sprite.Group과 동일 sprite.RenderUpdates sprite.Group의 파생 클래스
sprite.spritecollide() 스프라이트와 충돌하는 스프라이트 반환 sprite.spritecollideany() 스프라이트와 충돌하는 스프라이트 반환
sprite.collide_circle() 원을 사용하는 두 스프라이트 충돌 감지 sprite.collide_circle_ratio() 원을 사용하는 두 스프라이트 충돌 감지
sprite.groupcollide() 두 그룹에서 충돌하는 스프라이트 검색 sprite.GroupSingle()
sprite.GroupSingle() 스프라이트 한 개만 가지는 그룹 sprite.collide_mask() 마스크가 충돌한 첫번째 위치 반환
sprite.collide_rect() rect인 두 스프라이트 사이의 충돌 감지 sprite.collide_rect_ratio() 두 스프라이트 사이의 충돌 감지
sprite.OrderedUpdates() 스프라이트를 순서대로그린다
sprite.Sprite
모듈 설명 모듈 설명
.add() 스프라이트 추가 .alive() 스프라이트가 그룹에 속하는 경우 참 반환
.groups() 스프라이트를 포함하는 그룹 목록 반환 .kill() 모든 스프라이트 제거
.remove() 스프라이트 제거 .update()
sprite.Group
모듈 설명 모듈 설명
.add() 그룹에 스프라이트 추가 .clear() 스프라이트에 백그라운드 표시
.copy() 동일한 그룹 생성 .draw() 스프라이트를 표시
.empty() 그룹에서 스프라이트 제거 .has() 스프라이트 들이 그룹에 포함되면 참 반환
.remove() 그룹에서 스프라이트 제거 .sprites() 그룹의 스프라이트 목록 반환
.update() 스프라이트에서 updatea메서드 호출
sprite.LayeredDirty
모듈 설명 모듈 설명
.change_layer() 스프라이트 레이어 교체 .clear() 백그라운드 사용
.draw() 스프라이트 순서대로 그림 .get_clip() 그릴 영역을 자름
.repaint_rect() 영역을 다시 그림 .set_clip() 그릴 영역을 설정
.set_timing_treshold()
sprite.LayeredUpdates
모듈 설명 모듈 설명
.add() 그룹에 스프라이트 추가 .change_layer() 스프라이트 레이어 교체
.draw() 스프라이트를 순서대로 그림 .get_bottom_layer() 제일 아래에 있는 레이어 반환
.get_layer_of_sprite() 현 스프라이트 레이어 반환 .get_sprite() 그룹에서 해당 인덱스 스프라이트 반환
.get_sprites_at() 해당 위치의 스프라이트 목록 반환 .get_sprites_from_layer() 스프라이트를 추가한 순서대로 반환
.get_top_layer() 제일 위에 있는 레이어 반환 .get_top_sprite() 최상위 스프라이트 반환
.layers() 레이어 목록을 정렬하여 반환 .move_to_back() 스프라이트를 뒤 레이어로 이동
.move_to_front() 스프라이트를 앞 레이어로 이동 .remove_sprites_of_layer() 레어어에서 모든 스프라이트 제거
.sprites() 스프라이트 목록 반환 .switch_layer() 레이어 사이에서 스프라이트 교환
sprite.RenderUpdates
모듈 설명 모듈 설명
.draw() 스프라이트 이미지를 그림

surface 모듈

모듈 설명 모듈 설명
Surface.blit() 표면을 그려 표시 Surface.blits() 표면을 그려 표시
Surface.convert() 픽셀 형식을 교체하고 새 표면을 생성 Surface.convert_alpha() 알파를 포함한 이미지 픽셀 형식 변경
Surface.copy() 새로운 표면 생성 Surface.fill() 설정한 색으로 채워 표시
Surface.get_abs_offset() 하위 표면의 절대 위치 반환 Surface.get_abs_parent() 최상위 표면의 절대 위치 반환
Surface.get_alpha() 알파값 반환 Surface.get_at() RGBA 색상의 복사본 반환
Surface.get_at_mapped() 색상 값 반환 Surface.get_bitsize() 비트 심도 반환
Surface.get_bounding_rect() 사각형 영역 반환 Surface.get_buffer() 버퍼 객체 반환
Surface.get_bytesize() 픽셀의 바이트 반환 Surface.get_clip() 클리핑 영역 반환
Surface.get_colorkey() 색상키 반환 Surface.get_flags() 표면에서 사용된 플레그 반환
Surface.get_height() 표면의 높이 반환 Surface.get_locked() 현재 표면이 잠겨있으면 참 반환
Surface.get_locks() 표면 잠김 목록 반환 Surface.get_losses() 색상에서 제거
Surface.get_offset() 오프셋 위치 반환 Surface.get_palette() 8비트 색상 요소 목록 반환
Surface.get_palette_at() 표면 팔페트에서 색값 반환 Surface.get_parent() 부모 표면 반환
Surface.get_pitch() 표면의 각 행을 구분하는 바이트 수 반환 Surface.get_rect() 표면의 rect영역 반환
Surface.get_size() 표면 크기 반환 Surface.get_width() 표면 너비 반환
Surface.scroll 이미지를 제자리로 이동 Surface.set_clip 클리핑 영역 설정
Surface.set_palette() 8비트 색상 팔레트 설정

time 모듈

모듈 설명 모듈 설명
time.Clock 시간 객체 생성 time.Clock.get_fps() 프레이레이트 계산
time.Clock.get_rawtime() tick에서 실제 사용된 시간 반환 time.Clock.get_time() 두 tick사이의 시간 반환
time.Clock.tick() 이전 호출 이후의 경과 시간을 반환 time.delay() 시간동안 일시정지
time.get_ticks() 초기화 이후의 시간 반환 time.set_timer() 주어진 시간마다 이벤트 유형이 나타나도록 설정
time.wait() 일시 중지

transform 모듈

모듈 설명 모듈 설명
transform.average_color() 평균 color를 반환 transform.chop() 이미지 일부 추출
transform.flip() 화면을 수평/수직으로 뒤집기 transform.rotate() 이미지 회전
transform.rotozoom() 스케일과 회전 결합 transform.scale() 표면 크기 조정
첫 글입니다.
다음 글
댓글
댓글로 소통하세요.