shell脚本--使用3种方法实现石头剪刀布小游戏


这里我用了3种方法来实现石头剪刀布小游戏,对于新手来说应该是比较易懂的

第一种:使用if语句实现

[root@localhost opt]# vim youxi1.sh 

#!/bin/bash
a=$[RANDOM%3+1]         
read -p "请猜拳(1.石头 2.剪刀 3.布)" b
if [ $b = 1 ] || [ $b = 2 ] || [ $b = 3 ];then
 if [ $a = $b ] && [ $a = 1 ];then
  echo "平手,电脑出的石头,你出的石头";elif
  [ $a = $b ] && [ $a = 2 ];then
  echo "平手,电脑出的剪刀,你出的剪刀";elif
  [ $a = $b ] && [ $a = 3 ];then
  echo "平手,电脑出的布,你出的布";elif
  [ $a -lt $b ] && [ $a = 1 ] && [ $b = 2 ];then
  echo "惜败,电脑出的石头,你出的剪刀";elif
  [ $a -lt $b ] && [ $a = 2 ] && [ $b = 3 ];then
  echo "惜败,电脑出的剪刀,你出的布";elif
  [ $a -lt $b ] && [ $a = 1 ] && [ $b = 3 ];then
  echo "你赢了,电脑出的石头,你出的布";elif
  [ $a -gt $b ] && [ $a = 2 ] && [ $b = 1 ];then
  echo "你赢了,电脑出的剪刀,你出的石头";elif
  [ $a -gt $b ] && [ $a = 3 ] && [ $b = 1 ];then
  echo "惜败,电脑出的布,你出的石头";elif
  [ $a -gt $b ] && [ $a = 3 ] && [ $b = 2 ];then
  echo "你赢了,电脑出的布,你出的剪刀"
 fi
else
  echo "请正确出拳"
fi

第二种:使用case语句实现

[root@localhost opt]# vim youxi2.sh 

#!/bin/bash
a=$[RANDOM%3+1]
read -p "请猜拳(1.石头 2.剪刀 3.布)" b
case "$a""$b" in
 [1][1])
 echo "平手,你和电脑都出的石头"
 ;;
 [1][2])
 echo "你输了,电脑出的石头,你出的剪刀"
 ;;
 [1][3])
 echo "你赢了,电脑出的石头,你出的布"
 ;;
 [2][1])
 echo "你赢了,电脑出的剪刀,你出的石头"
 ;;
 [2][2])
 echo "平手,你和电脑都出的剪刀"
 ;;
 [2][3])
 echo "你输了,电脑出的剪刀,你出的布"
 ;;
 [3][1])
 echo "你输了,电脑出的布,你出的石头"
 ;;
 [3][2])
 echo "你赢了,电脑出的布,你出的剪刀"
 ;;
 [3][3])
 echo "平手,你和电脑都出的布"
 ;;
 *)
 echo "请正确出拳"
esac

第三种:if语句和case语句实现

[root@localhost opt]# vim youxi.sh 

#!/bin/bash
a=$[RANDOM%3+1]
read -p "请猜拳(1.石头 2.剪刀 3.布)" b
case "$b" in
[1])
 if [ $a -eq 1 ];then
 echo "平手,电脑出的石头";elif
 [ $a -eq 2 ];then
 echo "你赢了,电脑出的剪刀";else
 [ $a -eq 3 ]
 echo "惜败,电脑出的布"
 fi
 ;;
[2])
 if [ $a -eq 1 ];then
 echo "惜败,电脑出的石头";elif
 [ $a -eq 2 ];then
 echo "平手,电脑出的剪刀";else
 [ $a -eq 3 ]
 echo "你赢了,电脑出的布"
 fi
;;
[3])
 if [ $a -eq 1 ];then
 echo "你赢了,电脑出的石头";elif
 [ $a -eq 2 ];then
 echo "惜败,电脑出的剪刀";else
 [ $a -eq 3 ]
 echo "平手,电脑出的布"
 fi
;;
*)
 echo "请输入1-3之间的数"
esac

实现石头剪刀布游戏的方法很多,开动脑筋试试吧!

猜你喜欢

转载自blog.csdn.net/weixin_47153988/article/details/107405395