我的编码之旅:您曾经玩过Hangman吗?

我在第8光开始了第三周,发布了第二周的博客内容提要,但仍然为使硬币转换器程序运行而感到高兴。 在我们尝试建立一个著名的童年游戏– Hangman!


星期一 (下午)

周一下午进行提示,第一个挑战是在Ruby中加入Hangman游戏。 峰值意味着您可以在不进行测试的情况下,在一个大型“大脑转储”中将所有想法都放入一个大型“大脑转储”中,并尝试使其生效。 我在星期一下午花了这个时间,试图使程序能够引起用户的猜测,并检查该字母是否与单词中的任何字母匹配。 如果是这样,则程序应告诉用户在单词中可以找到该字母的位置。

尽管我能够使这种逻辑起作用,但它不能多次处理单词中存在的相同字母,因为它只会返回第一个匹配项的位置。

星期二

我在星期二早上继续尝试使它生效,以便我的代码可以处理相同字母的多个倍数,但是努力弄清楚如何做到这一点。 下午,我们与一位导师安德鲁(Andrew)一起参加了一个小组代码,思考Hang子手的演奏方式,以及程序需要做什么。

本次会议非常有帮助,在集思广益之后,我们从Ruby的一些初始测试开始,这确实使我们了解了如何构建游戏。 我们与安德鲁(Andrew)一起创建了第一个测试,开发了一个游戏,该游戏能够映射猜出的字母,如果匹配,则显示单词在单词中的位置。 在本质上 :-

当单词为“ hangman”时,对“ j”的猜测将返回:

_ _ _ _ _ _ _

当单词“ hangman”猜为“ a”时,将返回:

_ a _ _ _ a _

鉴于上面的“ a”匹配在单词中不止一次出现,因此在会话期间的代码中,我们已经远远超出了我的能力范围! 我在整个下午的大部分时间里都在思考着一些小型测试,这些测试可以在我逐渐添加到会话中的代码以扩展为可正常运行的游戏时运行。 我尝试的第一个测试是添加一个计数器,该计数器可以跟踪用户所做的猜测次数。

星期三

自从一周开始以来,这就是我期待的一天。 我曾希望到那时我能成功完成游戏的开发,并开始使用TDD成对构建程序。 但这不是一天的进展。 经过前两天的苦苦挣扎,无法获得完整的游戏,我放弃了这个想法,开始与使用TDD构建Hangman的工作进行配对,并从周二开始的代码继续进行。

在短暂尝试配对之后,我继续整个下午的大部分时间独自尝试通过猜谜器进行思考。 我开始理解,我需要创建两种单独的方法,一种用于错误的猜测,另一种用于正确的猜测,以区分需要采取的下一个动作。 然后,猜测计数可能存在于错误的猜测方法中。 它将计算用户做出的错误猜测的次数,减去用户每次错误猜测时的生命,并且当他们的生命用尽时可以结束游戏以显示答案。 星期三下午,我和一位导师及学徒一起围攻,完成了生活柜台,到了一天结束时,他们开始了工作。

星期四

完成核心目标后,我开始扩展目标一和目标二,设法使这些目标在早上非常快地完成。 我安装了一个名为CleanWords的gem,以生成用户可以猜测的随机单词。 太好了吧? 除了现在我所有的RSpec测试都失败了,因为我无法预测单词的含义,因此无法确定我的expect(the output of running a particular method).to eq (this output)的输出)将使用什么输出expect(the output of running a particular method).to eq (this output)测试!

幸运的是,有一种解决方法。 出来吧!

使用存根,我可以将单词改成“ snack”,然后再次运行测试,以确保程序可以继续正常运行,方法是键入:

 在执行allow_any_instance_of(CleanWords :: Random).to接收(:fetch).and_return(“ snack”)结尾之前,先描述Word dolet(:word_gen){CleanWords :: Random.new} 

一段非常方便的代码!

星期五

在一周的最后一天,我专注于伸展目标三,使用户可以重新玩一个新单词。 我还整理了游戏说明和控制台中的用户界面,使用Unicode字符添加了一些表情符号,并使游戏体验更加有趣。


本周亮点:

  • 发现存根以设置一个固定的词,我可以用它来测试我的程序
  • 了解如何使用Unicode字符向我的控制台显示屏添加项目符号点和表情符号
  • 在本周结束时玩我的Hangman游戏,尝试猜这个单词! 我一次都做对了! 😆😂

我学到的东西:

  • 如何在我的字符串中添加项目符号点\u2022
  • 如何为一个程序使用一个以上的类并如何使这些类相互交互以运行游戏
  • 如何使用存根进行RSpec测试

我一直在努力的事情:

  • 以秒杀模式构建一个Hangman游戏并使其正常工作

我很好奇的事情:

  • 我如何构建一个子手游戏,在用户玩⬇️时绘制which子手图像

我要重点关注的是:

  • 继续理解课堂