HOME > Detail View

Detail View

Python(파이썬)과 Pygame(파이게임)으로 게임 만들기 (Loan 18 times)

Material type
단행본
Personal Author
Sweigart, Al 김세희, 역
Title Statement
Python(파이썬)과 Pygame(파이게임)으로 게임 만들기 / 알 슈베이가르트 지음 ; 김세희 옮김
Publication, Distribution, etc
서울 :   정보문화사,   2014  
Physical Medium
428 p. : 삽화 ; 24 cm
Varied Title
Making games with Python & Pygame : a guide to programming with graphics, animation, and sound
ISBN
9788956746159
General Note
그래픽, 애니메이션, 사운드 프로그래밍 가이드  
색인수록  
000 00000cam c2200205 c 4500
001 000045856640
005 20160105141802
007 ta
008 160105s2014 ulka 001c kor
020 ▼a 9788956746159 ▼g 13000
035 ▼a (KERIS)BIB000013523217
040 ▼a 211048 ▼c 211048 ▼d 211048 ▼d 211009
041 1 ▼a kor ▼h eng
082 0 4 ▼a 005.133 ▼2 23
085 ▼a 005.133 ▼2 DDCK
090 ▼a 005.133 ▼b P999 2015z8
100 1 ▼a Sweigart, Al
245 1 0 ▼a Python(파이썬)과 Pygame(파이게임)으로 게임 만들기 / ▼d 알 슈베이가르트 지음 ; ▼e 김세희 옮김
246 1 9 ▼a Making games with Python & Pygame : ▼b a guide to programming with graphics, animation, and sound
246 3 ▼a Python과 Pygame으로 게임 만들기
246 3 ▼a 파이썬과 파이게임으로 게임 만들기
246 3 9 ▼a Making games with Python and Pygame : ▼b guide to programming with graphics, animation, and sound
260 ▼a 서울 : ▼b 정보문화사, ▼c 2014
300 ▼a 428 p. : ▼b 삽화 ; ▼c 24 cm
500 ▼a 그래픽, 애니메이션, 사운드 프로그래밍 가이드
500 ▼a 색인수록
700 1 ▼a 김세희, ▼e
900 1 0 ▼a 슈베이가르트, 알, ▼e
945 ▼a KLPA

Holdings Information

No. Location Call Number Accession No. Availability Due Date Make a Reservation Service
No. 1 Location Science & Engineering Library/Sci-Info(Stacks1)/ Call Number 005.133 P999 2015z8 Accession No. 121235201 Availability Available Due Date Make a Reservation Service B M

Contents information

Book Introduction

Pygame 프레임워크(Pygame 라이브러리)와 Python 프로그래밍 언어를 사용하여 그래픽 컴퓨터 게임을 만드는 방법에 대해 다루고 있다. 중급 프로그래머 이상을 대상으로 하고 있지만, Python은 배우기에 그리 어렵지 않은 언어이므로 책에 나오는 소스 코드 예제를 천천히 따라해 보면 누구나 쉽게 이해할 수 있다.

책의 초반부에 Python과 Pygame의 설치 방법부터 Pygame의 기초적인 내용까지 자세히 설명해 놓았기 때문에 Pygame에 대해 전문적으로 배울 수 있는 기회를 제공하고 있다. 또한 3장부터 5장까지는 간단한 게임 소스 코드를 바탕으로 게임 개발의 기본이 되는 내용들을 독자들이 알기 쉽게 하나하나씩 상세하고 친절하게 알려주고 있다.

6장부터 10장까지는 좀 더 복잡한 게임을 다루면서 다양한 그래픽 효과와 알고리즘에 대해 심도 있게 설명하고 있다. 이 책은 독자의 이해도를 높이기 위해 지루한 이론을 설명하는 대신 예제를 제공하고 소스 코드를 자세하게 설명함으로써 게임 개발 방법을 쉽게 기술하고 있다.

