shell脚本写飞行棋

#!/bin/bash
#定义一个函数用于产生随机数
function  zsz(){
   let  random=$(($RANDOM%6))+1;
 
  return $random
}
#获得一个数组  向数组中添加棋盘
for((i=0;i<=75;i++))
do
  array4[$i]=□
  #埋雷  
 if  [[ $i -eq  9 ||   $i -eq  23 || $i -eq 36 || $i -eq 44 || $i -eq 55   ||  $i -eq  73 ]];
 then
   array4[$i]=⊙
   # 再跌一次
  elif  [[ $i -eq  5 || $i  -eq 25 || $i -eq 66 ]]
  then
  array4[$i]=?
  # 转轮
  elif  [[ $i -eq  16 || $i  -eq 46  || $i -eq 62 ]]
  then
    # 可能前进或者后退
            array4[$i]=?
  elif [[ $i -eq  75 ]]
  then
    array4[$i]=?
  fi
done



# 第一个参数为当前图标  第二个参数为 总步数  第三个参数为 掷出点数 第四个参数为当前所在位置的符号
man=(? -1 0,?);
weman=(? -1 0,?);
#用个标记 来判断谁先获胜
flag=0;
#str1  用于拼前10 个 位置
str1="\t?\t"
echo -e "\t\t\t\t\t\t \033[32m 余大大的飞行棋 \033[0m"
#首先让自己先掷塞子
wj=0;

while [[ flag -eq  0  ]]
do

  #处理自己掷塞子
  if [[ ${man[1]} -ge 0  ]]
  then  
    if [ ${man[1]} != ${weman[1]}  ]
    then
    man[3]=${array4[${man[1]}]}
    fi

  # 将人物符号放入当前位置
   array4[${man[1]}]=${man[0]}
  fi
  #处理人机掷塞子
   if [[ ${weman[1]} -ge  0  ]]
  then  
     if [ ${man[1]} != ${weman[1]}  ]
    then
    weman[3]=${array4[${weman[1]}]}
    fi
  # 将人物符号放入当前位置
   array4[${weman[1]}]=${weman[0]}
  fi



