<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 "\033[1m\033[32m\033[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 "\033[${y};${x1}H||"
echo -ne "\033[${y};${x2}H||"
done
((x1=marginTop+mapHeight+1))
for((i=0;i<mapWidth+2;i++))
do
((y=i*2+marginLeft+1))//#绘制上下边框
echo -ne "\033[${marginTop};${y}H=="
echo -ne "\033[${x1};${y}H=="
done
echo -ne "\033[0m"//取消高这显示
}
DrawBox()#方块绘制函数
{
local i x y xPos yPos
yPos=${box0_0[8]}#保存首次出现的位置
xPos=${box0_0[9]}
echo -ne "\033[1m\033[35m\033[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 "\033[${y};${x}H[]"
done
echo -ne "\033[0m"
}
clear#清屏
DrawBorder
DrawBox
((overPos=${marginTop}+${mapHeight}+4))
echo -ne "\033[${overPos};1H"#重定位光标位置