etc/프로젝트

[임시소] 랜덤 미로 생성

uyt8989 2022. 6. 20. 14:57

 랜덤 미로 생성하는 알고리즘이 필요해서 조금 검색해보니 정말 다양한 알고리즘이 있었다. 굳이 복잡한 알고리즘은 필요하지 않았다. 보드에서 출력할 수 있는 공간이 부족하다 보니 벽도 좌표로 저장하는 알고리즘을 사용하게 되면 이동할 수 있는 칸이 너무 적어질 것 같았다. 그래서 알고리즘을 조금 수정할 필요가 있어서 비교적 간단한 Recursive랑 Binary Tree 둘 중에 고민했다. 원래는 둘 다 구현해보고 비교하려고 했었는데, 벽을 나타내는 방법이랑 조금 충돌이 나서 그냥 Binary Tree만 구현하기로 했다. 하려면 할 수는 있겠지만 알고리즘을 구현하는 게 핵심은 아니라고 생각했다. 그리고 랜덤 함수를 sleep 없이 사용했더니 이상한 결과가 나왔다. 시드 값이 바뀌지 않는 이상은 계속 같은 값이 나왔다. 그래서 시드 값을 바꾸기 위해서 Sleep(1000)으로 1초씩 기다려야 했다. 7x10 미로 만드는데 무슨 1분 넘게 걸리나 싶지만 일단은 이렇게 넘어가기로 했다...

 

 이 알고리즘 오른쪽이나 아래쪽 중 하나의 벽을 뚫는 상당히 간단한 알고리즘이다. 아예 뚫을 수 없는 벽만 예외 처리하면 된다. 다음과 같이 단순한 미로가 생성된다. 미로가 상당히 단순하게 나오는 것이 이 알고리즘의 단점이다. 가장 아랫줄과, 오른쪽 줄은 그냥 고속도로가 뚫려버린다.

 

추가)

이후에 디바이스 드라이버와 안드로이드 프로그램도 작성하였는데 정신없이 코딩하다 보니 블로그에 글 쓰는 것을 완전히 까먹고 있었다. 그런데 물론 블로그에 글을 작성할 수도 있지만 딱히 쓸만한 내용이 없는 것 같다. 굳이 쓰려면 JNI 정도...? 그런데 아마 글을 따로 쓸 것 같지는 않다. 임시소 프로젝트는 유기!

'etc > 프로젝트' 카테고리의 다른 글

[임시소] 기말 프로젝트 시작  (0) 2022.06.20