한 시간 만에 게임 만들기 (자투리 시간을 활용하여 만드는 7가지 클래식 게임)

한 시간 만에 게임 만들기 (자투리 시간을 활용하여 만드는 7가지 클래식 게임)

$26.84
Description
간단한 C언어 지식 만으로 만드는 7가지 클래식 게임
게임 엔진의 대중화 이후 게임 개발은 예전보다 매우 쉬워졌지만, 여전히 초보자에게는 높은 벽으로 느껴집니다. 그 이유는 여러 가지가 있지만 가장 큰 이유를 하나 꼽자면 ‘추가로 배워야 할 것이 너무 많다’일 겁니다. 대부분의 작업을 도와주는 엔진을 사용하더라도 엔진의 사용법을 추가로 익혀야만 하며 그것만으로도 별도의 도서가 만들어질 정도입니다. 이 도서는 이러한 사전 지식 없이, 오직 간단한 C언어 지식만으로 게임 개발에 도전할 수 있도록 언어 기능 이외의 다른 요소는 전혀 사용하지 않은 게임들을 만들어 보는 도서입니다..

소개하는 게임은 유명 게임에서 모티프를 딴 7가지 게임으로, 언어를 갓 배운 초보자에게 흥미를 주면서도 프로그래밍에 익숙해질 수 있도록 선정했습니다. 턴제 RPG, 테트리스, 삼국지 등 게임을 좋아하는 사람이 아니어도 한번쯤 들어보았을 게임들로 구성되어 있으며, 따라하면 도서 제목처럼 한 시간 정도면 프로그래밍할 수 있을 정도의 난이도와 분량입니다. 순서는 어느 장부터 읽어도 상관 없으나, 난이도를 고려한다면 순서대로 읽는 것을 추천합니다.
저자

게임도칸

유튜브,니코니코동화등에서게임프로그래밍을실황해가며라이브코딩을하는동영상,생방송을송출중입니다.동영상시리즈한시간남짓으로만들어보았다는게임을제작부터플레이하여클리어하는것까지를전부제공하고있습니다

유튜브
https://www.youtube.com/gamedokan

X
https://x.com/gamedokan

목차

이책의개요
수록타이틀
C++콘솔프로그램의개발환경을설정한다
C++프로그램의작성과이책을읽는방법
샘플코드다운로드

제1장왕도RPG의전투장면
명령선택과메시지표시를통한턴제배틀
텍스트기반으로진행하는RPG의전투장면
프로그램의기본구조를작성한다
프로그램의베이스부분을작성한다
콘솔의설정
캐릭터의상태를표시한다
플레이어의상태를작성한다
플레이어의상태를초기화한다
플레이어의상태를표시한다
몬스터의상태를작성한다
몬스터의상태를초기화한다
몬스터를표시한다
전투의흐름을작성한다
전투시작메시지를표시한다
명령데이터를작성한다
각캐릭터에게공격을하게만든다
명령선택인터페이스를구현한다
명령을선택하는함수를호출한다
명령목록을표시한다
명령을선택하는커서를추가한다
커서를그린다
키보드입력으로커서를조작한다
선택한명령을결정한다
싸우는명령을구현한다
공격대상을설정한다
상대에게주는대미지를계산한다
상대에게대미지를준다
적을쓰러뜨렸을때의처리를구현한다
마왕강림!-적을최종보스로바꾼다
최종보스데이터를추가한다
몬스터를최종보스로바꾼다
플레이어가사망했다는메시지를표시한다
용사의능력치를다시작성하여강하게만든다
도망치는명령을구현한다
회복주문명령을구현한다
주문을발동시켜HP를회복시킨다
주문을외우면MP를소모하게만든다
MP가부족하면주문을외우지못하게만든다
최종결전-타도마왕!

재2장라이프게임
단순한규칙에서생성되는복잡한생명시뮬레이션
라이프게임
단순한규칙에서발전되는복잡한생명시뮬레이션
라이프게임의탄생과발전
라이프게임의규칙
프로그램의기본구조를작성한다
프로그램의베이스부분을작성한다
콘솔설정
필드를그린다
필드의데이터를작성한다
필드를그린다
대상셀이몇개의살아있는셀과인접해있는지를센다
칸마다인접하는칸의상태를체크한다
필드법위밖의좌표를무시한다
필드가무한히루프하도록구현한다
인접하는살아있는셀의수를센다
세대를진행시킨다
키보드입력으로시뮬레이션을진행시킨다
시뮬레이션함수를호출한다
각셀의다음세대에서의생사를판정한다
시뮬레이션결과를화면에반영시킨다
시뮬레이션을일정시간마다자동진행시킨다
임의의패턴을필드의중심에배치한다
필드를넓게확장한다
패턴을필드에써넣는함수를작성한다
패턴을필드에써넣는함수를테스트한다
패턴의예
고정물체
진동자
고정물체(주기2)
펄서(주기3)
팔각형(주기5)
은하(주기8)
펜타데카슬론(주기15)
장수형
R-펜토미노
다이하드
도토리
이동물체
글라이더
라이트급우주선
미들급우주선
헤비급우주선
번식형
글라이더총
작은패턴
칙칙폭폭열차
맥스
직선에서신비로운무늬
십자에서신비로운무늬


