파이썬만으로 시작하는 1인 게임 개발 (게임 제작에 필수인 프로그래밍 지식, 알고리즘과 수학)

파이썬만으로 시작하는 1인 게임 개발 (게임 제작에 필수인 프로그래밍 지식, 알고리즘과 수학)

$22.05
Description
노베이스로도 가능한 게임 제작 & 프로그래밍
이 책은 프로 게임 개발자가 쉽게 해설한, 게임 제작과 프로그래밍의 입문서입니다.
게임을 만들기 위해서는 프로그래밍이나 게임 제작에 대한 지식뿐 아니라, 게임의 알고리즘을 구성하는 수학적 사고력도 필수입니다. 그래서 게임 만들기나 프로그래밍이 처음인 사람이 혼자서도 게임을 만들 수 있도록 이 책을 준비했습니다. Python만으로 게임을 만들면서도, 프로그래밍의 기초 지식과 게임 제작 방법, 충돌 판정 등의 게임 제작에 필요한 알고리즘과 수학을 무리 없이 배울 수 있도록 구성했습니다.

Chapter 1~4는 게임 제작 전 알아야 할 것들을 배우는 챕터입니다. 게임과 필요한 수학의 간단한 소개를 하고, 프로그래밍 개발 환경을 세팅합니다. 그 뒤 게임 개발 전 간단히 파이썬 문법을 배우고, 게임 제작에 필요한 알고리즘을 배우고, 기능을 개발해 봅니다.
후반부 Chapter 5~8은 각 챕터별로 하나씩 게임을 만들어 보는 챕터입니다. 두더지 잡기, 레이싱 게임, 슈팅 게임 등 다양한 장르의 게임을 개발해 보며 게임에서 사용하는 기능들과 알고리즘을 어떻게 만들고 적용하는지 자연스럽게 알게 됩니다.
그 밖에 더욱 복잡한 알고리즘과 기능을 배우고 싶은 분들을 위한 점프 액션 게임, 3D 던전 탐색 프로그램 개발 파트가 추가로 수록되어 있습니다.

Chapter 1 게임 제작의 구조에 대해 알아보자
게임이 무엇인지, 컴퓨터가 어떻게 프로그램을 실행하는지, 그리고 게임과 수학의 관계를 간단한 예로 설명합니다. 이어서 파이썬과 IDLE을 설치·실행하고, 아주 기초적인 코드 작성·저장·실행 과정을 경험해 봅니다.

Chapter 2 프로그래밍 기초 지식
입력·출력, 변수, 배열, 조건문, 반복문, 함수 등 파이썬 프로그래밍의 기본 문법을 배웁니다. 게임 제작에 꼭 필요한 “생각을 코드로 옮기는 방법”을 간단한 예제 프로그램으로 연습합니다.

Chapter 3 그래픽을 표시하자
tkinter를 이용해 윈도와 캔버스를 만들고, 선·도형·텍스트·이미지 등을 화면에 그리는 방법을 익힙니다. 좌표와 2차원 배열을 이용해 색과 배치를 제어하는 등, 게임 화면의 기초가 되는 그래픽 표현을 연습합니다.

Chapter 4 게임 제작을 위한 기초 지식
실시간으로 화면을 갱신하고, 마우스·키보드 입력을 이벤트로 받아 처리하는 방법을 배웁니다. 전역 변수, 좌표 계산, 충돌 판정(원/사각형)을 통해 “움직이고 부딪히는” 게임의 기본 구조를 이해합니다.
Chapter 5 두더지 잡기를 만들어 보자
랜덤, 배열, 실시간 처리, 키 입력 등을 조합해 두더지 잡기 게임을 완성합니다. 타이틀·게임 오버 화면 전환까지 구현해 보며, 하나의 완성된 미니 게임을 설계·구현·개조하는 흐름을 체험합니다.

Chapter 6 테니스 게임을 만들어 보자
벡터와 속도를 이용해 공이 움직이고 튕기는 간단한 물리 표현을 배우며, 공과 바, 배경을 이용한 테니스 게임을 만듭니다. 점수와 하이스코어, 화면 전환, 충돌 판정까지 포함한 좀 더 복잡한 게임 구조를 구현합니다.

