(石头、剪刀、布)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,有更好的方法可以私信博主,或评论区分享。谢谢。
转载于:https://blog.51cto.com/13589092/2066024
(石头、剪刀、布)shell脚本,随机对比,case的应用相关推荐
- Java黑皮书课后题第5章:**5.34(游戏:石头、剪刀、布)编程练习题3.17给出玩石头-剪刀-布游戏的程序。修改这个程序,让用户可以连续玩这个游戏,直到用户或者计算机赢对手两次以上为止
5.34(游戏:石头.剪刀.布)编程练习题3.17给出玩石头-剪刀-布游戏的程序.修改这个程序,让用户可以连续玩这个游戏,直到用户或者计算机赢对手两次以上为止 题目 题目概述 编程练习题3.17 破题 ...
- [案例2-5]石头 剪刀 布小游戏
1.任务描述 "剪刀石头布"的游戏相信大家都不陌生,本案例要求编写一个剪刀石头布游戏的程序.程序启动后会随机生成1~3的随机数,分别代表剪刀.石头和布,玩家通过键盘输入剪刀.石头和 ...
- python中answer是什么意思_用Python实现的quot;石头,剪刀,布quot; - The answer to everything - ITeye博客...
需求:设计一个"石头,剪子,布"游戏,有时又叫"Rochambeau",你小时候可能玩过,下面是规则.你和你的对手,在同一时间做出特定的手势,必须是下面一种手势 ...
- shell脚本之 if,case,for的用法
目录 一.条件选择:if语句 二.条件判断:case语句 三.for循环 一.条件选择:if语句 单分支 if 判断条件;then 条件为真的分支代码 fi 例子:判断一个数字是否等于10 #!/bi ...
- 【shell脚本】沐风晓月跟你聊聊shell脚本中的case实战
前言 前面我们已经介绍了while及for循环,结合if语句可以构建一些简单的控制面板及菜单脚本,今天我们来探讨下case语句. case选择语句,主要用于对多个选择条件进行匹配输出,与if elif ...
- shell脚本中的case语句使用要点
1.双分号(;;) 用于case语句中一个分支的结束. 可类比C++里面switch...case语句,在case语句之后,若所有语句都输完,后面跟着的"break;". 2.星号 ...
- linux文件比较脚本,shell脚本之对比不同目录的下的文件
让负责一部分代码的版本,担心公共目录下有人可能会稍微修改部分代码,因此把代码备份到自己的一个目录中,上传svn之前,如果发现公共目录的下的文件被修改,则找出变化部分,避免出现不可知的文件变化. 使用d ...
- Python实现石头-剪刀-布小游戏
近日在学习Python的一些基础知识,觉得还是很有趣的一个一门语言!就目前的学习的一些知识,编写了一些一个简单的石头剪刀布的游戏.主要是熟悉一些Python的一些控制语句. import random ...
- Java黑皮书课后题第3章:*3.17(游戏:剪刀、石头、布)编写可以玩流行的剪刀-石头-布游戏的程序
*3.17(游戏:剪刀.石头.布)编写可以玩流行的剪刀-石头-布游戏的程序 题目 题目概述 运行示例 ***特别注意*** 破题 代码 题目 题目概述 *3.17(游戏:剪刀.石头.布)编写可以玩流行 ...
最新文章
- Activity创建
- Oracle ASM Cluster File Systems (ACFS)应用指南
- destoon 屏蔽会员组,让个人,游客不显示
- Java垃圾回收日志解析
- 关于Java 8的Optional的介绍
- sublime text 3安装及使用
- WeX5 3.8开发工具之蓝牙打印(全流程记录不是最全,胜似最全)
- 「Python基础知识」Python字符串是什么,如何使用
- java web程序设计教程范立锋 最后的图书馆理系统_JavaWeb程序设计 习题参考答案(第7章)...
- 如何提升Wi-Fi速度 学会更改无线信道
- 亿乐社区最新版开源无后源码
- dependency报错
- retainall java_java用retainALL 处理两个具有相同元素的list,竟然返回false,这是为什么?...
- Java导入导出Excel控件简介
- 天然气压缩因子计算软件_为什么测量天然气选择气体涡轮流量计?
- 1KB文件夹快捷方式病毒解决方法
- 手把手教你架构3D引擎高级篇系列一
- GBD+XGBOOST算法原理深入解析
- CentOS和WIN7双系统时间错误
- archetype-catalog.xml
热门文章
- 虚同步(Virtual Synchrony)核心文献
- COMP3055 Machine Learning Coursework
- buuctf 派大星的烦恼 详解
- 七上八下猜数字_车上互动游戏
- 简单实现自定义Android TextView字体
- 2021ICPC沈阳区域赛BEFIJM
- 基于Java毕业设计在线云音乐系统源码+系统+mysql+lw文档+部署软件
- 商务手机最大突破是打破墨守成规的工作方式
- 汽车牌照的排序与查询
- 编译原理,C语言实现LR(0)分析(扩展文法的生成、项目集规范簇的生成、ACTION GOTO表的生成、句子的分析)