这个游戏由来已久。记得我小学的时候流行过电子词典,就是袖珍版的笔记本电脑。主要功能是查英语单词的翻译。记得当时我手里这款里边有几种小游戏,现在还记得的有一个养猫游戏,每天给它喂食、给它球玩之类的。另一个记得的就是这个猜数字的游戏,当时觉得还挺难的,经常无法通关。最近又在某视频平台看到有人玩,于是想拿出来再玩玩。

最近正好在整理 shell 编程相关的知识,就用 shell 写一个小游戏吧。正好这个游戏的逻辑不复杂。游戏名实在是忘了,就叫它AB猜数字吧,lol

先介绍一下游戏规则。每局游戏会生成一个随机排列的四位数字,四个数字不重复。玩家有8次机会给出自己的答案。如果数字和位置都正确,用A标记;如果数字正确但位置错误,用B标记。比如正确答案是2478,如果玩家给出的答案是1286,返回的标记是0A2B,如果玩家给出的答案是2487,返回的标记是2A2B。

好的,规则就这么一点儿。
下边来看一下代码实现逻辑:
第一步,生成随机四位数字作为正确答案:

# 创建数组,元素是0到9
num_array=( $(seq 0 9) )
# 定义一个变量amount, 生成随机数使用
amount=10
# 定义一个空数组 bingo,用来放置生成的四个数字
declare -a bingo
# 定义变量i, 作为循环变量
i=0# 四次循环,因为答案是四个数字
while [ $i -lt 4 ]
do# num 是 1-10 的随机数num=$((RANDOM%amount))# n 是 以 num 为索引从数组中取出的一个数字(0到9)n=${num_array[$num]}# 如果在之前的循环中已经取出了数字,就直接进入下一次循环if [ -z "$n" ]thencontinueelse# 将取出的数字存到数组 bingo 中bingo[$i]=$n# 将取出的数字从原数组中删除,避免出现重复数字unset 'num_array[$n]'fi# 索引自增(( i++ ))
done

第二步,游戏进行:

# 记录A结果的变量
a_result=0
# 记录B结果的变量
b_result=0
# 记录游戏次数
count=0
# 整个进行阶段使用一个 while 循环包起来,最主要的功能是读取用户输入
while read -rp "请输入你的答案:" ans
do# 如果给出的答案不足四个数字,打印错误if [ ${#ans} -ne 4 ]thenecho "格式错误"continueelse# 这里用了双层 for 循环,分别比较正确答案和给出的答案的每一位数字是否相同for bingo_index in {0..3}dofor ans_index in {0..3}do# 如果数字相同且位置也相同,记录A的结果的变量 a_result 自增1# 如果数字相同但位置不相同,记录B的结果的变量 b_result 自增1if [ "${bingo[$bingo_index]}" -eq "${ans:${ans_index}:1}" ]thenif [ "$bingo_index" -eq "$ans_index" ]then(( a_result++ ))breakelse(( b_result++ ))breakfifidonedone# 如果 a_result 等于4,也就是答案正确,游戏结束,打印恭喜玩家字样if [ "$a_result" -eq 4 ]thenecho "恭喜你答对了!"exit 1else# 如果 a_result 不等于4,打印当前的答案状态,即xAyB,并打印剩余猜测次数echo "${a_result}A${b_result}B 加油!你还有$(( 7 - count ))次机会~"fi# 标记当前次数的变量 count 自增 1(( count++ ))# 如果 count 等于8,也就是说这是最后一次,打印失败字样,并打印正确答案if [ "$count" -eq 8 ]thenecho "你已经尝试8次了,挑战失败"echo "正确答案是:${bingo[*]}"exit 1fi# 每次循环之后清空 a_result 和 b_resulta_result=0b_result=0fi
done

游戏截图:

