||무언가에 열심일수 있다는 그 자체만으로도 이미 재능이 있다는거죠. - 만화 "강철의 연금술사"에서 동생 알폰스의 대사.||
1 알림 #
- 어떤 사정으로 인해서 5월 13일 이후로 제가 수업을 진행할 수 없게 되었습니다. 짧은 시간이었지만 강의시간때 즐거웠다는 점 여기에 적어둡니다.
C/C++ 게임 프로그래밍에 대한 부분은 제가 이곳에 계속 강좌를 만들도록 할테니 이전에 저와 인연이 있었던 수강생 여러분들은 자주 들러주시고, 공부하시다가 이메일로 질문해주시면 제가 그때그때 답변드리도록 하겠습니다.
2 공지 #
- 메뉴나 글은 계속 변동할 수 있습니다. 제가 새로 올려놓은 글은
표시를 해놓겠습니다. 수정된 글은
표시가 붙습니다.
- 수업때 비주얼C++이 설치되어있지 않아 실습을 해볼수 없는 분들이 계십니다. 그러신 분은
여기에서 devc++을 받아 설치하셔서 실습에 임해주세요. (집에서 실습하실때도 좋습니다)
- 게임프로그래밍초보FAQ - 한번 적어보았습니다. 읽어봐주시길... 약간은 주관적인 내용이라는 점을 참고해주세요.
- 중요->
SDL/easy라이브러리 - C/C++ 강의용으로 사용할 간단한 게임 라이브러리입니다. 강의수강생분들은 들러보시길...
3 주요링크 #
- 학원링크는 삭제합니다. 하지만 페이지는 어떤 형태로든 재정리후 계속 유지하도록 하겠습니다. 학원이 밉지, 학원생 여러분이 미운건 아니기 때문에...
http://msdn.microsoft.com/library/default.asp - MSDN 온라인 라이브러리 링크.
4 C #
- C/명심해야할것들 - C 언어를 사용하면서 명심하여야 할 내용을 적었습니다.
- C/데이타타입기초 - 데이타타입 개념에 대한 강의요약입니다.
- C/함수이야기 - 함수 선언 및 구조에 대한 내용.
- C/printf와scanf - 가장 기본적인 입출력 함수. 처음에는 이게 있어야 뭘 해도 하죠.
C/반복문이야기 - for, while, do-while 에 대한 내용.
C/조건문이야기 - if, switch에 대한 내용.
- C/유효범위 - 유효범위의 정의 및 전역/지역변수 개념, static 사용법.
- C/포인터기초 - 포인터관련 연산자 및 개념.
- C/동적메모리할당 - malloc(), free(), calloc(), realloc()에 대한 소개 및 개념 강좌.
- C/배열이야기 - C 배열에 관한 내용.
- C/구조체이야기 -
- C/표준함수/문자열 - 문자열에 관한 표준 함수들입니다.
- C기초/난수발생기 - srand(), rand()에 대한 글.
- C기초/강의팁모음 - 강의중 팁을 모아봤습니다.
8.3.1 비트맵기초 #
메모리비트맵DC
BitBlt(),
StretchBlt()
win32api/비트맵띄우기 - 비트맵 로딩 및 화면 출력 예제. DDB에 대한 간단한 강의요약 첨부.
exam_data.zip (50.8 KB) - 예제데이타입니다. 64방향 비행기 이미지와 3컷짜리 운석 폭파애니메이션입니다. 수강생들 예제연습하는데만 사용을 허가합니다.
8.3.2 고급 비트맵 함수 #
다음 함수들은 두가지 조건을 갖추어야 사용가능합니다.
- #include <windows.h>이전에 #define WINVER 0x0800와 같이 0x0500보다 큰 수로 지정되어있어야 합니다.
- msimg32.lib를 링크해야만 합니다.
AlphaBlend() - 반투명으로 비트맵 출력
TransparentBlt() - 특정 색은 건너뛰고 출력(투명색 효과)
8.4 POINT와 RECT #
RECT 구조체
POINT 구조체
PtInRect() - 특정 POINT좌표가 지정한 RECT내에 있는지 여부를 계산해준다
SetRect() - RECT 값 설정때 편하게 사용가능.
CopyRect() - RECT 값끼리 복사할 경우 유용.
EqualRect() - 두 RECT값이 동일한지 비교해준다.
IsEmptyRect() - 해당 RECT가 비어있는지 여부를 검사. 폭과 너비가 0이면 비어있다고 간주.
SetEmptyRect() - 모든 값을 0으로 설정.
OffsetRect() - 지정한 RECT값을 지정한 값만큼 이동시킨다.
IntersectRect() - 두 RECT끼리 겹치는 부분의 RECT값을 구한다. 만일 겹치지 않으면 0을 반환하므로 두 RECT간 충돌검사용으로도 좋다.
8.9 실습예제 #
- win32api/바운딩볼데모 - TextOut() API 함수 사용법 데모.
- win32api/운석피하기1 - TextOut()만 가지고 운석피하기 만들기!
- win32api/운석피하기2 - PeekMessage()와 GetKeyState() 활용한 간이 멀티키 구현 및 간단한 타이머 구현에 관한 내용입니다.
- win32api/운석피하기3 - 타이틀 화면<-> 게임장면 전환. 우주 워프 배경 구현.
- win32api/간이그림툴 - LineTo(), MoveToEx()함수를 사용하여 간단한 그림툴 만들기.
- win32api/간이그림툴2 - 팬, 브러시 적용예제.
- win32api/탱크데모1 - LineTo(), MoveToEx()함수를 사용하여 간단한 포대를 그리고, Ellipse()함수를 사용해서 동그란 모양의 탱크를 그리는 예제.
- win32api/운석피하기4 - DDB 기반의 비트맵비행기, 레이져난사까지입니다.
- win32api/운석피하기5 - 레이져/비행기/운석끼리의 충돌검사를 구현한 것입니다.
- win32api/운석피하기6 - 타이틀, 게임오버 및 점수출력/이름적기화면 등등을 구현.