“ Python과 Pygame으로 그래픽 게임에 도전해 보자.”
이 책은 Pygame 프레임워크(Pygame 라이브러리)와 Python 프로그래밍 언어를 사용하여 그래픽 컴퓨터 게임을 만드는 방법에 대해 다루고 있다. 중급 프로그래머 이상을 대상으로 하고 있지만, Python은 배우기에 그리 어렵지 않은 언어이므로 책에 나오는 소스 코드 예제를 천천히 따라해 보면 누구나 쉽게 이해할 수 있다.

기존에 출간된 Python 관련 도서들이 대부분 기본 입문 내용이나 웹 프로그래밍 관련 내용들을 다루고 있는데 반해 이 책은 유일하게 Pygame 라이브러리에 대한 소개와 함께 2D 그래픽 게임을 만드는 방법에 대해 설명하고 있다. 저자가 직접 만든 게임 소스 코드 전체를 수록해 놓았으며, 코드가 어떻게 작동하는지 설명하고 있기 때문에 실제 게임 프로그램에서 Pygame 라이브러리를 어떻게 이용하는지 쉽게 알 수 있다.

독자 타깃b
Python을 이용한 게임 개발을 처음 배우려는 독자
Pygame을 배우고 싶어 하는 독자
2D 그래픽 PC 게임 개발에 관심 있는 독자

구성 특징
Pygame에 대한 상세한 설명 책의 초반부에 Python과 Pygame의 설치 방법부터 Pygame의 기초적인 내용까지 자세히 설명해 놓았기 때문에 Pygame에 대해 전문적으로 배울 수 있는 기회를 제공하고 있다.

● 이해하기 쉬운 단계별 게임 소스 설명3장부터 5장까지는 간단한 게임 소스 코드를 바탕으로 게임 개발의 기본이 되는 내용들을 독자들이 알기 쉽게 하나하나씩 상세하고 친절하게 알려주고 있다. 6장부터 10장까지는 좀 더 복잡한 게임을 다루면서 다양한 그래픽 효과와 알고리즘에 대해 심도 있게 설명하고 있다. 이 책은 독자의 이해도를 높이기 위해 지루한 이론을 설명하는 대신 예제를 제공하고 소스 코드를 자세하게 설명함으로써 게임 개발 방법을 쉽게 기술하고 있다.

챕터별 요약

Chapter 01. Python과 Pygame 설치하기
Python과 Pygame을 다운로드해서 설치하는 방법을 각각의 운영체제(윈도우/맥/리눅스)에 맞게 자세히 설명하고 있으며 이 책을 보는 방법과 기본적으로 알고 있어야 하는 내용을 다루고 있다.

Chapter 02. Pygame의 기본
이 챕터에서는 Pygame이 제공하는 기본 모듈과 함수에 대해 설명하고 있다. Pygame을 처음 접하는 독자들을 위해 간단한 예제로 함수를 어떻게 사용하고 어떤 역할을 하고 있는지 알아본다.

Chapter 03. 메모리 퍼즐
메모리 퍼즐이라는 비교적 간단한 게임을 통해 게임 개발에 필요한 기본적인 개념들을 설명하고 있다. 메모리 퍼즐이란 상자 안에 어떤 아이콘들이 숨어있었는지 빨리 알아맞히는 게임이다. 중첩된 for 문, 신태틱 슈가, 동일한 프로그램 내에서 서로 다른 좌표계 등에 대해 배울 수 있다.

Chapter 04. 슬라이드 퍼즐
4X4 격자에 15개의 타일로 되어 있는 게임판 위에서 슬라이드 퍼즐을 맞히는 게임을 만드는 방법에 대해 설명하고 있다. 특히 이 챕터에서는 실행 시간과 메모리 사용량의 상관관계에 대해 알아본다.

Chapter 05. 시뮬레이트
시뮬레이트 게임은 화면에 색이 다른 네 개의 버튼이 무작위로 나타나면 그 순서를 기억하고 있다가 맞히는 게임이다. 이 게임을 통해 소스 코드의 가독성에 대해 설명하고 있다.

