生成的密码和用户输入可以接受重复数字。

所以相对一般规则的猜数字可能难度要大不少。

本版本规则:

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脚本实现的猜数字小游戏相关推荐

  1. html写一个猜数字游戏,JS实现网页端猜数字小游戏

    本文实例为大家分享了JS实现网页端猜数字游戏的具体代码,供大家参考,具体内容如下 题目描述 电脑产生一个0到100之间的随机数字,并且要求用户来猜,如果用户猜的数字比这个数字大,电脑会提示" ...

  2. 猜数字游戏java编程_Java编写猜数字小游戏

    本文实例讲述了java实现的简单猜数字游戏代码.分享给大家供大家参考. 以下是Java语言写的一个猜数字小游戏引用片段: import java.text.SimpleDateFormat; impo ...

  3. python猜数字游戏实例_Python案例:猜数字小游戏,由浅入深!

    本案例只适合新手,老司机请绕路. 游戏介绍:程序自己有一个数字,用户输入一个数字,两个数字进行比较. 可以学到的知识点:input函数.字符串.while循环.if条件判断语句.break语句. 一. ...

  4. 超简单利用java实现猜数字大小游戏2

    一,继上一次的猜拳游戏也可引生出猜数字的游戏,非常类似,不能说完全相同,可以说九成九相似,不过可玩性强一点. 设计想法: 1.利用随机生成的数与自己输入的数字进行相比较,并且给出相应的提示来进行游戏 ...

  5. linux运维自动化脚本,linux运维自动化shell脚本小工具

    linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服务器上出错,后果请自负 1.检测cpu剩余百分比 #!/bin/bash #Inspect CPU # ...

  6. 《Linux命令行与shell脚本大全》笔记

    初识Linux Shell 什么是Linux Linux可划分为以下四部分: Linux内核 GNU工具 图形化桌面环境 应用软件 深入探究Linux内核 内核主要负责以下四种功能: 系统内存管理 软 ...

  7. 黑客进阶必读书《Linux命令行与Shell脚本编程大全》(第2版)

    欢迎来到命令行和shell脚本编程的世界!厚厚的一本小样书,拿在手上,厚厚的一本,六百多页.不只是掂在手上的重量,更是一本优秀的初学者入门指南,又会是你的Linux书库中非常不错的参考书.如果你想从整 ...

  8. 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-汇总 ( Chapter17-ChapterB )

    十七.创建函数 bash shell 提供了用户自定义函数功能,可以将 shell 脚本代码放入函数中封装起来. 函数是一个脚本代码块,你可以为其命名并在脚本中的任何位置重用它.每当需要在脚本中使用该 ...

  9. linux 命令行与shell脚本编程大全

    linux 命令行与shell脚本编程大全 第一章 Linux LiveCD就是从cd读取的系统,由于没法将数据写入到cd,所以一旦重启,之前操作过后的一切数据都会丢失. 第二章 第三章 1.man手 ...

  10. 【2018深信服 醒狮计划】《Linux命令行与Shell脚本编程大全》学习笔记

    2018深信服"醒狮计划"笔记 第3周(5.02-5.13) 课程 必修 选修 基本要求 Shell编程 <Linux命令行与Shell脚本编程大全> <Perl ...

最新文章

  1. STM32 基础系列教程 6 - PWM
  2. div超出不换行_DIV元素不换行
  3. android 代码浏览,Webview实现android简单的浏览器实例代码
  4. 以人致胜 SAP开启HR云端变革之旅
  5. Linux系统:centOS 7 忘记密码怎么办?
  6. 1Boost之TCP,Client and Server
  7. TDA-04D8变送器数据上报阿里云
  8. CentOS添加明细路由
  9. ajax中加html,向DIV中写入HTML(AJAX高手赐教)
  10. 发明专利写作常用模板和注意事项
  11. abb变频器dp适配器说明书_ABB变频器使用说明书
  12. 宽度学习系统(BLS)的原理、变体形式及当前应用(随时更新......)
  13. 菜鸟教程: Linux cat 命令
  14. 反向传播(Backpropagation)算法详解
  15. 山东计算机考研909,山东大学2018年计算机考研909数据结构考试大纲
  16. mysql源码分析——THD数据结构
  17. 我的非计算机科班好友,斩获了十几个 offer
  18. 照片制作手机壳,定制手机壳diy需要什么设备?
  19. python socket
  20. 大数据和人工智能的关系,超全解析 1

热门文章

  1. 仿魅族日历,乐视日历,小米日历等效果
  2. css实现图片的3d旋转-照片墙
  3. 计算机多媒体是,计算机多媒体技术
  4. 使用Java及jsoup爬取链家北京二手房房价数据
  5. python金融分析试题_知到《Python金融数据分析》章节答案
  6. 【程序员讲装修】如何花最少的钱做出最出彩的装修效果?
  7. Power AI:堪称机器学习的“破壁人”
  8. 文档编号与文档版本号的作用
  9. 【UE4 C++】代理(委托)
  10. ERP-非财务人员的财务培训教(二)------如何评价公司/部门经营业绩