본문 바로가기
토이프로젝트/지뢰찾기

파이썬으로 지뢰찾기 만들기

by 크라크라 2018. 2. 3.

파이썬을 공부하던 도중, 파이썬으로 지뢰찾기를 상당히 간단하게 구현할 수 있을 것 같다는 생각이 들었다. 일단 지뢰찾기의 맵을 구현해야하는데, 파이썬의 tkinter 라이브러리로 간단한 기능들을 구현하는 것에는 무리가 없어보였다. 또, 지뢰찾기의 내부 알고리즘이 그렇게 어렵지 않을 것이라 생각했기 때문이다. 물론, 지뢰찾기를 마이크로소프트에서 제공하는 게임의 수준으로 까지 제공하려면 조금 더 생각해야할 부분이 있을 것 같기는 하다.


그래서, 아마 진행되는 루트는 예상컨대 

(1) 맵에 지뢰를 뿌리고 클릭으로 하나하나 체크해보기

(2) 내부 알고리즘 보완으로 맵 전체의 지뢰를 한 번에 찾기 

(3) 게임화하기


정도로 볼 수 있을 것 같다. 


일단 사용언어는 Python 3.6 이고, GUI는 python 내장 라이브러리인 tkinter를 사용하면 충분해 보인다.



생각해봐야할 부분은 (중요도 순서가 아님) 


(1) GUI 구성하기 

 -  마이크로소프트 기본 게임의 형상을 떠올려보자. => 격자형 버튼들의 집합이다

 

(2) 맵에 지뢰심기

- 간단하게 버튼 집합의 위치를 랜덤으로 받아서 내부에서 가지고 있으면 될 것 같다.

- 지뢰의 개수, 맵의 크기는 사용자에게 받을 것인가, 아니면 그냥 임의의 값을 사용할 것인가(시작은 임의로 하자)

- 심은 지뢰를 내부적으로 가지고 있는 버튼을 누르게 되면 실패


(3) 주변에 있는 지뢰 체크하기

- 완전 안쪽에 있는 경우에는 주변에 있는 8개의 버튼을 모두 체크해야한다. (이외의 경계에 있는 부분은 5개, 그리고 모서리에 있는 경우는 3개의 버튼을 체크하자

- 체크해서 주변에 있는 지뢰의 개수만큼을 표시 (기존 지뢰찾기 처럼 자동으로 늘려가는 부분은 어떻게? - 재귀함수?)

- 체크 결과를 버튼에 텍스트로 표시할 수 있다.


(4) 자동으로 찾는 버전까지 완성

- (3)의 알고리즘 완성한 것을 재귀로 모든 버튼을 돌려주면 될 것이다. 


(5) 게임화

-  적당한 규모까지의 지뢰를 찾아주고, 사용자의  입력에 따라 반응할 수 있어야 한다.   

- 시간체크하는 기능도 넣어볼까?



다음 글 부터는 차근차근 진행해봐야지..

댓글