Chapter 06. 워미
워미 게임은 플레이어가 작은 벌레를 조종해서 화면에 무작위로 나타나는 사과를 먹는 게임이다. 벌레가 사과를 먹으면 벌레가 커지고, 벌레가 벽에 부딪히면 게임이 끝난다. 앞에서 알아봤던 게임보다는 좀 더 복잡한 게임으로 게임 개발에서 많이 쓰이는 충돌 감지에 대해 설명하고 있다.

Chapter 07. 테트로미노
테트로미노 게임은 필자가 테트리스 게임을 모방해 만든 게임으로 소스 코드만 해도 500 라인이 넘을 정도로 복잡하다. 그 만큼 다양한 개발 기법과 함수들이 사용되었으며 그 모든 것을 상세히 설명하고 있다. 또한, 게임 개발자의 아이디어에 대해서도 이야기하고 있다.

Chapter 08. 다람쥐 먹기
다람쥐 먹기 게임에는 처음으로 여러 명의 적이 한꺼번에 나온다. 적을 여러 개 만드는 방법과 각각의 다람쥐가 동일한 값을 가지게 해서 게임 루프에서 여러 다람쥐들을 한 번에 다루기 위한 코드를 설명한다. 그리고 카메라에 대한 개념도 처음 소개한다. 또한 수학 함수인 사인(sine) 함수를 사용해 다람쥐들이 점프할 때 자연스럽게 보이도록 만드는 방법을 설명한다.

Chapter 09. 스타 푸셔
스타 푸셔 게임은 다람쥐 먹기 게임에 비해 한 단계 더 복잡한 게임으로 레벨마다 타일 그래픽으로 서로 다른 세계를 디자인한다. 즉, 여기에서는 단순히 맵 하나를 가지고 전체 게임을 진행하는 것이 아니라 맵을 제작하여 이를 레벨 파일로 사용하는 방법을 설명하고 있다.

Chapter 10. 보너스 게임 4개
이 챕터에서는 4개의 보너스 게임의 소스 코드를 알아본다. 소스 코드와 코드의 주석문 외에 별도의 설명을 붙이지 않고 독자들이 직접 게임을 플레이해보면서 게임이 어떻게 작동하는지 스스로 알아보도록 하고 있다. 이 챕터에 수록된 게임은 플리피(Flippy, 오델로(Othello)를 카피, 플레이어가 인공지능 컴퓨터와 겨뤄서 타일을 뒤집어야 한다), 잉크 채우기(Ink Spill, 플러드 필(Flood Fill) 알고리즘을 사용), 4개 연속 게임(Four in a Row, 커넥트포(Connect Four)를 카피, 인공지능 컴퓨터와 대결), 젬젬(Gemgem, 비주얼드(Bejeweled)를 카피, 보석의 위치를 바꿔서 3개 연속되는 보석의 열을 만든다)이다.


Information Provided By: : Aladin

Author Introduction

알 스웨이가트(지은이)

소프트웨어 개발자이며 기술 서적 저자이기도 하다. 제일 좋아하는 프로그래밍 언어는 파이썬이며, 실제로 몇 가지 오픈 소스 모듈을 개발하기도 했다. 그가 집필한 책들은 크리에이티브 커먼즈 라이선스에 따라 그의 웹 사이트인 https://inventwithpython.com/에서 자유롭게 볼 수 있다.

김세희(옮긴이)

