VC++ MFC 도와주세요
튼튼
도저히 손을 될수가 없습니다.
이걸해야 졸업을 할수 있는데 큰일 입니다. 나이도 많은데...
좀 도와주세요ㅜ.ㅜ
a. 기본 단계
볼4개(적색공 2개, 백색공 2개)를 클라이언트 영역내에서 계속 맴돌도록 하는 것입니다. 4개의 볼의 초기위치, 초기이동 방향, 이동속도, 공의 색 지정을 메뉴에서 지정할수 있도록 하는 것입니다.
일단, 4개의 대화상자를 작성합니다.
1번째 대화상자에서는 볼의 초기위치(x,y좌표)를 입력받을 수 있도록, 에디터박스와 스핀 컨트롤 객체를 추가합니다.(볼이 4개니까, 각 볼마다 필요하겠지요. 그래서 에디터박스 8개, 스핀버튼 8개가 필요합니다.)
2번째 대화상자에서는 볼의 초기 이동방향(프로그램이 시작되었을 때, 4개의 볼 각각이 움직이는 방향)을 지정할수 있도록, 에디터박스 컨트롤 객체와 스핀버튼을 추가합니다.(역시, 볼이 4개니까, 에디터박스4개와 스핀버튼 4개가 필요합니다.)
3번째 대화상자에서는 볼의 이동속도는 지정할 수 있도록, 에디터박스 컨트롤 객체를 지정합니다.(1개) 4개의 볼은 동일한 속도로 이동합니다. 여기서, 이동속도의 입력하는 값은 프로그래머가 임의로 지정하여 사용하면 됩니다. 예를 들어서, 이동속도가 5일 때는 한번에 움직이는 공의 거리(즉, 공 위치의 좌표변화)가 10픽셀정도 움직이도록, 이동속도가 10일 때는 20픽셀정도 움직이도록 합니다.
4번째 대화상자에서는 공의 색을 지정할 수 있도록, 각 볼마다 4개의 라디오 버튼 객체를 추가합니다.(기본단계에서는, 4가지 색상만 선택할수 있도록 합시다. 빨간색, 파란색, 초록색, 검은색) 따라서, 볼이 4개니까, 총 16개의 라디오번튼 객체를 추가하면 되겠지요.
위의 4개의 대화상자 각각을 띄우는, 즉 실행시키는 이벤트는 메인메뉴에서 선택할 수 있도록 합니다. (즉, 메인메뉴에 다음과 같은 메뉴가 추가되어야 겠지요. 1. 초기위치 지정, 2. 초기속도 지정, 3. 초기방향 지정, 4. 공의 색 지정)
그리고, 추가적으로, 공의 움직임이 시작되도록, “시작(Start)”메뉴를 만듭니다. 즉, 스타트 메뉴를 선택시, 앞의 4개의 대화상자에서 지정한 사항에 따라서 공들의 움직임이 시작됩니다.
공의 움직임을 정지시키는 메뉴를 추가합니다. 메인메뉴의 “정지(종료)”메뉴를 추가하여, 이 메뉴를 선택시, 스타트 시점부터 움직이기 시작했던 4개의 공의 움직임을 멈춥니다.
공의 움직임을 구현하기 위해서는, 8장에서 언급한 타이머를 사용하여야 할것입니다. 상황에 따라서는 타이머를 하나가 아닌 여러개를 사용해야 할 수도 있습니다. 여러개의 타이머는 SetTimer함수의 첫 번째 파라미터로 구분됩니다. 자세한 사항은 슬라이드와 MSDN, 혹은 다른 자료를 참고바랍니다.
b. 상위단계
기본단계와 기본적인 요구사항은 동일합니다. 차이점은 4개의 대화상자를 “탭 대화상자”를 사용하여 하나로 구현하고, 색 지정은 “공통대화상자(Common Dialog Box)를 사용하여 지정할 수 있도록 처리합니다. 색 지정 공통대화상자는 6장에서 언급한 바 있습니다. 참고하세요.
볼의 움직임의 시작은 탭 대화상자의 “확인”버튼을 클릭시, 바로 시작되도록 합니다. 따라서, 메인메뉴에서 “시작”메뉴는 불필요하겠지요.
c. 최상위단계
상위단계까지 해결한 사람은 최상위단계에 도전해 보기 바랍니다. 기본적인 사항은 “상위단계”와 동일합니다. 차이점은 4개의 볼이 움직이면서, 클라이언트 영역의 경계선에서 충돌을 감지할 뿐만 아니라, 4개의 볼들이 서로 충돌시에도, 충돌될 각도에 따라서, 부딪힌 공들이 방향을 전환하도록 하는 것입니다. 당구공이 충돌될때의 움직임을 생각하면 되겠지요.
기본단계에서 언급했던 3번째 대화상자를 변경하여, 4개의 볼 각각에 대해서 이동속도는 지정할 수 있도록, 각 볼마다 에디터박스 컨트롤 객체를 지정합니다.(총4개)