脚本实现人机<石头,剪刀,布>游戏,机器应用随机方法,结合用户输入给出结果,文章有两种方法,重在理解,第一种方法是该脚本的逻辑方面,第二种较容易理解。 一 : 第一种方法,让机器给出一个随机数字 0-2,我们可以假设有一个数组为game(石头 剪刀 布),game[0]=石头 game[1]=剪刀 game[2]=布,我们将num的变量想作是 game[num],数组里面位。结合case语句,我们给用户的印象是,当输入1的时候为石头,那么这时候game【0】为石头,直接在case语句里面做出判断。给出相应结果。 如果难以理解可以将num变为 nmu=$[RANDOM%3+1],这样我们单独看shell可以看成老虎棒子鸡。或者比较数字,当然这里的效果和石头剪刀布的效果是一样的。
下面是代码: #!/bin/bash num=$[RANDOM%3] echo "请根据下列提示选择您的出拳手势" echo "1 石头" echo "2 剪刀" echo "3 布" read -p "请选择1-3 " person case $person in 1) if [ $num -eq 0 ];then echo "平局" elif [ $num -eq 1 ];then echo "你赢了" else echo "你输了" fi;; 2) if [ $num -eq 1 ];then echo "平局" elif [ $num -eq 2 ];then echo "你赢了" else echo "你输了" fi;; 3) if [ $num -eq 2 ];then echo "平局" elif [ $num -eq 3 ];then echo "你赢了" else echo "你输了" fi;; *) echo "请输入1~3" esac 二:第二种方法 ,定义了两个变量,一个是机器出的定义了y, 用户的定义为了x,然后做出三种判断,下面是代码:

#!/bin/bash num=$[RANDOM%3+1] case $num in 1) y="石头";; 2) y="剪刀";; 3) y="布";; esac

read -p "请输入石头、剪刀、布 :" x echo "机器出的是 : $y" echo "你 出的 是 : $x" if [ $x == $y ];then echo "平手" elif [[ $x == "石头" && $y == "剪刀" ]] || [[ $x == "剪刀" && $y == "布" ]] || [[ $x == "布" && $y == "石头" ]];then echo "你赢了" else echo "你输了" fi 肯定有不同方法,可以根据需求写shell,有更好的方法可以私信博主,或评论区分享。谢谢。