제3장리버시
모눈단위의데이터처리와AI구현
2인대전보드게임의정석「리버시」
프로그램의기본구조를작성한다
프로그램의베이스부분을작성한다
콘솔설정
모눈판을그린다
모눈판을초기화한다
모눈판을그린다
모눈판의초기배치를설정한다
키보드입력으로칸을선택한다
커서를그린다
커서를키보드입력으로조작한다
커서의위치를초기화한다
키보드입력으로돌을놓는다
현재턴을표시한다
커서의좌표에돌을놓는다
돌을놓으면턴을넘긴다
돌을놓을수있는지판정한다
돌을놓을수없는경우의처리를구현한다
이미돌이놓여있는칸에는놓을수없게한다
지정한칸에돌을놓을수있을지판정한다
끼운상대의돌을뒤집는다
돌을뒤집는기능을추가한다
돌을뒤집는다
어디에도돌을놓을수없는경우패스한다
돌을놓을수있는곳이있는지판정하는함수를작성한다
어디에도돌을놓을수없으면패스한다
승패결과를표시한다
결과표시로바뀐다
승패를판정하여결과를표시한다
게임이종료되면초기화한다
게임모드선택화면을제작한다
게임모드선택화면으로전환한다
게임모드를목록으로표시한다
게임모드를키보드입력으로선택한다
커서를표시한다
키보드입력으로선택을바꾼다
선택을결정하고모드선택화면을빠져나간다
모드별로AI담당을설정한다
돌을놓는칸을자동으로판단하는AI를구현한다
AI담당으로전환한다
놓을수있는칸리스트를작성한다
놓을수있는곳중에서랜덤으로놓는다
AI턴에는커서를안보이게한다
AI간대전을관전하는모드를추가한다

제4장낙하물퍼즐게임
떨어지는블록을맞춰서지우는실시간퍼즐
퍼즐게임의정석,낙하물퍼즐
프로그램의기본구조를작성한다
프로그램의베이스부분을작성한다
콘솔설정
필드를제작한다
게임을초기화하는함수를추가한다
화면을그리는함수를추가한다
필드의데이터를작성한다
필드를그린다
낙하블록을추가한다
낙하블록의종류를정의한다
낙하블록의형태를정의한다
낙하블록의데이터를작성한다
낙하블록을초기화한다
낙하블록을그린다
낙하블록을키보드로조작한다
키보드입력을한다
낙하블록을이동시킨다
낙하블록을회전시킨다
블록을실시간으로떨어뜨린다
게임을실시간으로진행시킨다
블록을떨어뜨린다
낙하블록과필드위블록과의충돌판정을구현한다
낙하블록과필드의충돌판정함수를작성한다
낙하블록과필드의충돌판정을실시한다
낙하블록을키보드입력으로조작할때의충돌판정
낙하블록이자동낙하할때필드와의충돌판정
낙하블록을필드에쌓는다
새로운낙하블록을발생시킨다
블록이천장까지쌓이면게임오버로한다
가로로채워진행의블록을지운다
채워진행의블록을지우는함수를작성한다
블록이가로로채워졌는지판정한다
채워진1행을삭제한다
지워진행위의블록을아래로1칸이동시킨다

제5장도트잇게임
실시간액션과4종의AI
비디오게임초기에대히트한「도트잇」
프로그램의기본구조를작성한다
프로그램의베이스부분을작성한다
콘솔설정
미로를작성한다
미로데이터를작성한다
미로를초기화한다
미로를그린다
플레이어를생성한다
플레이어의데이터를생성한다
플레이어를그린다
플레이어의초기좌표를설정한다
플레이어를조작한다
플레이어와벽의충돌판정을실시한다
플레이어를상하좌우로루프시킨다
플레이어가도트를먹게한다
변덕몬스터를추가한다
변덕몬스터의데이터를작성한다
변덕몬스터를그린다
일정시간마다실행되는실시간처리를구현한다
몬스터종류에따라AI처리를분기시킨다
변덕몬스터의이동목적지를얻는다
변덕몬스터를움직인다
변덕몬스터가벽을통과하지못하게한다
변덕몬스터가되돌아가지않게한다
추적몬스터를추가한다
추적몬스터의데이터를추가한다
추적몬스터를그린다
경로탐색알고리즘의해설
두점간의최단경로를탐색하는기능을구현한다
탐색시작지점에서각칸까지의최단거리를구한다
탐색자의칸에서각칸까지의최단경로를구한다
추적몬스터를움직인다
추적몬스터가벽을통과하지못하게한다
추적몬스터가되돌아오지않게한다
전진몬스터를추가한다
전진몬스터의데이터를추가한다
전진몬스터를그린다
전진몬스터의이동목적지를얻는다
플레이어의방향을얻는다
플레이어의3칸앞좌표를얻는다
전진몬스터를움직인다
협공몬스터를추가한다
협공몬스터의데이터를추가한다
협공몬스터를그린다
협공몬스터를움직인다
게임오버기능을제작한다
플레이어와몬스터가겹쳤는지판정하는기능을제작한다
게임오버가되면게임을리셋한다
몬스터가플레이어에게돌진해온경우도게임오버처리한다
게임오버메시지를화면중앙에표시한다
엔딩화면을제작한다
도트를전부먹었는지판정한다
엔딩화면을작성한다
게임을클리어하면엔딩화면을표시한다

