해결된 질문
작성
·
325
·
수정됨
0
if (rand.Next(0, 2) == 0)
{
Tile[y, x + 1] = TileType.Empty;
count++;
}
else
{
int randomIndex = rand.Next(0, count);
Tile[y + 1, x - randomIndex * 2] = TileType.Empty;
count = 1;
}
만약에 (1, 1) (1, 2) (1, 3) 이렇게 세 지점이 연속해서 뚫려있을 경우, (1, 0) 부터 보았을 때
(빨) (초) (빨) (초) 이런 상태에서 시작했다고 가정한다면..
x == 3 일 때 count 는 2 가 되고, 그렇기 때문에 randomIndex = {0, 1} 이 가능합니다.
randomIndex = 0 일 경우 새로 뚫릴 지점의 좌표는 (2, 3) 이 되고, 1일 경우 (2, 1) 이 됩니다.
따라서 이 경우에 (2, 2) 지점은 뚫릴 가능성이 없습니다.
>> 위에서 제가 이해한 것이 맞는건지 궁금합니다. 왜 이렇게 헷갈리는지 모르겠네요..
답변 1
1
네 그건 맞는데 애당초 처음에 맵을 만들 때
[빨][빨][빨][빨][빨][빨][빨][빨][빨][빨][빨]
[빨][초][빨][초][빨][초][빨][초][빨][초][빨]
...
이렇게 시작한 상태라고 가정합니다.
예제에서 가정하신 (2, 2)를 안 뚫는 이유는 그 곳은 원래 [빨]이 위치한 지점이기 때문입니다.
지나간 [초] 위치에서만 아래로 내려가는게 이번 알고리즘입니다.
뭐 사실 아주 중요한 내용은 아닙니다