울대 계산통계학과 졸업 후 삼성전자, 한국 IBM과 VMware에서 시스템 엔지니어로 근무하였고 현재는 가족들과 함께 미국 실리콘밸리에서 번역을 하며 재충전 중이다. 10년간 한국 IBM에서 UNIX 시스템 기술지원 및 서로 다른 OS간 C/C++ 프로그램 이식업무를 하였다. 2008년 중반부터 클라우드 컴퓨팅과 Amazon Web Service를 접하고, IBM 월드와이드 파일럿 클라우드 시스템 프로젝트에 참가하면서 클라우드 관련 기술에 대해 흥미를 가지게 되었다. VMware Global로 이직후 클라우드 기술전문가/에반젤리스트로 근무하며, 각종 프라이빗 클라우드 시스템 및 데스크톱 클라우드 서비스 구성에 참가했다. 재학 때부터 꾸준히 번역활동에 참가해왔고, 저서로는 "Multitenant Utility Computing on IBM Power Systems Running AIX(ISBN-0738432318)", 역서로는 "Visual C++ 5.0 Unleashed","Dynamic HTML Unleashed","HTML4.0 Unleashed","Android Game Programming", ““Statistical Analysis: Microsoft Excel 2013” 등이 있다.

Information Provided By: : Aladin

Table of Contents

저자의 글 
책에 관하여 

Chapter 01 Python과 Pygame 설치하기 
시작하기 전 알아두어야 할 사항	
Python 다운로드해서 설치하기	
Windows 설치 방법	
Max OS X 설치 방법	
Ubuntu 및 Linux 설치 방법 
Python 시작하기	
Pygame 설치하기	
책 사용법	
소스 코드	
그래픽과 사운드 파일 다운로드	
라인넘버와 스페이스	
자동 줄 바꿈	
온라인으로 코드 검사하기	
http://invpy.com에서 더 많은 정보 찾아보기	

Chapter 02 Pygame의 기본 
GUI 대 CLI	
Pygame으로 만든 ‘Hello World’ 소스 코드	
게임 루프와 게임 스테이트	
Pygame.event.Event 객체	
Quit 이벤트와 pygame.quit() 함수	
픽셀 좌표	
함수, 메소드, 생성자 함수(Constructor Function), 모듈 내 함수에 대한 주의사항과 차이점 
Surface 객체와 윈도우	
색깔	
투명색	
pygame.Color 객체	
Rect 객체	
기본 형태 그리기 함수	
pygame.PixelArray 객체	
pygame.display.update() 함수	
애니메이션	
초당 프레임과 pygame.time.Clock 객체	
pygame.image.load()와 blit()로 이미지 그리기	
폰트	
안티 앨리어싱	
소리 재생하기	
요약	

Chapter 03 메모리 퍼즐 
메모리 퍼즐하기	
중첩된 for문	
메모리 퍼즐 소스 코드	
크레디트와 import 문	
매직 넘버는 좋지 않다	
assert 문으로 Sanity Checks	
숫자가 짝수인지 홀수인지 알아내기	
가능한 자주, 빨리 크래시가 일어날수록 좋다 
소스 코드 예쁘게 만들기	
문자열 대신 상수 변수 사용하기	
아이콘이 충분한지 확인하기	
Tuple 대 List, Immutable 대 Mutable	
아이템이 하나인 튜플은 뒤에 쉼표가 따라와야 한다	
리스트와 튜플 사이에 변환하기	
Global문 그리고 전역변수가 문제인 이유	
데이터 구조와 2D 리스트	
게임을 시작하는 애니메이션	
게임 루프	
이벤트 처리 루프	
어느 상자 위에 마우스 커서가 있는지 알아내기	
첫 번째 클릭한 상자 처리하기	
짝이 맞지 않는 아이콘 처리하기	
플레이어가 이긴 경우 처리하기	
게임 상태를 화면에 그리기	
‘열린 상자’에 대한 데이터 구조 만들기	
게임판 데이터 구조 만들기 : 1단계-가능한 모든 아이콘 조합하기	
2단계-모든 아이콘을 섞은 다음 추려내기	
3단계-게임판에 아이콘 배치하기	
2차원 리스트로 가르기	
서로 다른 좌표계	
픽셀 좌표계에서 게임판 좌표계로 변환하기	
아이콘 그리기 그리고 Syntactic Sugar	
게임판 아이콘의 형태와 색깔을 얻는 Syntactic Sugar	
상자 덮개 그리기	
닫히고 열리는 애니메이션 처리하기	
전체 게임판 그리기	
하이라이트 그리기	
‘게임 시작’ 애니메이션	
상자 그룹을 보여주고 닫기	
‘게임 승리’ 애니메이션 
플레이어가 승리했는지 알아내기	
왜 main() 함수를 신경 쓰는가	
왜 가독성에 신경 쓰는가	
요약 그리고 해킹 제안	