Chapter 7 레이싱 게임을 만들어 보자
스크롤되는 배경, 플레이어 자동차, 적 차량을 배열과 실시간 처리로 관리해 레이싱 게임을 제작합니다. 여러 적 차량과 점수, 게임 오버 처리 등으로, “여러 오브젝트가 동시에 움직이는” 게임 구조를 익힙니다.

Chapter 8 슈팅 게임으로 복습해 보자
슈팅 게임 예제(galaxy_defender.py)를 전체적으로 뜯어보며, 그동안 배운 변수·배열·함수·이벤트·실시간 처리·수학 계산 등을 종합적으로 복습합니다. 코드를 구조별로 분석하고, 스스로 개조해 보는 연습을 합니다.

Appendix A 점프 액션 게임으로 배워 보자
점프 액션 게임 예제(help_princess.py)를 통해 주인공의 점프·이동·애니메이션을 수학과 배열로 표현하는 방법을 봅니다. 바닥과 구멍을 스크롤하며, 요소 추가·삭제로 맵을 구성하는 기법을 익힙니다.

Appendix B 3D 던전 탐색 프로그램으로 배워 보자
레이캐스팅을 이용해 3D 던전(미로)을 표현하는 프로그램(labyrinth_explorer.py와 maze_data1.py)을 분석합니다. 3차원 공간 데이터 구조, 삼각함수와 거리 계산, 벽 높이 보정 등을 통해 3D 표현의 기본 원리를 이해합니다.
저자

히로세츠요시

저자:히로세츠요시
와세다대학교이공학부졸업.남코와닌텐도계열회사에서근무한후,게임제작회사를설립하여세가,타이토,켐코등과함께100개이상의게임을기획및개발하였다.현재는기술전승,프로그래밍게임개발지도,교육기관의프로그래밍코너감수등을맡고있다.
프로그래밍은중학생시절부터시작했으며,C/C++,C#,Java,JavaScript,Python,Scratch,어셈블리어등다양한언어로게임개발및알고리즘연구를계속하고있다.국내출간저서로는‘파이썬으로배우는게임개발:입문편&실전편(제이펍)’등이있다.

역자:박동원
가천대학교에서동양어문학과일본어문학을전공한뒤일본에서근무하며나가노,나고야등지에서3년간일본인,한국인대상통역업무를담당하였으며,귀국후번역의매력에빠져일본관련번역가로활동중이다

목차

[Chapter1]게임제작의구조에대해알아보자

1-1게임의정체를알아보자
(1)컴퓨터기기는프로그램으로움직인다
(2)게임내부는어떻게되어있을까?
(3)프로그램이란?
(4)프로그램의지시를CPU가이해한다
(5)컴퓨터의기본기능‘입력,연산,출력’
(6)컴퓨터의또하나의중요한기능기억

1-2게임제작과수학의관계를알아보자
(1)체력을줄이거나늘리는변수
(2)적이쫓아온다물체는어디에있는가?(좌표)
(3)가까이있을까?멀리있을까?게임속에펼쳐진세계(2차원평면)
(4)수학의다양한지식을활용하자

1-3프로그래밍준비
(1)확장자를표시하자
(2)작업폴더를만들자

1-4Python설치
(1)WindowsPC에설치하는방법
(2)Mac에설치하는방법

1-5IDLE을사용해보자①-셸윈도
(1)IDLE이란?
(2)IDLE을실행해보자
(3)IDLE로계산이나달력을표시해보자

1-6IDLE을사용해보자②-에디터윈도
(1)에디터윈도실행하기
(2)프로그램입력하기
(3)프로그램저장하기
(4)프로그램실행하기
(5)프로그램입력방법정리

[Chapter2]프로그래밍기초지식

2-1이장에서배울내용

2-2입력과출력
(1)컴퓨터의기본기능
(2)print()사용법
(3)계산식의값을출력하자
(4)input()사용법
(5)주석

2-3변수
(1)변수란?
(2)대입연산자
(3)변수명붙이기
(4)변수값을계산식으로바꾸자
(5)연산자
(6)타입(데이터타입)
(7)문자열과숫자는종류가다른데이터
(8)형변환

2-4배열
(1)Python의리스트(데이터를담는상자)
(2)배열이란?
(3)배열선언
(4)배열을사용한프로그래밍
(5)2차원배열

