Skip to content

Latest commit

 

History

History
104 lines (87 loc) · 3.27 KB

게임설명.md

File metadata and controls

104 lines (87 loc) · 3.27 KB

지뢰찾기 게임 알고리즘 구현


  • 파일은 총 3개로 되어 있습니다.

    ※ 구현한 dll의 파일명은 반드시 'MinesweeperController.dll'로 해야 합니다.

  • git에서 다운로드 받은 Minesweeper.dll을 참조하면 IControl인터페이스를 구현할 수 있습니다.

※ 참고로 지뢰찾기 알고리즘은 NP-complete이기에 최종 측정시에는 지뢰 위치를 고정으로 하고,
다항식이 주어지도록 선택 경우의 수가 없게 측정 합니다.
public interface IControl
{
        /// <summary>
        /// 지뢰찾기의 셀을 선택합니다.
        /// </summary>
        /// <param name="useFlag">깃발 꽃기 여부</param>
        /// <param name="y">선택할 y좌표</param>
        /// <param name="x">선택할 x좌표</param>
        /// <param name="mines">지뢰 찾기 셀 정보 (2차원 배열 Y, X 좌표)</param>
        void Reveal(out bool useFlag, out int y, out int x, List<List<MinesCellInfo>> mines);
}
  • MinesCellInfo클래스 설명
public class MinesCellInfo
{
        public int Idx
        {
            get;
            set;
        }

        /// <summary>
        /// 깃발 꽃은 여부
        /// </summary>
        public bool UseFlag
        {
            get;
            set;
        }

        /// <summary>
        /// 선택한 셀인지 여부
        /// </summary>
        public bool IsRevealed
        {
            get;
            set;
        }

        /// <summary>
        /// 주변 지뢰 개수, 선택안된 셀은 null로 표시
        /// </summary>
        public int? MineCountHint
        {
            get;
            set;
        }
}
  • MinesweeperController.dll 구현 코드 예시
public void Reveal(out bool useFlag, out int y, out int x, List<List<MinesCellInfo>> mines)
{
	/*
	* 지뢰찾기 게임 룰 설명
	* 일반 지뢰찾기 게임과 동일하다
	*
	* 1. 지뢰는 모두 10개 이다 [랜덤 배치]
	* 2. 칸은 9 X 9 배열 판이다.
	* 3. mines변수에서 현재 지뢰찾기 판 상태를 확인 할 수 있다.
	* 	- 2차원 배열로 제공되며, 좌표계는 Y,X 좌표 다.
	* 4. 특정 칸을 선택하면 선택한 칸 기준으로 8칸 주변(상 하 좌 우 대각선 모두)의 지뢰가 있는 숫자를 표시해준다.
	* 5. 지뢰를 선택하지 않고 일반 칸을 모두 선택하거나, 지뢰로 판단되는 칸에 깃발을 모두 꽃으면 승리로 게임 종료 된다.
	* 6. 지뢰를 선택하면 바로 게임은 종료 된다.
	*/

	// 해당 칸에 깃발을 꽃을려면 true 단순 선택이면 false
	useFlag = false;
	
	// 랜덤으로 칸을 선택한다.
	Random rnd = new Random();
	y = rnd.Next(0, 9);
	x = rnd.Next(0, 9);
}