使用shell脚本编写石头剪刀布人机对战小程序

一、实验

实验目的

通过shell脚本编写代码实现人机石头剪刀布对战
实验内容

方法一

#!/bin/bash
read -p "请输入你要输得东西" a				//定义变量a
b=$[RANDOM%3]						//定义变量b,生成一个随机数,取值范围为0,1,2。
if [ $a == 石头 ]||[ $a == 剪刀 ]||[ $a == 布 ]		//规定输入的内容
then
        if [ $a==石头 ]					//如果输入的是石头,和随机数比,默认0为石头,1为剪刀,2为布。
        then
                if [ $a==石头 ]&&[ $b -eq 0 ]
                then
                        echo "电脑出石头,平局"
                elif [ $a==石头 ]&&[ $b -eq 1 ]
                then
                        echo "电脑出剪刀,你赢了"
                else
                        echo "电脑出布,你输了"
                fi
        elif [ $a==剪刀 ]				//如果输入的是剪刀
        then
                if [ $a==剪刀 ]&&[ $b -eq 1 ]
                then
                        echo "平局"
                elif [ $a==剪刀 ]&&[ $b -eq 2 ]
                then
                        echo "你赢了"
                else
                        echo "你输了"
                fi
        else
                if [ $a==布 ]&&[ $b -eq 2 ]		//否则输入的是布
                then
                        echo "平局"
                elif [ $a==布 ]&&[ $b -eq 0 ]
                then
                        echo "你赢了"
                else
                        echo "你输了"
                fi
        fi
else
echo "请输入石头,剪刀,布"					//	如果输入的不是石头剪刀布,则报错
fi

方法二

新建一个rule.txt文件
文件内容为
0:石头
1:剪刀
2:布
然后编写如下shell脚本
在这里插入图片描述

方法三

#!/bin/bash
read -p "0:代表剪刀;1:代表石头;2:代表布;请输入剪刀石头布(0-2)" num
echo ""
jnum=`expr $RANDOM % 3`
if [ "$num" = "$jnum" ]
then
   echo "你们打平了"
else
case $num in
  [0-2])
        if [ `expr $num + 1` = "$jnum" ] || [ `expr $jnum + 2` = "$num" ]
                then
                echo "机器赢了"
        elif [ `expr $jnum + 1` = "$num" ] || [ `expr $num + 2` = "$jnum" ]
                then
                echo "你赢了"
        fi
   ;;
   *)
        echo "您输入的格式有问题!"
esac
fi
echo ""
echo "机器的值为:$jnum;您输出的值为:$num;"
echo ""

方法四

#!/bin/bash
read -p "0:代表剪刀;1:代表石头;2:代表布;请输入剪刀石头布(0-2)" num
echo ""
jnum=`expr $RANDOM % 3`
num1=`expr $num + 1`
if [ "$num" = "$jnum" ]
then
   echo "你们打平了"
else
  case $num in
  [0-2])
        if [ "$num1" = "$jnum" -a "$num" != 2 ] || [ "$num" = 2  -a  "$jnum" = 0 ]
           then
           echo "机器赢了,你输了"
        else
           echo "你赢了,机器输了"
        fi
   ;;
   *)
        echo "您输入的格式有问题!"
esac
fi
echo ""
echo "机器的值为:$jnum;您输出的值为:$num;"
echo ""

下面两种方法转载于https://blog.csdn.net/weixin_39608791/article/details/107392474

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值