2-5조건분기
(1)조건분기
(2)if의3가지작성법
(3)if사용법
(4)들여쓰기
(5)if를사용한프로그래밍
(6)조건식
(7)True와False
(8)if~else사용법
(9)if~elif~else사용법
(10)and와or(논리연산자)
2-6반복
(1)반복
(2)2종류의반복명령
(3)for의사용법
(4)range()로범위를지정하기
(5)for를사용한프로그래밍기본
(6)for를사용한프로그래밍range()를통한범위지정
(7)값을줄이는반복
(8)break와continue
(9)while의사용법

2-7함수
(1)게임속함수
(2)함수의개념
(3)함수를정의하는방법
(4)매개변수도리턴값도없는함수
(5)매개변수가있고리턴값이없는함수
(6)리턴값을가진함수
(7)전역변수와지역변수,변수의유효범위

2장총정리

[Chapter3]그래픽을표시하자

3-1이장에서배울내용

3-2tkinter로윈도를표시해보자
(1)게임제작에필수적인윈도
(2)모듈
(3)Python으로윈도를표시하자
(4)타이틀과윈도의크기를지정하자

3-3캔버스에선을그어보자
(1)캔버스란?
(2)컴퓨터의좌표에대해알아보자
(3)캔버스를사용해보자
(4)축이되는선을그어보자


3-4다양한도형을그려보자
(1)도형을표시하는명령
(2)도형을표시하는명령을사용해보자
(3)캔버스에문자열을표시해보자

3-5이미지를표시해보자
(1)이미지파일준비
(2)프로그램확인
(3)PhotoImage()이미지불러오기
(4)create_image()이미지표시
(5)내가가진이미지파일을표시해보자

3-6배열로색을다루어보자
(1)색의문자열을배열에대입해보자

3-72차원배열을사용해보자
(1)2차원배열로색을정의해보자
(2)for의중첩반복문

[Chapter4]게임제작을위한기초지식

4-1실시간처리란?
(1)Python으로실시간처리하기
(2)수를세어보자
(3)전역변수선언
(4)문자열표시하기
(5)delete(“all”)이필요한또하나의이유
(6)실시간처리의과정
(7)전역변수와지역변수

4-2마우스의움직임을가져오자
(1)이벤트란?
(2)이벤트가발생한사실을알아내자
(3)bind()의사용법
(4)마우스커서좌표를알아내는프로그램
(5)format()의사용법
(6)마우스를클릭한사실을알아내는방법은?


4-3마우스로도형을움직여보자
(1)어떻게도형을움직일까?
(2)원이커서를따라가는프로그램
(3)마우스커서를움직였을때불러오는함수
(4)실시간처리를하는함수
(5)좌표계산
(6)resizable()명령

4-4입력된키값을가져오자
(1)어떤키를눌렀는지알아보자
(2)키값을표시하는프로그램
(3)키코드와심볼

4-5숫자키로색을표시해보자
(1)어떤프로그램을만드는걸까?
(2)프로그램확인
(3)키가눌렸을때배경색바꾸기
(4)문자열의대소관계
(5)and사용법
(6)문자열을숫자로변환하기

4-6충돌판정을계산해보자①원을이용한계산방법
(1)충돌판정
(2)2개의원의거리를구하는식
(3)수학식을프로그램으로입력하자
(4)프로그램확인
(5)태그

4-7충돌판정을계산해보자②사각형을이용한계산방법
(1)사각형을이용한충돌판정
(2)사각형이겹치는조건을알아보자
(3)x축방향의거리와y축방향의거리를구해보자
(4)사각형이겹치는조건을식으로표현하자
(5)절댓값을사용해보자
(6)수식을프로그램으로입력하자
(7)프로그램확인
(8)사각형을표시하는방법
(9)마우스로사각형을움직이는처리
(10)충돌판정을하는if문
[Chapter5]두더지잡기를만들어보자

5-1이장에서만들게임
(1)두더지잡기란?
(2)두더지잡기를만드는이유
(3)이장에서만들게임의규칙
(4)사용할이미지파일
(5)어떤순서로완성시킬까?

5-2Python에서난수를사용해보자
(1)random모듈을사용하자
(2)난수를발생시키는명령
(3)프로그램확인
(4)난수의기본값