echo -e "\t\t\t\t\t   自己?   人机?"
for((i=0;i<${#array4[@]};i++))
do
  #将第当前下标放入数组中
   #当i小于10
   if [ $i  -le  10 ]
   then
      str1=${str1}"${array4[$i]}\t"
        if [ $i = 10 ]
        then
        echo -e "$str1"
    str1=""
        fi
   fi
   if [[  $i -ge 11 &&  $i -le 12 ]];
   then
    echo  -e "\t\t\t\t\t\t\t\t\t\t\t\t${array4[$i]}"
   fi
   #13 -23
    if [[ $i  -ge  13 &&  $i -le 23 ]];
   then
      str1=${str1}"${array4[$i]}\t"
        if [ $i = 23 ]
        then
        echo -e "$str1\t" | rev
    str1="\t\t"

        fi
   fi
   # 24 25
   if [[  $i -ge 24 &&  $i -le 25 ]];
   then
     echo  -e "\t\t${array4[$i]}"
   fi
   # 26  36
   if [[ $i  -ge  26 &&  $i -le 36 ]];
   then
      str1=${str1}"${array4[$i]}\t"
        if [ $i = 36 ]
        then
        echo -e "$str1"
    str1=""
        fi
   fi
   # 37 38
   if [[  $i -ge 37 &&  $i -le 38 ]];
   then
    echo  -e "\t\t\t\t\t\t\t\t\t\t\t\t${array4[$i]}"
   fi
   # 39 49
   if [[ $i  -ge  39 &&  $i -le 49 ]];
   then
      str1=${str1}"${array4[$i]}\t"
        if [ $i = 49 ]
        then
        echo -e "$str1\t" | rev
    str1="\t\t"
        fi
   fi
   #  50 51
   if [[  $i -ge 50 &&  $i -le 51 ]];
   then
     echo  -e "\t\t${array4[$i]}"
   fi
   # 52 62
   if [[ $i  -ge  52 &&  $i -le 62 ]];
   then
      str1=${str1}"${array4[$i]}\t"
        if [ $i = 62 ]
        then
        echo -e "$str1"
    str1=""
        fi
   fi
   # 63  64
      if [[  $i -ge 63 &&  $i -le 64 ]];
   then
    echo  -e "\t\t\t\t\t\t\t\t\t\t\t\t${array4[$i]}"
   fi
   # 65 75
   if [[ $i  -ge  65 &&  $i -le 75 ]];
   then
      str1=${str1}"${array4[$i]}\t"
        if [ $i = 75 ]
        then
        echo -e "$str1\t" | rev
    str1="\t?\t"
        fi
   fi     
done

  echo  -e "\t\t\t\t⊙ 炸弹   ?  再跌一次  ? 幸运转轮"
  #游戏结束
  if  [ ${man[1]} -eq  75 ]
  then
   echo -e "\033[5;34m 您获取了胜利 \033[0m"
    exit
 
  fi
  if  [ ${weman[1]} -eq  75 ]
  then
   echo -e "\033[5;34m 人机获取了胜利 \033[0m"
    exit
  fi   
   #将当前下标换成原来的图案
   if [[     ${man[1]} -ge  0  ]]
   then
    array4[${man[1]}]=${man[3]}  
   
      #踩到炸弹了
    if  [[ ${man[1]} -eq  9 ||   ${man[1]} -eq  23 || ${man[1]} -eq 36 || ${man[1]} -eq 44 || ${man[1]} -eq 55   || ${man[1]} -eq  73 ]];
      then  
       if [[ $wj  -eq  9  ]]
             then
                  wj=0;
            elif [[   $wj -eq  1 ]]
        then
              echo -e "\033[31m     ?踩到地雷 暂停一次     \033[0m"
              #将执行的机会让出
              wj=5;
        fi
     # 再跌一次
    elif  [[ ${man[1]} -eq  5 || ${man[1]}  -eq 25 || ${man[1]} -eq 66 ]]
    then
       echo -e "\033[32m  ?恭喜 再跌一次   \033[0m"
               wj=0;
    # 转轮
     elif  [[ ${man[1]} -eq  16 || ${man[1]}  -eq 46  || ${man[1]} -eq 62 ]]
      then
          man[2]=5
        let man[1]=man[2]+man[1]
        echo -e "\033[32m   ?获取空中补给前进5格 \033[0m"
        sleep 3
 
        #第二次再执行人机
    wj=2;

    fi
   fi
   

   #人机
   if [[    ${weman[1]} -ge  0  ]]
    then
    array4[${weman[1]}]=${weman[3]}

          #踩到炸弹了
    if  [[ ${weman[1]} -eq  9 ||   ${weman[1]} -eq  23 || ${weman[1]} -eq 36 || ${weman[1]} -eq 44 || ${weman[1]} -eq 55   || ${weman[1]} -eq  73   ]];
      then
         
         if [[ $wj  -eq  8  ]]
             then
                  wj=1;
             elif [[   $wj -eq  0 ]]
         then
         echo -e "\033[31m     ?踩到地雷 暂停一次     \033[0m"
                 #将执行的机会让出
              wj=4;
             fi
     # 再跌一次
    elif  [[ ${weman[1]} -eq  5 || ${weman[1]}  -eq 25 || ${weman[1]} -eq 66 ]]
    then
       echo -e "\033[32m  ?恭喜 再跌一次   \033[0m"
               wj=1;
    # 转轮
    elif  [[ ${weman[1]} -eq  16 || ${weman[1]}  -eq 46  || ${weman[1]} -eq 62 ]]
      then
          weman[2]=5
        let weman[1]=weman[2]+weman[1]
        echo -e "\033[32m   ?获取空中补给前进5格 \033[0m"
        #第二次再执行玩家
     sleep 3
    wj=3;

    fi   
    fi
 
 
   #自己
   if [[ $wj  -eq   0 || $wj -eq  4 || $wj -eq  6 ]]
   then
   read -p"请掷骰子(按y):"
   zsz
   man[2]=$?
   let man[1]=man[2]+man[1]
   if [ ${man[1]}  -ge  75 ]
   then
     man[1]=75;

   fi
   if  [ ${man[1]} -eq  ${weman[1]} ]
   then
     man[3]=${weman[3]}
     
   fi
   echo  "您掷出了 ${man[2]}"
     if [[ $wj  -eq  6  ]]
   then
      wj=8;
    fi
   if [[ $wj  -eq  4  ]]
   then
       echo -e "\033[32m  ?人机踩种雷 再跌一次   \033[0m"
      wj=6;
    fi
 
 
   sleep 3
    fi
    
   if [[ $wj  -eq   1 ||  $wj  -eq   5 || $wj  -eq 7 ]]
   then
   zsz
   weman[2]=$?
   let weman[1]=weman[2]+weman[1];
    if [ ${weman[1]}  -ge  75 ]
   then
     weman[1]=75;
    
   fi
   if  [ ${man[1]} -eq  ${weman[1]} ]
   then
     weman[3]=${man[3]}
   fi
   echo  "人机掷出了 ${weman[2]}"
      if [[ $wj  -eq  7  ]]
   then
   wj=9;
   fi

    if [[ $wj  -eq  5  ]]
   then
     echo -e "\033[32m  ?玩家踩种雷 再跌一次   \033[0m"
   wj=7;
   fi
 
   sleep 3
   fi

   if [[ $wj  -eq   0 ]]
   then  
   wj=1;
   elif [[ $wj  -eq   1 ]]
   then
   wj=0;
    elif [[ $wj  -eq   2 ]]
   then
   wj=1;
    elif [[ $wj  -eq  3  ]]
   then
   wj=0;
   fi
   echo -e "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
done
 
 
 
 

猜你喜欢

转载自blog.csdn.net/yumingzhu1/article/details/80604373
今日推荐