주제 : C#으로 구현하는 A Star Alogirhtm

개발환경 : Microsoft Visual Studio 2010

사용언어 : C#


2일차 요약 : 폼 위에 격자줄을 만들고 마우스 휠로 크기를 조정할 수 있게 했다.


2일차 작업 내용


- Board 클래스 완성

- Board 클래스는 폼 위에 보드를 생성하고

보드를 격자줄로 나누고 그리는 클래스이다.

- 격자줄은 검은 바탕위에 가장 우선적으로 그려야 할 선이다.

- 파일명 : Board.cs


- 폼 클래스에 Load, MouseWheel, Paint 이벤트 추가

- MouseWheel 이벤트는 이상하게도 속성창에 있지 않다.

MouseWheel 이벤트는 직접 타이핑해서 추가해야한다고 한다.

- Load 이벤트에는 프로그램이 시작되면 기본적으로 설정해줘야 할 것들이 들어간다.

이 이벤트에 추가할 것들이 많아보인다.


현재 Loade 이벤트 코드 상황

/*
* 화면이 로드되기 전에 프로그램에 필요한
* 기본적인 것들을 초기화한다.
*/
private void BaseForm_Load(object sender, EventArgs e)
{
    // esc 키를 누르면 프로그램 종료
    Application.AddMessageFilter(new ExitProgramClass());

    // 화면 바탕 색을 검은 색으로 바꿈
    this.BackColor = Color.Black;

    // 화면크기를 최대크기로 바꿈
    this.Width = Screen.PrimaryScreen.Bounds.Width;
    this.Height = Screen.PrimaryScreen.Bounds.Height;
    this.Location = new Point(0, 0);

    // 메인보드를 모니터 가로, 세로 길이를 매개변수로 넘겨 생성
    MainBoard = new Board(Width, Height);

    // 마우스 휠 이벤트
    this.MouseWheel += new MouseEventHandler(BaseForm_MouseWheel);
}



-Paint 이벤트는 폼을 그리는 이벤트이다.

일단은 Paint안에서 격자줄을 그리게 했지만

후에 격자줄을 그리고, AStar 알고리즘을 진행하며 Paint 이벤트가 발생할 때마다

전체를 그린다면 비용낭비가 발생할 수 있을 것 같다.

하지만, 추측컨데 Invalidate() 함수에 매개변수로 다시 그릴 부분을 잘 넘겨주면 효율적으로 그릴 수 있을 거 같다.

아니라면 다시 작성해야한다.


다음 할일

- 기본적인 준비는 끝났으며

이제 셀들을 어떤 자료 구조를 사용하여 저장한 후,

OpenNode와 CloseNode를 어떻게 만들것인가를 생각해야하며

마우스 클릭을 통한 시작점과 도착점, 장애물을 생성하고 위치를 변경하는 방법에 대해 생각해보자.



실행화면

- 마우스휠로 셀의 크기를 조정할 수 있다.

처음 - 최소사이즈 - 최대사이즈





Posted by 투명테잎