제6장유사3D던전게임
아스키아트로유사3D를재현
비디오게임초기의RPG표준,유사3D던전
컴퓨터RPG의기원「위저드리」의탄생
「위저드리」가끼친영향
유사3D시점의기믹에접근하다
프로그램의기본구조를작성한다
프로그램의베이스부분을작성한다
콘솔설정
디버그용맵을그린다
미로데이터를작성한다
미로맵을그린다
미로를랜덤으로생성한다
미로를생성하는알고리즘
미로를랜덤으로생성하는함수를호출한다
미로의모든칸을벽으로막는다
벽을파는함수를작성한다
벽을파도좋은지아닌지를판정한다
첫통로를생성한다
파야하는벽을모두파낸다
미로를이동할수있게만든다
맵에플레이어를표시한다
키보드입력으로플레이어를조작한다
방위를전환한다
진행방향으로전진한다
미로를유사3D화하여그린다
유사3D용데이터를작성한다
미로의아스키아트를작성한다
아스키아트참조용테이블을작성한다
시야내의상대좌표테이블을작성한다
미로를유사3D시점으로그리는함수를호출한다
그리기용의아스키아트를합성한다
미로를그린다
퀘스트를추가한다
플레이어가목표지점에도달했는지판정한다
엔딩메시지를표시한다

제7장전국시뮬레이션게임
히데요시도깜짝놀랄걸!하룻밤사이에전국시뮬레이션
「진군」명령만으로만드는단순한전국시뮬레이션게임
이번장의전국시뮬레이션게임의시대배경
시대설정-1570년노부나가의천하포무전야
전국다이묘열전
오다노부나가
다케다신겐
우에스기겐신
도쿠가와이에야스
호조우지마사
아시카가요시아키
모리모토나리
다테테루무네
시미즈요시히사
조소카베모토치카
프로그램의기본구조를작성한다
프로그램의베이스부분을작성한다
콘솔설정
지도를그린다
다이묘데이터를작성한다

출판사 서평

제1장왕도RPG의전투장면
명령선택과메시지표시를통한턴제배틀
드래곤퀘스트등으로대표되는일본식턴제RPG게임을본따,적과전투하는씬을만들어봅니다.슬라임같은간단한적부터,회복기능을구현하여강한보스와도맞서싸웁니다!

재2장라이프게임
단순한규칙에서생성되는복잡한생명시뮬레이션
특정한규칙을정해주면그에맞게스스로움직이거나모습을바꾸는신비한게임인라이프게임을만듭니다.라이프게임의핵심규칙을구현해보고,자동진행되도록코드를개선합니다.

제3장리버시
모눈단위의데이터처리와AI구현
오셀로라는이름으로알려진간단한보드게임인리버시를직접구현해봅니다.혼자서는할수없는게임이므로같이플레이할상대인AI를만들고,심지어는AI끼리의대전을관전하는모드도만들어봅니다!

제4장낙하물퍼즐게임
떨어지는블록을맞춰서지우는실시간퍼즐
추억의게임테트리스와도같은낙하물퍼즐게임을만들어봅니다.낙하블록과지면을충돌판정을하여줄을지우는제대로된낙하물게임입니다.

제5장도트잇게임
실시간액션과4종의AI
팩맨이떠오르는DotEat게임입니다.미로를만들고,플레이어를추적하는NPC와그AI도만들어서게임을성립시킵니다.

제6장유사3D던전게임
아스키아트로유사3D를재현
선을이용해마치3D공간을탐험하는듯한기분을주는유사3D던전게임을만들어봅니다.랜덤으로맵을구성하고,내위치와그3D화면을만들어플레이해보면마치둠을플레이하는느낌을받을수있습니다.

제7장전국시뮬레이션게임
히데요시도깜짝놀랄걸!하룻밤사이에전국시뮬레이션
일본전국시대를배경으로삼아,일본전역을통일하는시뮬레이션게임,노부나가의야망의간단한버전과도같은게임을만들어봅니다.각성의다이묘가되어,군사를출병시켜각성을함락시켜세력을키워나가봅니다.통일하면승리의연표가,패배시에는패배까지의연표가나오도록만들어봅니다.

Appendix1전국시뮬레이션게임을삼국지로개조한다
데이터를변경하여전국을삼국으로!
조금은어색할전국시대게임의배경을수정하여,삼국지게임으로만들어봅니다.맵과데이터를수정하는것만으로거의다른게임이되는듯한느낌을줄수있습니다.
Appendix2왕도RPG완전판
전투장면에필드장면을추가하여완전한RPG로완성하자!
1장의전투장면뿐인게임에필드를추가하여,완전한RPG로확장시킵니다.스타팅포인트라고할수있는왕성과,마지막결전을할마왕성을만들어시작과끝을완성시킵니다.