Joonas' Note

Joonas' Note

DFS on hexagrid with Python 본문

개발/python

DFS on hexagrid with Python

2017. 11. 4. 21:45 joonas

    몇년 전부터 구현해보고 싶던 거였는데, 이러다가 대학을 졸업 전에 못할까봐 날잡고 했다. 근데 1시간만에 끝나버린건 함정

    hexagrid에 대한 구현을 다루고 있으며, 실제 개발에서는 어떻게 쓰이는 지 정확히 모른다. 그저 "이렇게 하면 되겠지?"라는 생각에서 출발했음을 알린다.

    2분 요약

    https://youtu.be/vxnnPselHKI


    육각형을 하나의 칸으로 사용하는 벌집 형태의 2차원 평면을 게임에서 많이 찾아볼 수 있는데, 대표적으로 시드마이어의 문명 시리즈가 그렇다.

    개인적으로 이 벌집 모양을 많이 좋아하는 편인데, 매번 어떻게 구현했을까? 생각만 하고 정작 고민을 해보지 않았었다. 그러다 우연히 생각이 번뜩나서 개발 과정을 녹화해보면 재밌겠다 싶어서 진행했다.

    녹화 중간에 (엄청 빠르게 지나가지만...) 잠깐 나오지만 그림판으로 계산도 해보고 그랬는데, 생각보다 단순한 원리로 구현되었다.

    홀수번째와 짝수번째가 가로 축이 살짝 엇갈리면 6면이 인접하게 되는 hexagrid가 가능했다.

    이후로는 GUI 개발하는 데에 시간 다 쏟음


    결과


    랜덤으로 적당한 크기의 hexagrid를 만든다. 마우스 왼쪽 클릭을 하면 해당 칸부터 DFS한다. 오른쪽 클릭하면 칸이 지워진다.

    끝으로

    개발하면서 굉장히 재밌었다. 언젠가 꼭 해야지 하면서 계속 미뤄둔 일을 끝내서 후련하기도 하다.

    처음에는 파이썬도 진짜 조금 써봐서 잘 모르는데, GUI 엔진인 Tkinter 라는 건 오늘 아예 처음 써봐서 정말 끝낼 수 있을까 싶었다.
    근데 파이썬은 정말 무서울 정도로 개발하기 편했다. 막혀서 끙끙대는 일도 10~20분 정도 검색하면 해결되는 마법이랄까.

    in an hour라고 해서 1시간동안 제한시간을 걸어두고 개발한 것은 아니고, 그냥 녹화했는데 1시간 좀 넘겨서 끝났길래 그렇게 적었다.

    녹화가 처음이었는데, 생각보다 재밌는 경험이어서 다음에도 해볼까싶다.


    Comments