소개 ... 13 제1부 C++ 프로그래밍 제1장 C++ 프로그래밍이 소개 ... 19 C++를 사용하는 이유 ... 20 Visual C++ 설정하기 ... 21 첫 번째 프로그램 : "Hello all you happy people" ... 26 C++ 프로그램의 구조 ... 29 주석 ... 33 오류 찾아내기 ... 34 경고 ... 37 정리 ... 38 질문과 답변 ... 39 연습 문제 ... 40 제2장 변수와 연산자 ... 43 변수와 메모리 ... 44 변수의 타입 ... 45 프로그램에서 변수의 사용 ... 48 변수의 식별자 ... 51 변수 이름 ... 54 타입의 재정의 ... 54 연산자 ... 55 비트 시프트 연산자 ... 60 관계 연산자 ... 61 조건 연산자 ... 61 논리 연산자 ... 63 연산자 우선순위 ... 64 요약 ... 66 질문과 답변 ... 66 연습 문제 ... 67 제3장 함수와 프로그램의 흐름 ... 69 함수의 정의와 사용 방법 ... 70 함수의 생성과 사용 ... 72 디폴트 파라미터 ... 76 변수의 범위 ... 78 재귀 호출 ... 82 함수를 사용할 때의 주의사항 ... 84 프로그램의 흐름 ... 85 코드 블록과 문장 ... 85 if, else if, else 문 ... 86 while, do…while 그리고 for 루프 ... 89 break와 continue ... 94 switch 문 ... 96 난수 ... 99 첫 번째 게임 : "크랩(Crap)" ... 102 요약 ... 111 질문과 답변 ... 111 연습 문제 ... 112 제4장 다중 파일과 전처리기 ... 113 소스와 헤더파일의 차이 ... 114 전처리기 ... 117 다중 include 피하기 ... 120 매크로 ... 122 다른 전처리기 지시어 ... 124 요약 ... 125 연습 문제 ... 125 제5장 배열, 포인터 그리고 문자열 ... 127 배열 ... 128 배열의 선언과 사용 ... 128 다차원 배열 ... 132 포인터 ... 136 포인터와 변수 ... 136 포인터와 배열 ... 139 메모리에 포인터 선언과 할당 ... 142 포인터 연산자 ... 145 메모리 관리 ... 149 문자열 ... 150 요약 ... 170 질문과 답변 ... 171 연습 문제 ... 171 제6장 클래스 ... 173 클래스 ... 174 클래스의 생성 ... 175 클래스의 사용 ... 178 멤버의 접근 제한자들 ... 178 생성자와 소멸자 ... 181 연산자 오버로딩 ... 185 문자열 클래스 ... 186 상속성과 다형성의 기본 개념 ... 192 열거형 ... 202 유니온 ... 203 정적 멤버 ... 205 클래스를 사용할 때 유용한 기술 ... 206 요약 ... 215 질문과 답변 ... 215 연습 문제 ... 215 제7장 몬스터 만들기 ... 217 ConLlb ... 218 몬스터의 생성 ... 234 요약 ... 263 제8장 스트림 ... 265 스트림 ... 266 바이너리 스트림과 텍스트 스트림 ... 266 입력과 출력 ... 267 파일 스트림 ... 273 게임 로드와 저장 기능을 추가한 몬스터 게임의 수정 ... 290 요약 ... 297 질문과 답변 ... 297 연습 문제 ... 298 제9장 기본적인 소프트웨어 구조 ... 299 소프트웨어 디자인의 중요성 ... 300 디자인 접근 ... 300 몇 가지 기본 기술들 ... 302 모듈과 다중 파일 ... 308 이름짓기의 관례 ... 309 규칙의 예외 ... 311 이 책에서 사용된 디자인 ... 312 요약 ... 314 질문과 답변 ... 314 연습 문제 ... 314 제2부 윈도우 프로그래밍 제10장 Mirus 게임 라이브러리의 설계 ... 317 일반적인 사항 ... 318 Mirus 컴포넌트 ... 319 Helper 컴포넌트 ... 319 윈도우 컴포넌트 ... 320 그래픽 컴포넌트 ... 320 사운드 컴포넌트 ... 324 입력 컴포넌트 ... 325 Help 컴포넌트 만들기 ... 326 Mirus를 사용하는 방법 ... 334 요약 ... 335 질문과 답변 ... 335 제11장 윈도우 프로그래밍 시작하기 ... 337 윈도우의 역사 ... 338 윈도우 프로그래밍의 소개 ... 339 Visual C++와 윈도우 애플리케이션 ... 342 윈도우 애플리케이션의 생성 ... 342 실시간 메시지 루프의 생성 ... 355 재사용 가능한 윈도우 클래스의 생성 ... 360 Mirus 윈도우 프레임워크의 사용 ... 368 공통 윈도우 함수 ... 370 Show ... 373 요약 ... 373 질문과 답변 ... 373 연습 문제 ... 374 제12장 DirectX 소개 ... 375 DirectX란? ... 376 DirectX의 역사 ... 376 DirectX를 사용하는 이유 ... 377 DirectX의 컴포넌트 ... 379 DirectX의 작동 방식 ... 380 Visual C++를 이용한 DirectX의 사용법 ... 383 요약 ... 385 질문과 답변 ... 385 연습 문제 ... 386 제13장 DirectX 그래픽 ... 387 사용하게 될 인터페이스 ... 388 Direct3D 기본 기능의 사용 ... 390 Surface, Buffer 그리고 Swap Chain ... 405 Vertex, Polygon 그리고 Texture ... 415 윈도우 비트맵 ... 428 Full Screen과 다른 Bit Mode ... 431 컬러 이론과 컬러키 ... 432 Targa 파일 ... 436 애니메이션과 템플릿 집합 ... 438 충돌 감지 ... 440 2D 이미지 처리 ... 443 2D Primitive ... 449 Mirus의 개발 ... 454 요약 ... 531 질문과 답변 ... 532 연습 문제 ... 532 제14장 Directlnput ... 533 Directlnput에 대한 소개 ... 534 mrlnputManager ... 536 mrKeyboard ... 539 mrMouse ... 552 mrJoystick ... 565 요약 ... 576 질문과 답변 ... 576 연습 문제 ... 576 제15장 DirectSound ... 577 사운드 이론 ... 578 DirectSound의 기본 개념 ... 579 mrSoundPlayer ... 580 mrSound ... 584 Media Control Interface ... 595 mrCDPlayer ... 596 요약 ... 601 질문과 답변 ... 602 연습 문제 ... 602 제3부 하드코어 게임 프로그래밍 제16장 게임 디자인의 소개 ... 605 게임 디자인이란? ... 606 디자인 문서 ... 607 머릿속에 있는 기술이 그다지 좋지 않은 이유 ... 607 디자인의 두 가지 타입 ... 608 전체적인 디자인 문서 ... 610 간단한 게임 디자인 : "우주 침략자(Space Invaders)" ... 612 요약 ... 616 질문과 답변 ... 617 연습 문제 ... 617 제17장 자료구조와 알고리즘 ... 619 올바른 자료구조와 알고리즘의 중요성 ... 620 리스트 ... 622 트리 ... 634 일반적인 트리 ... 635 이진 검색 트리 ... 642 데이터의 정렬 ... 657 버블 정렬 ... 657 퀵 정렬 ... 660 압축 ... 665 RLE 압축 ... 666 요약 ... 668 질문과 답변 ... 668 연습 문제 ... 669 제18장 게임의 수학적 측면 ... 671 삼각함수 ... 672 벡터 ... 677 행렬 ... 687 가능성 ... 697 함수들 ... 700 요약 ... 703 질문과 답변 ... 703 연습 문제 ... 704 제19장 인공지능에 대한 소개 ... 705 인공지능의 다양한 분야 ... 706 Deterministic 알고리즘 ... 714 Finite State Machines ... 720 퍼지 이론 ... 722 메모리를 사용하는 간단한 방법 ... 726 요약 ... 727 질문과 답변 ... 728 연습 문제 ... 728 제20장 물리학 모델링에 대한 소개 ... 729 물리학의 소개 ... 730 물리학 엔진의 개발 ... 730 기본적인 물리학 개념 ... 733 힘 ... 740 중력의 작용 ... 746 마찰 ... 752 충돌 처리 ... 758 시뮬레이팅 ... 764 파티클 시스템 ... 773 요약 ... 790 질문과 답변 ... 790 연습 문제 ... 791 제21장 벽돌깨기 게임 개발 ... 793 벽돌깨기 게임의 설계 ... 794 벽돌깨기 게임의 구현 ... 801 결론 ... 850 제22장 게임 발매 ... 851 게임이 판매할 만한 가치가 있는가? ... 852 게임 유통회사의 선택 기준 ... 853 올바른 게임 유통회사를 고르는 방법 ... 854 접촉 ... 855 중요 일정 ... 856 유통회사를 찾지 못한 경우 ... 857 인터뷰 ... 857 요약 ... 862 참고 ... 862 결론 ... 862 제4부 부록 부록 A CD-ROM에 대해서 ... 865 소스 ... 867 마이크로소프트 DirectX 8.1 SDK ... 867 프로그램 ... 867 게임 ... 868 부록 B Visual C++를 사용한 디버깅 ... 871 Breakpoint와 실행 제어 ... 872 실행중에 변수의 수정 ... 873 변수 값 보기 ... 874 부록 C 이진수, 16진수, 십진수 ... 875 이진수 ... 876 16진수 ... 876 십진수 ... 877 부록 D A C Primer ... 879 표준 입력과 출력 ... 880 파일의 입력과 출력 ... 881 구조체 ... 884 동적 메모리 ... 884 부록 E 연습 문제 정답 ... 887 부록 F C++ 키워드 ... 897 부록 G 프로그래밍에 필요한 표 ... 899 ASCII 표 ... 900 적분 표 ... 902 미분 표 ... 902 관성 방정식 표 ... 903 부록 H 관련 사이트 및 참고 문헌 ... 905 게임 개발과 프로그래밍 ... 906 새로운 소식이나 리뷰 그리고 다운로드 사이트 ... 907 엔진 ... 907 독립적인 게임 개발자 ... 907 산업 ... 908 컴퓨터 유머 ... 908 참고 도서 ... 909 찾아보기 ... 910