Python과 Pygame으로 게임 만들기
도서명:Python과 Pygame으로 게임 만들기
저자/출판사:알,슈베이가르트/정보문화사
쪽수:432쪽
출판일:2014-06-26
ISBN:9788956746159
목차
저자의 글
책에 관하여
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개 연속 소스 코드
젬젬, ‘비주얼드’ 클론
젬젬 소스 코드
요약
용어해설
인덱스