当前位置: 首页 > news >正文

Linux脚本shell编程通过数组实现石头剪刀布小游戏

  • 通过实现石头剪刀布小游戏了解Shell编程数组的应用
#!/bin/bash
#
##***********************************************************************
## Author: sunmy
## MAil: sunmy@sunmy.pro
## Date: 2021-12-16
## FileName:Rock_Game_v2.sh
## URL: https://www.sunmy.pro
## Description:Play with PC.
## Copyright (C): 2021 All rights reserved
##***********************************************************************
#
game=(Rock Paper Scissors) ## 定义数组
num=$[RANDOM%3] ## 定义数组下标
computer=${game[$num]} ## 定义计算机函数

## 通过随机数对3取模,获取下标分别是0,1,2的数组内容,实现计算机随机出拳

Show(){
  echo "Chose you want !"
  echo "1.${game[0]}"
  echo "2.${game[1]}"
  echo "3.${game[2]}"
}

Choose(){
    read -p "Please Chose 1-3:"  Player
    echo "You ${game[$Player-1]}"
    case $Player in
    1)
      if [ $num -eq 0 ];then
          echo "Draw!"
      elif [ $num -eq 1 ];then
          echo "You win!"
      else 
          echo "I win!"
      fi;;
    2)
      if [ $num -eq 0 ];then
          echo "I win!"
      elif [ $num -eq 1 ];then
          echo "Draw!"
      else 
          echo "You win!"
      fi;;
    3)
      if [ $num -eq 0 ];then
          echo "You win!"
      elif [ $num -eq 1 ];then
          echo "You win!"
      else 
          echo "Draw!"
      fi;;  
    *)
      echo "You have to intup 1-3!"  
    esac
}

while : ; do
 Show
 sleep 1
 Choose && echo PC ${computer}" >> RockGame`date +%F`.log
 sleep 1
 echo "Pass Ctrl+D tu Quit Game!"
 sleep 1
done

  • 后期可以加上颜色更好看一些,我懒得加了,就这吧。
    石头剪刀布

相关文章:

  • CentOS8快速安装Docker
  • CentOS8快速部署轻量级自动化运维平台Spug
  • DveOps常见项目代码部署发布方式
  • 云原生时代一站式DevOps平台--阿里云效
  • IBM WAS 简介
  • 实现判断CentOS的主版本号
  • Linux校验比对文件一致性的shell脚本
  • Linux防火墙之通俗易懂的iptables五表五链解释
  • nmap部分实例应用
  • VSFTP服务器配置具有不同访问权限的虚拟用户
  • linux配置应用服务器通过证书免密码登录SFTP测试站点
  • Linux下非逻辑卷扩容之创建逻辑卷pvcreate是否会损坏原数据测试
  • Linux下非逻辑卷扩容之新增盘扩容
  • Linux下多挂载点mount实验
  • Linux取ip地址
  • 【node学习】协程
  • 10个确保微服务与容器安全的最佳实践
  • Angular 2 DI - IoC DI - 1
  • avalon2.2的VM生成过程
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Docker容器管理
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Gradle 5.0 正式版发布
  • java 多线程基础, 我觉得还是有必要看看的
  • Java深入 - 深入理解Java集合
  • React组件设计模式(一)
  • Redash本地开发环境搭建
  • Service Worker
  • Vue2.x学习三:事件处理生命周期钩子
  • 多线程事务回滚
  • 给github项目添加CI badge
  • 利用DataURL技术在网页上显示图片
  • 日剧·日综资源集合(建议收藏)
  • 深入浅出Node.js
  • 提醒我喝水chrome插件开发指南
  • 通过git安装npm私有模块
  • 微信开源mars源码分析1—上层samples分析
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • #### go map 底层结构 ####
  • #Linux(权限管理)
  • (10)STL算法之搜索(二) 二分查找
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (附源码)计算机毕业设计高校学生选课系统
  • (十六)串口UART
  • (十一)图像的罗伯特梯度锐化
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (转)h264中avc和flv数据的解析
  • (转)http-server应用
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET 8.0 中有哪些新的变化?
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter