脚本实现人机<石头,剪刀,布>游戏,机器应用随机方法,结合用户输入给出结果,文章有两种方法,重在理解,第一种方法是该脚本的逻辑方面,第二种较容易理解。
一 : 第一种方法,让机器给出一个随机数字 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,有更好的方法可以私信博主,或评论区分享。谢谢。
原文地址:http://blog.51cto.com/13589092/2066024