linux脚本小游戏,Shell脚本实现的猜数字小游戏
生成的密码和用户输入可以接受重复数字。
所以相对一般规则的猜数字可能难度要大不少。
本版本规则:
A--数字对,位置也对
B--排除A的结果后,数字对,但位置不对
开始后,系统化初始化一个4位可重复数字,如“1223”。假设用户第一次输入“1234”,那么系统将提示“2A1B”,前两位数字“12”相同并且位置也相同,为“2A”。后两位数字中,用户输入的“3”与密文中“3”相同,但两者位置不同,则为“1B”,最终结果为“2A1B”。
再假设用户此时输入“1232”,那么结果则为“2A2B”,计算方法与前次一样。
代码如下:
#!/bin/bash
clear
echo
echo "###################################################################"
echo "# this is a bash-shell game write by Email:breeze7086@gmail.com #"
echo "# the game called *digits*,and this version have repeated numbers #"
echo "# version 1.0 #"
echo "###################################################################"
echo -e "\n\n"
declare INPUT
declare PASSWORD
declare A
declare B
declare X
declare Y
declare LOOP
#This funtion init the variable PASSWORD that user need to guess
init_password()
{
PASSWORD=`echo $(($RANDOM%10000))`
echo $PASSWORD | grep '^[0-9]\{4\}$' >/dev/null 2>&1
if [ $? != 0 ]
then
init_password
else
input
fi
}
#This funtion accept the input from user's keyboard
input()
{
echo -n "please input a number between 0000-9999:"
read INPUT
echo $INPUT | grep '^[0-9]\{4\}$' >/dev/null 2>&1
if [ $? != 0 ]
then
echo "retry a number between 0000-9999 and do not input a char"
input
else
judge
fi
}
#This funtion is the main funtion
judge()
{
X=$INPUT
Y=$PASSWORD
while [ $INPUT != $PASSWORD ]
do
A=0
B=0
judge_a
judge_b
LOOP=`expr $LOOP + 1`
echo "****************************"
echo "* "$A"A"$B"B *"
echo "****************************"
input
done
}
#This funtion count the variable A's value
judge_a()
{
for i in `seq 4`
do
VAR_INPUT=`expr substr "$X" $i 1`
for j in `seq 4`
do
VAR_PASSWORD=`expr substr "$Y" $j 1`
if [[ $VAR_INPUT = $VAR_PASSWORD && $VAR_INPUT != "" && $VAR_PASSWORD != "" && $i = $j ]]
then
A=`expr $A + 1`
X=`expr substr $X 1 "$[$i-1]"``expr substr $X "$[$i+1]" 4`
Y=`expr substr $Y 1 "$[$i-1]"``expr substr $Y "$[$i+1]" 4`
judge_a
fi
done
done
}
#This funtion count the variable B's value
judge_b()
{
for i in `seq 4`
do
VAR_INPUT=`expr substr "$X" $i 1`
for j in `seq 4`
do
VAR_PASSWORD=`expr substr "$Y" $j 1`
if [[ $VAR_INPUT = $VAR_PASSWORD && $VAR_INPUT != "" && $VAR_PASSWORD != "" ]]
then
B=`expr $B + 1`
X=`expr substr "$X" 1 "$[$i-1]"``expr substr "$X" "$[$i+1]" 4`
Y=`expr substr "$Y" 1 "$[$j-1]"``expr substr "$Y" "$[$j+1]" 4`
judge_b
fi
done
done
}
#This is the begin of script
LOOP=1
init_password
echo "#############################################"
echo "#congratulations!You have tried $LOOP times! #"
echo "# The password is $PASSWORD ! #"
echo "#############################################"
linux脚本小游戏,Shell脚本实现的猜数字小游戏相关推荐
- html写一个猜数字游戏,JS实现网页端猜数字小游戏
本文实例为大家分享了JS实现网页端猜数字游戏的具体代码,供大家参考,具体内容如下 题目描述 电脑产生一个0到100之间的随机数字,并且要求用户来猜,如果用户猜的数字比这个数字大,电脑会提示" ...
- 猜数字游戏java编程_Java编写猜数字小游戏
本文实例讲述了java实现的简单猜数字游戏代码.分享给大家供大家参考. 以下是Java语言写的一个猜数字小游戏引用片段: import java.text.SimpleDateFormat; impo ...
- python猜数字游戏实例_Python案例:猜数字小游戏,由浅入深!
本案例只适合新手,老司机请绕路. 游戏介绍:程序自己有一个数字,用户输入一个数字,两个数字进行比较. 可以学到的知识点:input函数.字符串.while循环.if条件判断语句.break语句. 一. ...
- 超简单利用java实现猜数字大小游戏2
一,继上一次的猜拳游戏也可引生出猜数字的游戏,非常类似,不能说完全相同,可以说九成九相似,不过可玩性强一点. 设计想法: 1.利用随机生成的数与自己输入的数字进行相比较,并且给出相应的提示来进行游戏 ...
- linux运维自动化脚本,linux运维自动化shell脚本小工具
linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服务器上出错,后果请自负 1.检测cpu剩余百分比 #!/bin/bash #Inspect CPU # ...
- 《Linux命令行与shell脚本大全》笔记
初识Linux Shell 什么是Linux Linux可划分为以下四部分: Linux内核 GNU工具 图形化桌面环境 应用软件 深入探究Linux内核 内核主要负责以下四种功能: 系统内存管理 软 ...
- 黑客进阶必读书《Linux命令行与Shell脚本编程大全》(第2版)
欢迎来到命令行和shell脚本编程的世界!厚厚的一本小样书,拿在手上,厚厚的一本,六百多页.不只是掂在手上的重量,更是一本优秀的初学者入门指南,又会是你的Linux书库中非常不错的参考书.如果你想从整 ...
- 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-汇总 ( Chapter17-ChapterB )
十七.创建函数 bash shell 提供了用户自定义函数功能,可以将 shell 脚本代码放入函数中封装起来. 函数是一个脚本代码块,你可以为其命名并在脚本中的任何位置重用它.每当需要在脚本中使用该 ...
- linux 命令行与shell脚本编程大全
linux 命令行与shell脚本编程大全 第一章 Linux LiveCD就是从cd读取的系统,由于没法将数据写入到cd,所以一旦重启,之前操作过后的一切数据都会丢失. 第二章 第三章 1.man手 ...
- 【2018深信服 醒狮计划】《Linux命令行与Shell脚本编程大全》学习笔记
2018深信服"醒狮计划"笔记 第3周(5.02-5.13) 课程 必修 选修 基本要求 Shell编程 <Linux命令行与Shell脚本编程大全> <Perl ...
最新文章
- STM32 基础系列教程 6 - PWM
- div超出不换行_DIV元素不换行
- android 代码浏览,Webview实现android简单的浏览器实例代码
- 以人致胜 SAP开启HR云端变革之旅
- Linux系统:centOS 7 忘记密码怎么办?
- 1Boost之TCP,Client and Server
- TDA-04D8变送器数据上报阿里云
- CentOS添加明细路由
- ajax中加html,向DIV中写入HTML(AJAX高手赐教)
- 发明专利写作常用模板和注意事项
- abb变频器dp适配器说明书_ABB变频器使用说明书
- 宽度学习系统(BLS)的原理、变体形式及当前应用(随时更新......)
- 菜鸟教程: Linux cat 命令
- 反向传播(Backpropagation)算法详解
- 山东计算机考研909,山东大学2018年计算机考研909数据结构考试大纲
- mysql源码分析——THD数据结构
- 我的非计算机科班好友,斩获了十几个 offer
- 照片制作手机壳,定制手机壳diy需要什么设备?
- python socket
- 大数据和人工智能的关系,超全解析 1