【小游戏】AB猜数字相关推荐

  1. 【C语言小游戏】猜数字游戏

    hello,csdn的小伙伴呢,在前面,我们已经初步了解了c语言,并且系统的学习了分支与循环的内容.今天我们就将分支与循环的内容综合应用一下,来做一个很简单猜数字小游戏. 目录 程序的需求以及最终代码 ...

  2. java math猜数小游戏_java猜数字小游戏

    import java.util.Random; import java.util.Scanner; /** * 一个简单的猜数字游戏 * * @author chried * */ public c ...

  3. 小游戏制作——猜数字

    前言 相信大家在初学C语言时都制作过一个小游戏-猜数字,只不过当时能力有限导致游戏功能较为简单,今天让我们来看一下它的进阶版本. 首先规划一下我们的猜数字游戏: (1)首先程序随机生成一个 0-999 ...

  4. 猜数游戏控制猜测次数c语言,C语言小游戏之猜数字,三子棋游戏

    #define _CRT_SECURE_NO_WARNINGS 1 #include"game.h" void menu() { printf("************ ...

  5. C#窗体猜数字小游戏AB

    用C#窗体做猜数字小游戏 玩法规则 通常由两个人玩,一方出数字,一方猜.出数字的人要想好一个没有重复数字的4个数,不能让猜的人知道.猜的人就可以开始猜.每猜一个数字,出数者就要根据这个数字给出几A几B ...

  6. 猜物品游戏java编程_小猿圈Java初学者练习小案例:猜数字游戏

    对于Java初学者,如果没有好的引导,可能会觉得自己学什么都不好,学什么都不会,这个时候就要给他们一下小的案例,让他们去实践一下,让他们知道自己学的东西是可以用到的,小猿圈java讲师为你准备了Jav ...

  7. java 后台跳出提示_小猿圈Java初学者练习小案例:猜数字游戏

    对于Java初学者,如果没有好的引导,可能会觉得自己学什么都不好,学什么都不会,这个时候就要给他们一下小的案例,让他们去实践一下,让他们知道自己学的东西是可以用到的,小猿圈java讲师为你准备了Jav ...

  8. python经典小游戏-用Python设计一个经典小游戏:猜大小

    码农那点事儿 关注我们,一起学习进步 本文主要介绍如何用Python设计一个经典小游戏:猜大小. 游戏规则: 初始本金是1000元,默认赔率是1倍,赢了,获得一倍金额,输了,扣除1倍金额. 玩家选择下 ...

  9. 【Python基础学习】小游戏之猜年龄

    Python基础学习 小游戏之猜年龄 import random age = random.randint(0,100) count = 0 while count < 3:count +=1u ...

  10. python简单小游戏赌大小分析_用Python设计一个经典小游戏:猜大小

    原标题:用Python设计一个经典小游戏:猜大小 本文主要介绍如何用Python设计一个经典小游戏:猜大小. 游戏规则: 初始本金是1000元,默认赔率是1倍,赢了,获得一倍金额,输了,扣除1倍金额. ...

最新文章

  1. 2021年大数据ZooKeeper(五):ZooKeeper Java API操作
  2. linux hiredis升级,Redis平滑升级
  3. 大熊猫卸妆后_您不应错过的6大熊猫行动
  4. python-第一个python程序-向世界问好
  5. 再读《精通css》00
  6. git切换分支出现head is now at_git寻根——^和~的区别
  7. 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-2 工程及程序构架介绍
  8. PHP+Mysql+jQuery找回密码
  9. Beautiful Sequence
  10. 【水果识别】基于matlab GUI RGB+HSV水果成熟度分级系统【含Matlab源码 825期】
  11. canoe和python_CANoe开发从入门到精通
  12. 使用IDM下载软件下载百度云网盘里的资源,以Chrome浏览器为例
  13. 下载并安装lsi MegaRAID raid卡 管理工具
  14. 查看linux进程日志,查看linux日志_查看linux日志的方法
  15. CSS实现抽奖大转盘
  16. 【Linux问题栏】虚拟机中无法识别电脑摄像头和usb摄像头
  17. 笔记本分屏后鼠标卡顿问题解决
  18. 语音数据集 | Speech datasets
  19. 《MySQL必知必会》学习笔记——组合查询、全文本搜索
  20. java开发用i5还是i7,酷睿i3和i5以及i7有什么区别

热门文章

  1. java中solr的面试题_面试:----利用solr实现商品的搜索功能
  2. IDA的新手入门指南
  3. 如何在typescript-react项目中使用emotion的css行内样式
  4. 伺服驱动器的接线与基本控制
  5. Android反编译APK
  6. 一阶惯性环节如何实现跟踪性能与滤波性能共存(三)
  7. 新浪微博、腾讯微博开放平台整合DEMO分享
  8. 国际信息安全管理标准体系--BS7799
  9. ubuntu 16.04 安装谷歌拼音输入法
  10. Web入门-namp的下载与使用