5-3STEP1이미지를불러와서표시해보자
(1)이미지파일을불러와서표시하기

5-4STEP2배열로5개의구덩이를관리하자
(1)배열사용하기
(2)프로그램확인
(3)배열에대입하는값을바꿔보자

5-5STEP3실시간처리로두더지가나타나게해보자
(1)실시간처리를추가하자
(2)프로그램확인

5-6STEP4키입력으로두더지를때려보자
(1)키입력추가
(2)프로그램확인
(3)변수key에키값을대입하자
(4)얼굴을내민두더지를때려보자
(5)뿅망치로때린두더지를구덩이로돌아가게해보자
(6)키값의해제

5-7STEP5타이틀화면과게임오버화면을만들어게임을완성시키자
(1)화면전환
(2)두더지잡기의화면전환
(3)씬을관리하는변수를사용해보자
(4)완성된프로그램확인
(5)게임을개조해보자!

[Chapter6]테니스게임을만들어보자

6-1이장에서만들게임
(1)테니스게임이란?
(2)테니스게임을만드는이유
(3)이장에서만들게임의규칙
(4)사용하는이미지파일
(5)어떤순서로완성시킬까?

6-2벡터를배워보자
(1)벡터는크기와방향을가진다
(2)속력과속도
(3)프로그램으로물체의움직임을계산하는방법은?
(4)공을움직이기위한변수

6-3STEP1배경,공,바를표시해보자
(1)표시할것과표시위치를다루는변수
(2)이미지와도형을표시해서게임화면을만들자
(3)변수에초기값을대입하자
(4)int()의기능
(5)이미지불러오기와표시

6-4STEP2공이자동으로움직이게해보자
(1)공의속력을대입할변수
(2)좌표를변화시키는계산
(3)화면끝에서튕기게해보자
(4)공이자동으로움직이는프로그램
(5)화면끝에서튕기게하는방법
(6)전역선언을잊어버리지말자
(7)계산과표시를실시간으로반복하자
(8)물체의운동을표현하는알고리즘

6-5STEP3마우스의움직임에맞춰바를움직이게해보자
(1)마우스이벤트추가
(2)바의좌표를어떻게변화시킬까?
(3)바를움직이는프로그램확인
6-6STEP4바로공이튕기도록만들어보자
(1)충돌판정
(2)원과사각형의충돌을판정해보자
(3)공과바의충돌판정확인

6-7STEP5점수와하이스코어를계산해보자
(1)변수에점수를대입하고문자열을표시하자
(2)프로그램확인
(3)text()함수의구조

6-8STEP6타이틀화면과게임오버화면을넣어게임을완성시키자
(1)화면전환을관리하는변수
(2)완성된프로그램확인
(3)click()함수
(4)게임을개조해보자!

[Chapter7]레이싱게임을만들어보자

7-1이장에서만들게임
(1)레이싱게임이란?
(2)레이싱게임을만드는이유
(3)이장에서만들게임의규칙
(4)사용하는이미지파일
(5)어떤순서로완성시킬까?

7-2STEP1배경을스크롤하자
(1)배경이미지
(2)화면을스크롤하는방법
(3)배경의스크롤처리확인
(4)계속사용하는값을상수로정의하기
(5)실시간계산과이미지표시
(6)bg_y의계산을1줄로입력하기

7-3STEP2플레이어의차를조작할수있게해보자
(1)차의좌표를대입할변수
(2)마우스를움직였을때차를이동하기
(3)차를움직이는프로그램확인
(4)마우스커서를움직였을때좌표를변화시키기
(5)선분의내분점을구하는식
(6)수식을프로그램의식으로만들자
(7)마우스커서의좌표를직접대입하면…

