<span style="font-size:24px;">1、这里有一个很重要的命令:echo,用这个命令改变输出的颜色及光标的位置,具体可以参看我另一篇转载的博客 2、定义方块的表达方式,所有方块都是由4个单位块组成,4个单位块的不同位置就组成了不同方块,且每一方块都有不同的形式。 box数组,前8个是单位块的坐标,后两个是出现的第一个方块的位置。 3、 </span> #!/bin/bash #Program # This program trys to draw border #History # Walker first 2015-07-27 marginLeft=4; marginTop=5; mapWidth=10; mapHeight=20; ((mapLeft=${marginLeft}+2)) ((mapTop=${marginTop}+1)) box0_0=(0 0 0 1 1 0 1 1 0 4) #方块数组 box1_0=(0 1 1 1 2 1 3 1 0 3) box1_1=(1 0 1 1 1 2 1 3 -1 3) box2_0=(0 0 1 0 1 1 2 1 0 4) box2_1=(0 1 0 2 1 0 1 1 0 3) box3_0=(0 1 1 0 1 1 2 0 0 4) box3_1=(0 0 0 1 1 1 1 2 0 4) box4_0=(0 2 1 0 1 1 1 2 0 3) box4_1=(0 1 1 1 2 1 2 2 0 3) box4_2=(1 0 1 1 1 2 2 0 -1 3) box4_3=(0 0 0 1 1 1 2 1 0 4) box5_0=(0 0 1 0 1 1 1 2 0 3) box5_1=(0 1 0 2 1 1 2 1 0 3) box5_2=(1 0 1 1 1 2 2 2 -1 3) box5_3=(0 1 1 1 2 0 2 1 0 4) box6_0=(0 1 1 0 1 1 1 2 0 3) box6_1=(0 1 1 1 1 2 2 1 0 3) box6_2=(1 0 1 1 1 2 2 1 -1 3) box6_3=(0 1 1 0 1 1 2 1 0 4) DrawBorder()//绘制边框函数 { local i y x1 x2#局部变量的定义,local的使用 echo -ne " 33[1m 33[32m 33[42m"#1m表示高亮表示,32表示前景色,42表示背景色,3开头的颜色是前景色,4开头的是背景色 ((x1=marginLeft+1)) ((x2=x1+2+mapWidth*2)) # echo $x1 # echo $x2 for((i=0;i<mapHeight;i++)) do ((y=i+marginTop+1))#绘制左右边框 echo -ne " 33[${y};${x1}H||" echo -ne " 33[${y};${x2}H||" done ((x1=marginTop+mapHeight+1)) for((i=0;i<mapWidth+2;i++)) do ((y=i*2+marginLeft+1))//#绘制上下边框 echo -ne " 33[${marginTop};${y}H==" echo -ne " 33[${x1};${y}H==" done echo -ne " 33[0m"//取消高这显示 } DrawBox()#方块绘制函数 { local i x y xPos yPos yPos=${box0_0[8]}#保存首次出现的位置 xPos=${box0_0[9]} echo -ne " 33[1m 33[35m 33[45m" for((i=0;i<8;i+=2))#绘制方块,每次绘制一个单位块 do (( y = ${mapTop} + ${box0_0[$i]} + ${yPos} )) (( x = ${mapLeft} + 1 + 2*(${box0_0[$i+1]} + ${xPos}))) echo -ne " 33[${y};${x}H[]" done echo -ne " 33[0m" } clear#清屏 DrawBorder DrawBox ((overPos=${marginTop}+${mapHeight}+4)) echo -ne " 33[${overPos};1H"#重定位光标位置