码迷,mamicode.com
首页 > 其他好文 > 详细

游戏脚本 - 长跑比赛脚本

时间:2017-07-30 00:57:00      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:for   function   显示   脚本   i++   over   class   read   step   

#!/bin/bash
#author:zhengning
#date:20170729
#version 1.1
#运动会比赛脚本,同等耗时,谁奔跑的距离远谁获胜
#脚本运行方法:直接运行脚本名(sh game.sh)

title=第一届长跑运动会!   #运动会标题设定
User=(小红 小明 小刚 张三 李四)  #数组:所有的运动员,运动员可随意添加,数量无限制

BEGIN_Y=6                        #初始行Y轴定位
BEGIN_X=20                       #初始行X轴定位
ENG_Y=$[$BEGIN_Y+${#User[@]}+2]  #结束行Y轴定位
Time=1                           #频次间隔
Long=5                           #执行20次奔跑

echo -e "\033[2J"                #清屏
echo -e "\033[2;2H$title"        #输出运动会标题

#奔跑脚本
function run(){
echo -e "\033[6;0H运动员:" 
for ((i=1;i<=${#User[@]};i++));do
    User_num=$[$i-1]
    User_X=$BEGIN_X
    User_Y=$[$BEGIN_Y+$i]

    echo -e "\033[${User_Y};5H${User[$User_num]}:"

    {
    echo -e "\033[${User_Y};${User_X}HO"       #图形位置初始定位
    sleep 3                                    #频次间隔
    for ((j=1;j<=$Long;j++));do
        echo -e "\033[${User_Y};${User_X}H "   #清除之前显示
        Step=$[$RANDOM%3+2]                    #步伐大小范围(3-5)
        User_X=$[$Step+$User_X]                #更新随机一次步伐后X轴位置
        echo -e "\033[${User_Y};${User_X}HO"   #图形位置定位
        sleep $Time                            #频次间隔
    done
    Tmp[$User_num]=$User_X                     #运动员最终距离 Tmp[]数组赋值;即最终X轴距离  /////有问题
    echo -e "$User_num\t$User_X" >>tmp.game
    }&

done
}

#Ready  go!!! 
echo -e "\033[4;2H Ready" ; sleep 1      #显示准备
echo -e "\033[4;2H      " ; run          #清楚准备,执行奔跑脚本
echo -e "\033[4;2H 3"     ; sleep 1      #倒计时3
echo -e "\033[4;2H 2"     ; sleep 1      #倒计时2
echo -e "\033[4;2H 1"     ; sleep 1      #倒计时1
echo -e "\033[4;2H go!!!"                #倒计时, 开始
sleep $[$Long+1]        #等待后台执行的子进程(run)执行完成
wait

#名次排序
#Order=`echo ${Tmp[*]} |tr   \n |cat -n |sort -k2nr |awk {print$1-1}`
#Order=`sort -k2nr tmp.game|awk {print$1}`
m=0
echo -e "\033[$ENG_Y;0H名次:"
for i in `awk {print$2} tmp.game|sort -run`;do
    echo -en "\t第$[++m]名:"

    for j in `awk -v aa=$i $2==aa{print$1} tmp.game`;do
        echo -ne "${User[$j]}、"
    done

    echo -e "\b "
done

rm tmp.game -f
echo "Game over!"

 

游戏脚本 - 长跑比赛脚本

标签:for   function   显示   脚本   i++   over   class   read   step   

原文地址:http://www.cnblogs.com/pzzning/p/7257980.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!