Chapter 04 슬라이드 퍼즐 
슬라이드 퍼즐하기	
슬라이드 퍼즐 소스 코드	
두 번째 버전과 유사한 첫 번째 버전 
버튼 설정하기	
단순한 코드로 똑똑해지기	
게임 루프	
버튼 클릭하기	
마우스로 타일 밀기	
키보드로 타일 밀기	
in 연산자로 ‘이들 중 하나와 일치’ 트릭 쓰기	
WASD와 화살표 키	
타일 밀기를 실제로 실행하기	
IDLE와 Pygame 프로그램 종료하기	
특정 이벤트 검사하기, Pygame의 이벤트 큐에 이벤트 포스팅하기	
게임판 데이터 구조 만들기	
빈 칸 위치는 그때그때 찾아낸다	
게임판 데이터 구조를 갱신해서 이동하기	
왜 Assertion을 쓰면 안 될까?	
무작위적이지 않은 움직임 얻기	
타일 좌표를 픽셀 좌표로 변환하기	
픽셀 좌표를 게임판 좌표로 변환하기	
타일 그리기	
화면상에 문자열 보여주기	
게임판 그리기	
게임판 테두리 그리기	
버튼 그리기	
타일 슬라이드 애니메이션	
copy() Surface 메소드	
새 퍼즐 만들기	
보드 리셋 애니메이션	
시간vs메모리 상쇄 효과	
아무도 몇 바이트는 신경 쓰지 않는다	
아무도 몇 밀리언 나노세컨드는 신경 쓰지 않는다	
요약	

Chapter 05 시뮬레이트 
시뮬레이트 게임하기	
시뮬레이트 소스 코드	
일반적인 시작 부분	
버튼 설정하기	
main() 함수	
프로그램에서 사용한 지역변수	
테두리 그리기와 입력 처리하기	
마우스 클릭 검사하기	
키보드 입력 검사하기	
게임 루프의 2가지 상태	
플레이어가 맞는 버튼을 눌렀는지 알아내기	
기준 시간(Epoch time)	
화면에 게임판 그리기	
기존의 terminate()함수	
상수 재활용하기	
깜박이는 버튼 애니메이션	
버튼 그리기	
배경 바뀌는 애니메이션	
게임 종료 애니메이션	
픽셀 좌표계를 버튼으로 변환하기	
암묵적인 것보다 명시적인 것이 낫다 

Chapter 06 워미 
워미(wormy) 
워미 소스 코드 
격자	
셋업 코드	
main() 함수	
분리한 runGame() 함수	
이벤트 처리 루프	
충돌 감지	
사과와의 충돌 감지	
벌레 움직이기	
insert() 리스트 메소드	
화면 그리기	
화면에 ‘Press a key’ 텍스트 그리기	
checkForKeyPress() 함수	
시작 화면	
시작 화면 텍스트 회전하기	
회전만으로는 완전하지 않다	
사과가 나타날 위치 결정하기	
게임 종료 화면	
그리기 함수	
변수를 재활용하지 마라	

