-
파일은 총 3개로 되어 있습니다.
-
MinesweeperHost.exe : 지뢰찾기 게임 알고리즘 측정 -- https://github.com/dotnetopenchat/Minesweeper/blob/master/MinesweeperHost.exe 에서 다운로드 또는 프로젝트 소스 다운로드
-
Minesweeper.dll : 지뢰찾기 로직 구현 인터페이스 DLL --https://github.com/dotnetopenchat/Minesweeper/blob/master/Minesweeper.dll 에서 다운로드
-
MinesweeperController.dll : Minesweeper.dll 인터페이스를 상속받아 구현한 구현체 알고리즘 DLL (실제 알고리즘 구현해서 생성해야 할 dll)
※ 구현한 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);
}