(石头、剪刀、布)shell脚本,随机对比,case的应用

脚本实现人机<石头,剪刀,布>游戏,机器应用随机方法,结合用户输入给出结果,文章有两种方法,重在理解,第一种方法是该脚本的逻辑方面,第二种较容易理解。
一 : 第一种方法,让机器给出一个随机数字 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

时间: 2024-10-24 20:53:03

(石头、剪刀、布)shell脚本,随机对比,case的应用的相关文章

shell脚本之 if,case,for的用法

目录一.条件选择:if语句二.条件判断:case语句三.for循环 一.条件选择:if语句 单分支if 判断条件;then 条件为真的分支代码fi 例子:判断一个数字是否等于10#!/bin/bashread -p '输入一个数字' numif [ $num -eq 10 ];thenecho 该数字等于10fi 双分支if 判断条件; then 条件为真的分支代码else 条件为假的分支代码fi例子:判断一个数字是否大于10#!/bin/bashread -p '输入一个数字' numif [

shell 脚本中使用case查看登陆用户

#! /bin/bash case $USERNAME in "student")echo u r using student;; "leonard")echo u r using leonard;; *)echo u r using other account;; esac

Shell脚本之:case

case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构. case语句的语法 case 值 in 模式1) command1 command2 command3 ;; 模式2) command1 command2 command3 ;; *) command1 command2 command3 ;; esac 取值后面必须为关键字 in,每一模式必须以右括号结束.其中;;与其他语言中的 break 类似 下面是case的一个例子 #!/bin

shell脚本 传参数 case for

$ cat openstack_install.sh #!/usr/bin/env bash function usage { echo "Usage:$0 [OPTAION]..." echo "master install openstack master in this system." echo "compute install openstack compute in this system." exit } function proc

shell 脚本 随机抽取班上学生

#!/bin/bash # jw=('王浩' '谢云生' '黄科杨' '何星宇' '张宸兵' '邓培林' '刘桃' '杨沛东' '楚齐文' '咸鱼' '杨东' '黄庭辉' '郑少文' '师靖' '肖洪森' ) #定义数组 a=$(( $RANDOM % 15 )) #生成 0~14 的 随机数 $RANDOM 为随机变量 echo ${jw[a]} #输出数组 数组下标从0开始

shell 脚本随机抽取班级学生

#/bin/bash jw=(name1,name2,name3......name39) for i in {1..3} do a=$(date +%N) b=$(expr $a % 39) echo "学号:"$[$b + 1]" "${jw[$b]} done

以写代学:python实现 剪刀、石头、布游戏

前言: 这个脚本实现剪刀石头布的游戏,但是并没有异常处理.只有用户在输入0.1.2时才可以正常处理. #!/usr/bin/env python# coding: utf8import random                            //导入random模块,这是个产生随机数的模块 all_choice = ["石头","剪刀","布"]       //定义一个列表,将选择添加到列表中win_list = [["石

Shell 脚本 100 例《二》

11. 编写脚本,实现人机<石头,剪刀,布>游戏 #!/bin/bash #Author:丁丁历险(Jacob) game=(石头 剪刀 布) num=$[RANDOM%3] computer=${game[$num]} #通过随机数获取计算机的出拳 #出拳的可能性保存在一个数组中,game[0],game[1],game[2]分别是 3 中不同的可能   echo "请根据下列提示选择您的出拳手势" echo "1.石头" echo "2.剪

shell脚本游戏之:剪刀石头布

#!/bin/bash #Author:丁丁历险(Jacob) #定义数组,保存所有出拳的可能性 game=(石头 剪刀 布) num=$[RANDOM%3] computer=${game[$num]} #通过随机数获取计算机的出拳 #出拳的可能性保存在一个数组中,game[0],game[1],game[2]分别是3中不同的可能   echo "请根据下列提示选择您的出拳手势" echo "1.石头" echo "2.剪刀" echo &qu