• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

랜덤으로 길 뚫는 작업에서 randomIndex 질문입니다.

23.03.21 08:55 작성 23.03.21 08:56 수정 조회수 252

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)를 안 뚫는 이유는 그 곳은 원래 [빨]이 위치한 지점이기 때문입니다.
지나간 [초] 위치에서만 아래로 내려가는게 이번 알고리즘입니다.

뭐 사실 아주 중요한 내용은 아닙니다