遊戲腳本 - 長跑比賽腳本

#!/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!"
相關文章
相關標籤/搜索