#!/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!"