Hangyou: hangman 스타일 영단어 게임 (교육용?)

cinsk의 이미지

며칠 전에 후배의 새 휴대폰에 있는 단어 게임을 하던 도중, 갑자기 예전에 text 모드에서 동작하는 hangman 게임이 생각났습니다. Hangman은 주어진 횟수 안에 컴퓨터가 /usr/share/dict/words에서 랜덤으로 골라둔 단어를 맞추는 게임입니다. 그런데, hangman은 게임을 끝날 때, 단어를 알려주지만, 이 단어의 뜻은 알려주지 않기 때문에, 실제로 사전을 뒤져보지 않는 이상, 영어 단어 공부?에 큰 도움이 안됩니다. 가장 큰 이유는 hangman 게임이 실제 단어의 뜻을 가진 dictionary를 가지고 있지 않기 때문입니다.

그래서, 해당 단어의 뜻풀이 또는 예문을 보여주고, 그 단어를 맞추는 게임?을 python으로 간단하게 만들어보았습니다. 급히 만들어서 버그 투성이겠지만, 그럭저럭 play 가능합니다.

Python version 2.4.4 또는 2.5.2에서 테스트해 보았습니다.

Hangyou에 가서 download를 선택하면 소스를 받을 수 있습니다.

시작할 때 "--level" 옵션을 주면, 단어의 수준을 지정할 수 있습니다. 예를 들어 정말 초보적인 단어만 원한다면 "--level=0"을, 초고수라면 "--level=5"를 선택하면 됩니다. "--level=6"은 단어의 수준에 상관없이 아무 단어나 사용합니다.

게임 상태에서 쓸 수 있는 키는 다음과 같습니다:

ESC - 종료
? - 힌트 보기
[A-Z] - 단어 입력

hangyou는 예문과 단어를 네이버 영영 사전(콜린스)에서 훔쳐옵니다. ^^;;

게임이 끝나면, 한번이라도 틀린 단어?의 목록과 URL을 출력합니다. Gnome terminal과 같은 terminal을 쓰고 있다면 마우스를 이용, 바로 해당 URL을 방문할 수 있기 때문에, 편리합니다.

You solved 4 question(s) and got 28 scores in your lifetime.
From your history, you may not know these words:
 
 RUEFUL (1) <a href="http://eedic.naver.com/search.naver?query=rueful
" rel="nofollow">http://eedic.naver.com/search.naver?query=rueful
</a> PULPIT (3) <a href="http://eedic.naver.com/search.naver?query=pulpit
" rel="nofollow">http://eedic.naver.com/search.naver?query=pulpit
</a> PARLOUS (2) <a href="http://eedic.naver.com/search.naver?query=parlous
" rel="nofollow">http://eedic.naver.com/search.naver?query=parlous
</a> TOPSIDE (2) <a href="http://eedic.naver.com/search.naver?query=topside
 
" rel="nofollow">http://eedic.naver.com/search.naver?query=topside
 
</a>

괄호 안의 수치는 틀린 횟수 + 힌트 사용 횟수입니다. 수치가 높을수록 모르는 단어일 확률이 높습니다.

File attachments: 
첨부파일 크기
Image icon hangyou.png11.78 KB

댓글

stypr의 이미지

오우~! ㅡ.ㅡb

chanchan의 이미지

터미널 창의 화면 사이즈를 줄이면 아래와 같은 에러가 발생합니다.

error: exception occurred: wmove() returned ERR

Porter Stemming Algorithm 을 적용시킨 루틴이 인상적입니다.
재미있습니다 ^^;; 근데 어렵습니다 ㅠㅠ
하루에 10분씩만 투자해도 영단어 많이 알게될듯..

cinsk의 이미지

예.. 그 버그는 알고는 있는데.. ^^; 고치기가 좀.. window를 만든 다음에 그 크기를 얻어내는 것이 까다로워서..
또 url을 얻어올 때에도 창 사이즈 관련 문제가 있긴 합니다.

여기서 쓴 stemming 알고리즘은 완벽하지 않습니다. 간단히 쓸 것을 찾아보다가 구글에서 발견한 것이라서..

