본문 바로가기
프로그래밍/Python

Word Search 학습지 제작기 공유

by 페이지다운 2019. 12. 14.
반응형

나는 퍼즐을 아주 좋아하는 것은 아니지만 영어학원에서나 학교에서 워드 서치 학습지를 주고 풀어오라고 하면 재밌게 풀던 기억이 있다.

 

그래서 그 기억을 되살려 아예 직접 워드 서치을 만들어보고 싶다는 생각이 들었다. 그리고 그와 함께 든 생각이 "워드 서치을 만들어 주는 프로그램이 있으면 어떨까?"였다.

 

물론 인터넷에 워드 서치를 검색하면 모양까지 선택해서 만들 수 있지만 직접 프로그램을 만들어 보는게 의미있을 것 같았다.

 

따라서 나는 이 프로그램을 만들어 보기로 했다. 사용한 언어는 Python 3, 라이브러리는 GUI 이용을 위해 PyQt5를 사용했으며, 워드 파일 생성을 위한 docx, 라이브러리는 아니지만 응용 프로그램 빌드를 위해 pyinstaller를 이용하였다.

 

코드는 추후에 좀 더 깨끗하게 정리가 되면 공개하도록 하겠다.

 

이 프로그램에서 지원하는 방향은 총 8가지다(이름이 워드 스크램블로 되어 있는데, 처음에 이걸 워드 스크램블이라고 하는 줄 알았다. 워드 스크램블은 단어 철자의 순서를 섞어 맞추도록 하는 것이다. 현재는 수정되어 있다).

<일반>

좌 -> 우

우 -> 좌

상 -> 하

하 -> 상

<대각선>

좌 -> 우, 상 -> 하

좌 -> 우, 하 -> 상

우 -> 좌, 상 -> 하

우 -> 좌, 하 -> 상

 

(알고리즘이 재밌는데, 나중에 코드와 함께 설명하겠다)

 

프로그램을 켰을 때이다.

핵심만 존재하는 화면이다. 가로와 세로줄이 저런 이유는 워드로 출력할 때 가로가 최대 32까지 가능하고 세로는 아래 단어까지 고려할 때 24까지 가능하기 때문이다.

 

가로, 세로를 입력하고 설정 적용을 눌러보자(보통 최대까지 하는게 일반적일 것이다) 세로까지 입력하고 나서 엔터를 누르면 설정 적용된다.

 

설정 그룹박스가 비활성화 되면서 가능한 단어 개수와 글자 수가 바뀐다(저 숫자를 넘어가면 입력이 안된다)

 

이제 단어를 입력해 보자

 

단어 입력 칸에 단어를 입력하고 추가 버튼이나 엔터를 누르면 밑 리스트에 단어가 추가된다.

 

오타를 냈거나 단어가 마음에 들지 않을 경우 단어를 클릭하고 삭제 버튼을 누르면 삭제할 수 있다.

 

다음은 단어 파일 가져오기/내보내기 기능이다. 여기서는 단어를 하나 하나 입력해야 하는데, 많은 양의 단어를 한꺼번에 입력하고 싶을 경우 메모장에 다음과 같이

 

하나 입력하고 엔터를 누르는 방식으로 입력하고(하나하나 입력할 때나 여기나 upper() 함수를 통해 전부 대문자로 바꿔주므로 상관 없다) 단어 파일 가져오기를 클릭한다.

가져올 텍스트 파일을 선택하고 열기를 선택하면 자동으로 파일이 불러와진다.

반대로 내보내기는 입력된 단어들을 텍스트 파일로 내보낸다.

그럼 이제 생성을 해 보자. 생성을 위한 준비물로는 압축 파일에 포함된 template.docx 파일과 D2Coding 코딩 글꼴 파일이다.(코딩 글씨체를 이용한 이유는 글자의 크기가 일정해서 더 찾기가 쉽다) 그리고 템플릿이 이 글꼴을 기반으로 만들어져 있다. 반드시 설치해야 하며 설치하지 않으면 오류가 발생한다. 템플릿 또한 수정하지 않는 것을 권한다.

 

생성하기를 클릭하면

워드 파일(.docx)을 저장할 위치를 물어본다.

저장을 누르거나 엔터를 누르면 즉시 생성이 시작된다(만약 똑같은 이름의 문서가 실행되고 있을 경우 오류가 발생한다)

그러면 자동으로 워드 파일이 생성됨과 동시에 미리보기에 완성본이 뜬다.

 

그리고 나머지 단어와 설정도 초기화된다.

그럼 이제 워드 파일을 열어보자.

첫번째 페이지에는 완성된 학습지가, 두번째 페이지에는 답이 형광색으로 칠해져 있다(이거 구현하느라 진짜 진땀 뺐었다)

 

내 프로그램이 대단한 것은 아니지만 그래도 필요한 분들에게 유용하게 쓰였으면 좋겠다.

 

D2Coding 폰트는 '누구나 사용' 가능하고 '누구나 재배포' 가능한 OFL 라이선스에 따라 함께 공유하며, 이 워드 스크램블 프로그램은 공유할 때에는 반드시 이 블로그 링크를 통한 공유만을 허용하며, 따로 다운로드 받은 채로 직접 공유하는 것은 금지된다.

 

수정을 요청할 사안이나 오류가 발생하면 이 블로그 댓글을 통해 건의하시기 바랍니다.

 

*혹시나 악성코드 걱정하실 분을 위해 바이러스 토탈로 직접 검사까지 해 보았다.

https://www.virustotal.com/gui/file/b704315950a9522cf7426e2559204656aee12866ca9b7be128b1a0fa853b6162/detection

 

VirusTotal

 

www.virustotal.com

접속하면 파일의 악성 여부를 알 수 있다. 70개 엔진 중 2개만이 악성코드로 분류했으나 문제 없는 수준이다.

 

<다운로드 링크>

https://mega.nz/#!mbYggIBZ!nYBMPmHCVuzWNe4Tf-eGmI8rC48YXxRjOuO8LqVmElM

 

MEGA

MEGA provides free cloud storage with convenient and powerful always-on privacy. Claim your free 50GB now

mega.nz

 

반응형

댓글