1. 程式人生 > >(石頭、剪刀、布)shell腳本,隨機對比,case的應用

(石頭、剪刀、布)shell腳本,隨機對比,case的應用

評論 單獨 三種 數組 石頭 兩種方法 == dom ash

腳本實現人機<石頭,剪刀,布>遊戲,機器應用隨機方法,結合用戶輸入給出結果,文章有兩種方法,重在理解,第一種方法是該腳本的邏輯方面,第二種較容易理解。
一 : 第一種方法,讓機器給出一個隨機數字 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,有更好的方法可以私信博主,或評論區分享。謝謝。

(石頭、剪刀、布)shell腳本,隨機對比,case的應用