강희경이 4일간에 걸쳐 수행한 단기 프로젝트.
자료구조1의 과제로 RandomWalk가 나오는 것을 보고 바퀴벌레의 움직을 그래픽으로 나타내기로 결정.
----
----
자료구조1의 과제로 RandomWalk가 나오는 것을 보고 바퀴벌레의 움직을 그래픽으로 나타내기로 결정.
----
----
2.1. 3월 19일 토요일 ¶
진행시간: 2시간
모두가 집부엠티를 가서 혼자 너무도 심심했기 때문에 시간나 때워보자라는 생각으로 무작정 코딩.
먼저 바퀴벌레 그림 먼저 그렸다.
rkdBug.bmp
창크기의 고정과 메뉴와 상태바를 없애고 나서 일단 바퀴벌레 그림을 불러와서 뷰에 그려봄. 잘 그려진다.
CBug클래스를 생성하여 바퀴벌레의 움직임을 나타내는 멤버함수(Move)와 바퀴벌레의 위치와 방향을 나타내는 멤버변수(CPoint position, int direction)를 생성.
다큐에서 CBug타입의 멤버 변수를 생성한다. 그리고 뷰에서 방향키의 키이벤트(OnKeyDown)를 받으면 다큐의 CBug 타입의 멤버 변수의 Move함수를 호출하고 변경된 position과 direction을 OnDraw에서 받아서 알맞은 그림을 잘라내서 뷰에 그린다.
다큐에 RandomWalking함수를 제작하고 뷰에서 스페이스바의 키이벤트가 일어나면 0.3초의 타이머가 생성(OnTimer)되어 RandomWalking함수를 0.3마다 호출하고 변경된 위키와 방향대로 뷰에 그려준다.(OnDraw) 다시 스페이스바를 누르면 움직임을 멈춘다.
rkdBug.bmp
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변수를 생성하여 바퀴벌레가 움직일 때마다 늘려준다. 그리고 프로그램이 정상종료 되었을 때(스페이스바에 의한 종료는 정상종료가 아니다.) 메세지 박스로 그 값을 출력한다.
5.2. 다운로드 ¶
실행파일: rkdRandomWalk.exe
----
프로젝트분류 RandomWalk 강희경
기왕하는거 비주얼스튜디오 안 깔린데서 할 수 있게 해주지.ㅡㅡ;
소스파일: rkdRandomWalk.zip프로젝트분류 RandomWalk 강희경