字谜的名义——Hangman

2017-06-15 高金凤 爬虫俱乐部 爬虫俱乐部

自古以来,猜灯谜猜字谜一直是文人雅客经久不衰的游戏,爬虫君又怎会错过这一优雅而拉风的活动呢!


今天为大家介绍一款猜单词的双人游戏——hangman:即由玩家A想出一个单词或短语,玩家B在有限次数内(6次)猜出该单词或短语中的所有字母,否则象征着玩家B的小人就会“被上吊”。规则很简单,现在就让风流倜傥玉树临风的爬虫君带大家在stata中耍一耍这款游戏吧!


    

该游戏的stata程序来自于哈佛大学的博士生MarekHlavac的主页,原版hangman.do和hangman_data.dta文件已上传到爬虫俱乐部的网站(http://202.114.234.173:8669/appres/APP/hangman.zip),需要的读者可自行下载。

开始游戏前,我们需要把do文件和dta文件放在同一个的路径下面并设置为当前工作路径,在stata中运行一下do文件,键入如下命令:

. cd C:\ado\plus

. do hangman

这样我们就在stata中定义了Hangman的游戏过程,同时也扮演了玩家A的角色,建立一个单词库(数据集hangman_data.dta),结果输出窗口显示如下:

此时,我们已正式进入游戏,并扮演玩家B的角色。可以看到玩家A要求玩家B在目录为city的词库中猜单词,并且所猜的单词长度为8(如果是短语,其长度不包括中间空格的长度)。接下来,玩家要发挥自己的聪明才智猜出目标单词。


假如,先猜了一个字母h,即输入guess h


发现h被填到单词所对应的位置,说明该单词中包括h。然后再猜s:


发现字母s也被填到单词所对应的位置。接着猜字母a,结果如下所示:

同样可以看到,字母a被填到单词所对应的位置,只不过首字母是以大写的形式填入的,并且结果中并没有绘制小人,说明该游戏中不区分字母的大小写。


此时,假如智商250的爬虫君已经完全猜出单词,并看到结果显示如下:


    这时候系统会提示你通过游戏(you have won),并且宣布游戏次数、游戏成功次数以及成功占总次数的比例,同时结束本次游戏,开始进行新的游戏,新游戏需要你猜出目录为country下的长度为6的单词。

    

需要注意的是目录为city、长度为8的单词不止Ashgabat,我们回到源程序,可看到如下程序:


    发现程序中用到strpos和substr函数对所猜单词的位置进行了相关设置。哇哦,原来玩游戏也得靠运气取胜呢!


如果在一次游戏中,你累积了6次猜测错误时,会显示小人“上吊”图案,如下所示:


系统提示你失败了(you have lost),并宣布游戏次数、游戏成功次数以及成功占总次数的比例,同时结束本次游戏,开始新的游戏。需要注意的是,一次游戏中,重复输入错误的字母,不计入错误次数。当然,在此期间,你随时可以结束当前的游戏,键入命令new进入新一轮的游戏。


如果你觉得单词库中单词数量有点少,也可以在单词库中添加单词。比如,现在将系统数据auto中变量foreign和make分别作为游戏中的category和Word被加入单词库。键入如下命令:

sysuse auto,clear

decode foreign,gen(category)

rename make word

keep category word

save C:\ado\plus\hangman_data1

append using hangman_data

当然,如果你觉得仅仅猜字母有点单调,也可以在单词库中添加含有数字的单词或短语。我们回到源程序中:


可以发现程序中仅仅包含的字符有大小写字母和数字,这当然不能满足广大游戏爱好者对高难度单词或短语的挑战。此时,你只需要在源程序中多添加几个可猜字符,并且建立复杂多样的单词库,就可以完虐对手啦。 


继往期推文介绍的游戏blackjack,今天的游戏hangman又一次为你见证了stata的好用好玩之处,心动不如行动,安利你的好闺蜜亲死党,相约stata,一起玩游戏!

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

                     文字编辑:强宇曦

技术总编:刘贝贝



往期推文推荐:

1.高校学术大神:你的导师上榜了吗?

2.中国高校财经、管理与综合类期刊灌水排行榜

3.关于RTF你不知道的命令之番外篇

4.免费事件研究,一片片从邮局寄来

5.免费的股价同步性,一片片从邮局寄来

6.Stata叫你回家听音乐了!

7.一言不合就用stata写邮件(Outlook/Foxmail)

8.听说你想知道怎么用stata画地图?

9.I have a Stata, I have a python

10.I have a Stata, I have a Python之二——pdf转word




关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部 


微信扫一扫
关注该公众号