Chapter 07 테트로미노 
테트로미노	
테트로미노 용어 정리	
테트로미노 소스 코드	
셋업 코드	
키를 누르고 있는 동안의 타이밍 설정 상수	
셋업 코드 추가	
이벤트 처리 루프	
여러 줄에 걸쳐 코드 나누기	
main() 함수	
새 게임 시작	
게임 루프	
이벤트 처리 루프	
게임을 잠시 멈추기 
사용자 입력을 처리하기 위해 움직임 관련 변수를 사용하기	
밀거나 회전했을 때 유효한지 확인하기	
바닥을 찾아내기	
키를 누르고 있는 동안 움직이기	
피스가 ‘자연스럽게’ 떨어지도록 만들기	
스크린상에 모두 그리기	
makeTextObjs() - 텍스트를 만드는 단축 함수	
기존의 terminate() 함수	
checkForKeyPress()에서 키 눌림 이벤트가 발생했는지 기다리기	
showTextScreen() - 보통의 텍스트 스크린 함수	
checkForQuit() 함수	
calculateLevelAndFallFreq() 함수	
getNewPiece() 함수로 새 피스 만들기	
보드 데이터 구조에 피스 추가하기	
새 보드 데이터 구조 만들기	
isOnBoard()와 isValidPosition() 함수	
완전한 한 줄이 되었는지 검사해서 없애기	
게시판 좌표계를 픽셀 좌표계로 전환하기	
보드나 화면 어딘가에 상자 그리기	
스크린에 모두 그리기	
점수와 현재 레벨 텍스트 그리기	
보드나 화면 어딘가에 피스 그리기	
‘다음’ 피스 그리기	
요약	

Chapter 08 다람쥐 먹기 
다람쥐 먹기(Squirrel Eat Squirrel) 
다람쥐 먹기 디자인	
다람쥐 먹기 소스 코드	
셋업 코드	
데이터 구조 설명	
main() 함수	
pygame.transform.flip() 함수 
좀 더 상세히 설명한 게임 상태	
일반적으로 텍스트 생성 코드	
카메라	
활성 영역(Active Area)	
게임 월드 안의 물건의 위치 추적하기	
잔디부터 시작하기	
게임 루프	
무적 상태를 꺼야 하는지 검사	
적 다람쥐 움직이기	
멀리 있는 잔디와 다람쥐 객체 없애기	
리스트에 있는 아이템을 지울 때 리스트 거꾸로 돌리기	
새로운 잔디와 다람쥐 객체 추가하기	
카메라 슬랙 그리고 카메라 뷰 옮기기	
배경, 잔디, 다람쥐, 헬스 미터 그리기	
이벤트 처리 루프	
플레이어를 움직이고 점프 확인하기	
충돌 감지 : 먹느냐 먹히느냐	
게임 종료 화면	
승리	
그래픽 헬스 미터 그리기	
똑같은 terminate() 함수	
Sine 함수의 수학	
Python 버전2와 하위 호환성(Backward Compatibility)	
getRandomVelocity() 함수	
다람쥐와 잔디를 추가할 장소 찾기	
적 다람쥐 데이터 구조 만들기	
다람쥐 이미지 뒤집기	
잔디 데이터 구조 만들기	
활성 영역 바깥인지 검사하기	
요약	

Chapter 09 스타 푸셔 
스타 푸셔 
스타 푸셔 소스 코드	
초기 셋업	
플레이어를 움직이고 점프확인하기	
스타 푸셔의 데이터 구조	
‘게임 상태’ 데이터 구조	
‘맵’ 데이터 구조	
‘레벨 데이터 구조	
텍스트 파일 읽기와 쓰기	
텍스트 파일과 바이너리 파일	
파일에 쓰기	
파일에서 읽기	
재귀 함수	
스택 오버플로우	
기저 사례로 스택 오버플로우 방지하기	
플러드 필 알고리즘	
맵 그리기	
레벨이 끝났는지 검사하기	
요약	

Chapter 10 보너스 게임 4개 
플리피, ‘오델로’ 클론	
플리피 소스 코드	
잉크 채우기, ‘플루드잇’ 클론	
잉크 채우기 소스 코드	
4개 연속, ‘커넥트포’ 클론	
4개 연속 소스 코드	
젬젬, ‘비주얼드’ 클론	
젬젬 소스 코드	
요약	

용어해설	
인덱스

New Arrivals Books in Related Fields