这是我参与「第五届青训营 」笔记创作活动的第2天,这里复盘总结一下三个简单实战项目(猜谜游戏、在线词典、SOCKS5代理)中的猜谜游戏
猜谜游戏
这里我们使用Golang来构建一个猜数字游戏,程序会生成一个随机数,当玩家输入猜测的数字时,程序会提示猜测的数是小于、等于、还是大于随机数,若没猜对则让玩家继续猜测,直到最好猜对随机数,游戏结束。
以下回顾设计流程:
1.首先我们要用到一个math/rand包,调用里面的rand.lntn()函数生成随机数,这里我们要注意,查看rand的开发文档我们可知使用它之前我们需要设置随机数种子,否则的话每一次都会生成相同的随机数序列。我们可以在程序启动时,用启动的时间戳(time.now.unix)来初始化随机数种子。
2.接下来我们实现用户输入输出,并解析为数字。这里我们要知道stdin的概念,stdin是标准输入std即standard(标准),in即input(输入),合起来就是标准输入。通俗的说就是键盘输入到缓冲区内的东西。每个程序执行时都会打开几个文件,stdin、stdout、stderr等,其中stdin文件可以用os.Stdin来得到。由于直接操作这个文件很不方便,我们可以用bufio.NewReader把文件转换成一个reader变量,reader变量上会有很多用来操作一个流的操作,我们可以用ReadString方法来读取一行。返回的结果包含结尾的换行符,可以去掉,再转换成数字并打印出来,这里我们要注意在其中穿插错误处理,在某个流程出错打印出错误。
当前效果:
3.现在我们来实现比较随机数和猜测数大小功能,这里使用一个if-else语句即可实现
4.此时程序的基本逻辑已经被我们实现,但玩家只能还只能输入一次猜测,无论猜测是否正确,程序都会退出,为了让游戏正常玩下去,我们可以加一个循环。我们把得到reader变量之后的部分放入一个死循环中,将return改为continue以便在出错时能够继续循环,在用户输入正确的时候break,这里当玩家猜对数字时才退出游戏。那么最后的源代码和实现效果如下:
本笔记参考文档:(Go 语言上手 - 基础语法 .pptx - 飞书云文档 (feishu.cn))