• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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 "#############################################"
    

    您可能感兴趣的文章:
    • shell脚本实现猜数游戏
    • Shell实现猜数字游戏
    • shell实现猜数字小游戏
    • 101个shell脚本 猜数字游戏代码
    • Shell脚本实现猜数字游戏
    上一篇:Shell脚本实现memcache缓存命中率监控
    下一篇:Shell中实现“多线程”执行脚本文件完美解决方案
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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