주제 : 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를 어떻게 만들것인가를 생각해야하며
마우스 클릭을 통한 시작점과 도착점, 장애물을 생성하고 위치를 변경하는 방법에 대해 생각해보자.
실행화면
- 마우스휠로 셀의 크기를 조정할 수 있다.
처음 - 최소사이즈 - 최대사이즈
'프로젝트 > A Star Algorithm' 카테고리의 다른 글
[AStar] 배포하자! - 5 (2) | 2012.04.24 |
---|---|
[AStar] 대략적인 구현 끝! - 4 (0) | 2012.04.19 |
[AStar] 알고리즘을 구현하기 위한 준비를 끝내자! - 3 (0) | 2012.04.12 |
[AStar]에이 스타 알고리즘을 구현해보자! - 1 (0) | 2012.04.06 |