Im 지뢰 찾기 게임에서의 프로그래밍. 끝 부분에 꽤 귀엽다. 마지막 부분에만 문제가 있습니다.이웃을 찾는 지뢰 찾기 알고리즘?
게임에서 (그림 참조) 왼쪽 상단 필드를 클릭하면 광산이없는 곳의 필드가 바뀌고 테두리에는 숫자가 표시됩니다.
이 필드를 찾고 주위를 돌리거나 표시하는 알고리즘은 무엇입니까? 녹색 원의 필드 알고리즘입니까? 나는 처음부터 설계를하고있는 중이 야
Im 지뢰 찾기 게임에서의 프로그래밍. 끝 부분에 꽤 귀엽다. 마지막 부분에만 문제가 있습니다.이웃을 찾는 지뢰 찾기 알고리즘?
게임에서 (그림 참조) 왼쪽 상단 필드를 클릭하면 광산이없는 곳의 필드가 바뀌고 테두리에는 숫자가 표시됩니다.
이 필드를 찾고 주위를 돌리거나 표시하는 알고리즘은 무엇입니까? 녹색 원의 필드 알고리즘입니까? 나는 처음부터 설계를하고있는 중이 야
, 나는 당신이 도움이되기를 바랍니다. ,
1 1 1
1 9 1
1 1 1
다음
9 폭탄을 나타냅니다 :
내 게임 분야는 정수의 NXN 행렬 인 경우
,0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
나는 이러한 3 × 3 행렬을 적용하여 해당 행렬에 폭탄을 배치 모델링 할 수 있습니다 아마 더 큰 정수를 사용해야 할 것입니다. 그리고 제가 적용을 말할 때, 나는 위치를 선택하고 그 3x3 행렬의 숫자로 그것을 증가시킵니다. 그럼 1 폭탄을 두자.
0 1 1 1 0
0 1 9 1 0
0 1 1 1 0
0 0 0 0 0
0 0 0 0 0
첫 번째 폭탄 옆에 다른 폭탄을 놓자. 그리고의 조금 영리하게하고 세포의 초기 값이
0 1 2 2 1
0 1 9 9 1
0 1 2 2 1
0 0 0 0 0
0 0 0 0 0
9.의 어딘가에 아래 다른이 시간을 배치하자 때 위치를 증가시키지.
0 1 2 2 1
0 1 9 9 1
0 1 3 3 2
0 0 1 9 1
0 0 1 1 1
그래서 오른쪽 하단에서 숫자를 공개하려고합니다. 내 알고리즘은 무엇이되어야합니까?
function revealCell(location)
{
if(cellValueIsRevealed(location)) {
return;
}
var value = revealValueOfCell(location);
if(value > 0)
{
return;
}
foreach(neighbor in neighbors)
{
revealCell(neighbor);
}
}
하나의 방법은 논리 값의 매트릭스를 구현하는 것, cellValueIsRevealed
메소드를 구현하려면 : 여기에 내 걸릴 것입니다.
인접한 두 개 이상의 0이있을 때 무한 재귀에 대한 보호를 추가합니다. – interjay
@interjay 무한 재귀를 피하기위한 바로 가기 동작을 추가했습니다. –
나는 [Flood fill] (https://en.wikipedia.org/wiki/Flood_fill) 알고리즘과 비슷한 것으로 추측합니다. –
도움을 주셔서 감사합니다. 더 쉬운 알고리즘이 있는지 알고 계십니까? – naikjones
이 문제를 해결하기 위해 [this] (https://en.wikipedia.org/wiki/Flood_fill#Stack-based_recursive_implementation_.28fourway.29)보다 간단한 알고리즘을 찾기가 어려울 것입니다. – SirGuy