E D R , A S I H C RSS

바퀴벌레에게생명을

강희경이 4일간에 걸쳐 수행한 단기 프로젝트.
자료구조1의 과제로 RandomWalk가 나오는 것을 보고 바퀴벌레의 움직을 그래픽으로 나타내기로 결정.
----

----

1. 목적

오랜만의 코딩.
심심풀이.
아직 윈도우 프로그래밍에 익숙하지 못한 후배들에게 윈도우 프로그래밍의 재미를 선사.

2. 진행과정

2.1. 3월 19일 토요일

진행시간: 2시간

모두가 집부엠티를 가서 혼자 너무도 심심했기 때문에 시간나 때워보자라는 생각으로 무작정 코딩.

먼저 바퀴벌레 그림 먼저 그렸다.
Upload:rkdBug.bmp

창크기의 고정과 메뉴와 상태바를 없애고 나서 일단 바퀴벌레 그림을 불러와서 뷰에 그려봄. 잘 그려진다.

CBug클래스를 생성하여 바퀴벌레의 움직임을 나타내는 멤버함수(Move)와 바퀴벌레의 위치와 방향을 나타내는 멤버변수(CPoint position, int direction)를 생성.

다큐에서 CBug타입의 멤버 변수를 생성한다. 그리고 뷰에서 방향키의 키이벤트(OnKeyDown)를 받으면 다큐의 CBug 타입의 멤버 변수의 Move함수를 호출하고 변경된 position과 direction을 OnDraw에서 받아서 알맞은 그림을 잘라내서 뷰에 그린다.

다큐에 RandomWalking함수를 제작하고 뷰에서 스페이스바의 키이벤트가 일어나면 0.3초의 타이머가 생성(OnTimer)되어 RandomWalking함수를 0.3마다 호출하고 변경된 위키와 방향대로 뷰에 그려준다.(OnDraw) 다시 스페이스바를 누르면 움직임을 멈춘다.

2.2. 3월 21일 월요일

진행시간: 1시간 30분

CTile클래스를 생성하여 바퀴벌레가 밟은 횟수를 나타내는 frequency라는 멤버함수를 생성. 다큐에서 CTile타입의 배열(tile)을 생성하였다.

스페이스바를 누르면 tile배열의 모든 frequency가 0이되고 처음 밟은 타일의 갯수(numberOfVirginTile)가 총 타일의 숫자와 같아진다. 바퀴벌레가 타일을 밟을 때마다 그 타일의 frequency는 늘어나고, frequency가 0인 타일을 밟았을 경우 numberOfVirginTile은 줄어든다.

타이머의 주기마다 바퀴벌레는 움직이고 그 움직임과 각 타일의 빈도수를 뷰에 그려준다. 종료조건은 스페이스바의 키이벤트와 모든 타일을 적어도 한번씩 밟았을 경우(numberOfVirginTile == 0)이다.

2.3. 3월 22일 화요일

진행시간: 20분

다큐에 TotalNumberOfMovement변수를 생성하여 바퀴벌레가 움직일 때마다 늘려준다. 그리고 프로그램이 정상종료 되었을 때(스페이스바에 의한 종료는 정상종료가 아니다.) 메세지 박스로 그 값을 출력한다.

3. 프로젝트로 인해 얻은 것

코딩 감각을 살림.
재미는 있었다.

4. 프로젝트의 문제점

프로젝트 진행시 집중력의 부족으로 너무 많은 시간이 걸렸다.
너무 쉬운 프로젝트여서 얻은 게 별로 없었다.

5. 소스

5.1. 프로그램 사용법

방향키로 먼저 시작점을 택한다. 시작점을 택한 후 스페이스바를 눌러 랜덤워크를 진행한다. 정지를 원할 경우 스페이스바를 다시 누른다.

5.2. 다운로드

실행파일: Upload:rkdRandomWalk.exe
기왕하는거 비주얼스튜디오 안 깔린데서 할 수 있게 해주지.ㅡㅡ;
소스파일: Upload:rkdRandomWalk.zip

----
프로젝트분류 RandomWalk 강희경
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.3898 sec