난이도도 조절하고 싶은데, 난이도에 따라 단어 목록을 얻는 방법이 잘 떠오르질 않더군요. :)
http://eedic.naver.com/ 에서 오늘의 단어 내용에서 얻을 수 있긴 합니다만, 그럴 경우, 단어 갯수가 제한적이라서, 현재는 랜덤으로 단어를 받아오고 있습니다.

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

danskesb의 이미지

파이썬으로 콘솔 프로그램을 만들었다고 하셨으니, 재미있는 파이썬 라이브러리 하나만 소개하겠습니다.

http://excess.org/urwid/

이 urwid라는 놈은 무려 데비안 패키지로도 존재합니다. 학교 동아리 프로젝트를 진행하면서 이 라이브러리를 사용해 보았는데, 문서화가 좀 잘 안 되어 있어서 삽질을 좀 해 가면서 배워야 했지만, 일단 한 번 적응이 되니까 편하게 콘솔 프로그램을 짤 수 있었습니다.

---- 절취선 ----
http://blog.peremen.name

OpenSnake의 이미지

정답은 가로치고 나머지는 한글로 나오게하면 더 좋을거같은데요? 이거는 안되나요?

--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.

--------------------------------------------
혼자있고 싶습니다. 모두 지구밖으로 나가주세요.

cinsk의 이미지

파싱은 가능한데, python curses module에서 한글 출력이 안되는 것 같군요. ^^;
방법을 알려주시면 적용해 보겠습니다.

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

wish의 이미지

이거 정말 좋아 보입니다. 제 입맛에 꼭 맞는 학습기네요 :) 감사합니다

cinsk의 이미지

난이도 선택하는 기능 추가했습니다.

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

noblepylon의 이미지

이거 의외로 재밌군요*_*
근데 파이썬 스크립트는 리눅스에서만 구동되나요?
---
“내게 능력주시는 자 안에서 내가 모든 것을 할 수 있느니라.”(빌립보서 4:13)

---
“내게 능력주시는 자 안에서 내가 모든 것을 할 수 있느니라.”(빌립보서 4:13)

cinsk의 이미지

Windows에도 Python을 깔면 되지 않을까 합니다. 실험해보세요. :)

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

noblepylon의 이미지

윈도에서 시도해보니 _curses모듈을 찾을 수 없다고 하는군요.

수시로 플레이하고는 싶지만 주 사용 OS가 윈도라서 매번 일일이 버추얼박스 띄우기가 그렇습니다.
어떻게 할 방법이 없을까요?
---
“내게 능력주시는 자 안에서 내가 모든 것을 할 수 있느니라.”(빌립보서 4:13)

---
“내게 능력주시는 자 안에서 내가 모든 것을 할 수 있느니라.”(빌립보서 4:13)

only2sea의 이미지

오오, 잘 만드셨네요. 근데 힌트 개수가 너무 많아서... 힌트만 계속 눌러서 맞추고 이렇게 하면, 또, HP가 2배로 되어서 조금 있으면 몇 천 대의 HP가 되고, 힌트도 수십개가 됩니다. ;;;

힌트를 하나도 안 쓰고 플레이를 하면 조금 도전적으로 되는군요.

블로그: http://turtleforward.blogspot.com

DebPolaris의 이미지

좋은 프로그램 감사합니다.
--------------------------------------------------------
남이 가르쳐주는 것만 받아들이는 것이 아니라, 스스로 만들고, 고쳐가는 사람을 '해커'라고 부른다.
그리고 자신이 쌓아온 노하우를 거리낌없이 나눌 줄 아는 사람을 '진정한' 해커라고 한다.
-Rob Flickenger 'Linux server hacks'
http://heu

-----------------------------------------------------
남이 가르쳐주는 것만 받아들이는 것이 아니라, 스스로 만들고, 고쳐가는 사람을 '해커'라고 부른다.
그리고 자신이 쌓아온 노하우를 거리낌없이 나눌 줄 아는 사람을 '진정한' 해커라고 한다.
-Rob Flickenger 'Linux server hacks'

DEBIAN TESTING, KDE...
debpolaris.blogspot.kr

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.