7-4STEP3적측차량을1대움직여보자
(1)적측차량의좌표를대입할변수
(

출판사 서평

주요내용

Chapter1게임제작의구조에대해알아보자
게임이무엇인지,컴퓨터가어떻게프로그램을실행하는지,그리고게임과수학의관계를간단한예로설명합니다.이어서파이썬과IDLE을설치실행하고,아주기초적인코드작성저장실행과정을경험해봅니다.

Chapter2프로그래밍기초지식
입력출력,변수,배열,조건문,반복문,함수등파이썬프로그래밍의기본문법을배웁니다.게임제작에꼭필요한“생각을코드로옮기는방법”을간단한예제프로그램으로연습합니다.

Chapter3그래픽을표시하자
tkinter를이용해윈도와캔버스를만들고,선도형텍스트이미지등을화면에그리는방법을익힙니다.좌표와2차원배열을이용해색과배치를제어하는등,게임화면의기초가되는그래픽표현을연습합니다.

Chapter4게임제작을위한기초지식
실시간으로화면을갱신하고,마우스키보드입력을이벤트로받아처리하는방법을배웁니다.전역변수,좌표계산,충돌판정(원/사각형)을통해“움직이고부딪히는”게임의기본구조를이해합니다.
Chapter5두더지잡기를만들어보자
랜덤,배열,실시간처리,키입력등을조합해두더지잡기게임을완성합니다.타이틀게임오버화면전환까지구현해보며,하나의완성된미니게임을설계구현개조하는흐름을체험합니다.

Chapter6테니스게임을만들어보자
벡터와속도를이용해공이움직이고튕기는간단한물리표현을배우며,공과바,배경을이용한테니스게임을만듭니다.점수와하이스코어,화면전환,충돌판정까지포함한좀더복잡한게임구조를구현합니다.

Chapter7레이싱게임을만들어보자
스크롤되는배경,플레이어자동차,적차량을배열과실시간처리로관리해레이싱게임을제작합니다.여러적차량과점수,게임오버처리등으로,“여러오브젝트가동시에움직이는”게임구조를익힙니다.

Chapter8슈팅게임으로복습해보자
슈팅게임예제(galaxy_defender.py)를전체적으로뜯어보며,그동안배운변수배열함수이벤트실시간처리수학계산등을종합적으로복습합니다.코드를구조별로분석하고,스스로개조해보는연습을합니다.

AppendixA점프액션게임으로배워보자
점프액션게임예제(help_princess.py)를통해주인공의점프이동애니메이션을수학과배열로표현하는방법을봅니다.바닥과구멍을스크롤하며,요소추가삭제로맵을구성하는기법을익힙니다.

AppendixB3D던전탐색프로그램으로배워보자
레이캐스팅을이용해3D던전(미로)을표현하는프로그램(labyrinth_explorer.py와maze_data1.py)을분석합니다.3차원공간데이터구조,삼각함수와거리계산,벽높이보정등을통해3D표현의기본원리를이해합니다.

저자의말

이책은프로게임제작자가알기쉽게설명하는게임제작&프로그래밍입문서입니다.
게임을제작하기위해서는프로그래밍이나게임제작지식은물론이고,게임알고리즘을만들기위한수학지식도반드시필요합니다.그래서게임제작이나프로그래밍이처음인분을위해이책을집필했습니다.Python이라는배우기쉬운프로그래밍언어를이용해게임을만들면서프로그래밍의기초지식,게임제작방법,그리고게임제작에필요한알고리즘이나수학을알기쉽게배우는내용을담고있습니다.
수학이라는말이나오자마자‘어려워보인다’,‘나는못할것같다’고생각하시는분도계실지모르겠지만,걱정하실필요는없습니다.중학교나고등학교에서배우는수학중게임제작에필요한지식을사용해서간단하게만들수있는것부터단계적으로어려운게임을만들수있도록하겠습니다.그러기위해서이책은수학을싫어하시는분들도즐겁게배우고자연스럽게이해할수있도록구성되어있습니다.
또한이책은프로그래밍입문서로써활용할수있습니다.일본은의무교육과고등교육에서프로그래밍이필수가되었습니다.많은대학에서도프로그래밍이필수과목이되었고,AI나데이터사이언스에관한지식을문과,이과가리지않고모든학생들에게가르치는대학들도생겨나고있습니다.또한사회인을위한프로그래밍강좌도인기를끌고,사원들에게프로그래밍을배우게하여사원들의IT지식을상향평준화하려는기업도늘어나고있습니다.
이런시대에프로그래밍은배울가치가있다는사실을의심하는사람을없을것입니다.학생이라면이책을보며즐겁게프로그래밍(혹은알고리즘이나수학)을배울수있습니다.사회인이라면소프트웨어개발에널리사용되는Python의지식이나기술을확실하게배울수있습니다.이책을전부읽은후여러분의실력은확실하게성장하게될것입니다.