웅재의 코딩세상

미로탐색 2 본문

개념/알고리즘

미로탐색 2

웅드 2023. 11. 26. 22:18

1. 미로의  표현

2차원 배열로 표현한다. -> 0은 길, 1은 벽으로 정의한다.

0 1 0
0 1 1  // -> ㅏ 모양
0 1 0 

0 0 0
1 1 1  // -> - 모양
0 0 0

 

벽 배치 코드 모양
없음 0  
UP 1
RIGHT 2
UP | RIGHT 3
DOWN 4
UP | DOWN 5
RIGHT | DOWN 6 ㄱ(좌우반전)
UP | RIGHT | DOWN 7
LEFT 8

 

UP | LEFT 9 ㄴ(좌우반전)
RIGHT | LEFT 10
UP | RIGHT | LEFT 11
DOWN | LEFT 12
UP | DOWN | LEFT 13
RIGHT | DOWN | LEFT 14
UP | RIGHT | DOWN | LEFT 15 +

 

enum {

    UP = 1, // 2^0
    RIGHT = 2, // 2^1
    DOWN = 4, // 2^2
    LEFT = 8, // 2^3
};
int Maze::GetShape(int x, int y){

    int shape = 0;
    if(m_arrayMaze[y][x] != 0){ // 벽이 있는 경우에만 경우의 수를 따진다.
    
    	if(y > 0 && m_arrayMaze[y-1][x] shape |= UP; //위쪽에 벽이 있나
        // 위쪽에 벽이 있으면 1이기 때문에 shape와 or 연산을 해준다.
        if(y < MAZE_SIZE - 1 && m_arrayMaze[y+1][x] shape |= DOWN; //아래쪽에 벽이 있나
        if(x > 0 && m_arrayMaze[y][x-1] shape |= LEFT; //왼쪽에 벽이 있나
        if(x < MAZE_SIZE - 1 && m_arrayMaze[y][x+1] shape |= RIGHT; //오른쪽에 벽이 있나
    }
} // 주위의 벽 배치에 따라 벽 모양 코드를 리턴한다.
반응형

'개념 > 알고리즘' 카테고리의 다른 글

미로 탐색 : 최단 경로 찾기  (0) 2023.11.27
미로 탐색 알고리즘 : 우선법  (1) 2023.11.26
배열의 정의 (미로 탐색 1)  (0) 2023.11.26
소수 판별 알고리즘  (1) 2023.11.23
유클리드 알고리즘  (0) 2023.11.23