主页 > 知识库 > Shell脚本实现的猜数字小游戏

Shell脚本实现的猜数字小游戏

热门标签:excel地址地图标注 东莞电销机器人价格一览表 杭州机器人外呼系统 佛山高德地图标注中心 百度地图标注图标更换 陕西电销卡外呼系统怎么安装 百度地图的地图标注 旅游地图标注大全 地图标注超出范围怎么办

生成的密码和用户输入可以接受重复数字。
所以相对一般规则的猜数字可能难度要大不少。

本版本规则:

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 "#############################################"

您可能感兴趣的文章:
  • shell脚本实现猜数游戏
  • Shell实现猜数字游戏
  • shell实现猜数字小游戏
  • 101个shell脚本 猜数字游戏代码
  • Shell脚本实现猜数字游戏

标签:延边 随州 通辽 青岛 雅安 朝阳 西藏 南充

巨人网络通讯声明:本文标题《Shell脚本实现的猜数字小游戏》,本文关键词  Shell,脚本,实现,的,猜,数字,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Shell脚本实现的猜数字小游戏》相关的同类信息!
  • 本页收集关于Shell脚本实现的猜数字小游戏的相关信息资讯供网民参考!
  • 推荐文章