欢迎转载,请注明原处,版权个人所有,不得用于商业用途,违者将追求起法律责任。 chengyaogen.blog.chinaunix.net
shell能是命令行解释器,shell脚本是命令的有序结合。在网上看到一位哥们用shell语言写了一个游戏,俄罗斯方块,佩服呀。为了弥补童年的不足,我们一起用shell语言开始编写我们自己的俄罗斯方块吧。
我们先来回顾一下,俄罗斯都有哪些方块吧。
box0=(0 0 0 1 1 0 1 1)
box1=(0 2 1 2 2 2 3 2 1 0 1 1 1 2 1 3)
box3=(0 1 0 2 1 0 1 1 0 0 1 0 1 1 2 1)
box4=(0 1 0 2 1 1 2 1 1 0 1 1 1 2 2 2 0 1 1 1 2 0 2 1 0 0 1 0 1 1 1 2 )
box5=(0 1 1 1 2 1 2 2 1 0 1 1 1 2 2 0 0 0 0 1 1 1 2 1 0 2 1 0 1 1 1 2)
box6=(0 1 1 1 1 2 2 1 1 0 1 1 1 2 2 1 0 1 1 0 1 1 2 1 0 1 1 0 1 1 1 2 )
从上面我们可以看出,每幅图下面都有一个box = ()东东,这个是什么呢?它是shell中的数组,后面括号里面放的是它的元素,即坐标点.
一起来看看shell中数组的语法吧
Bash中,数组变量的赋值有两种方法:
(1)name=(value1 ... valuen)此时小标从0开始
(2)name[index]=value
下面以一个简单的脚本来说明,脚本内容如下
#!/bin/bash
#定义数组
A=(a b c def)
#把数组按字符串显示输出
echo ${A[@]}或echo ${A[*]}
显示:a b c def
#数组的长度表示${#A[*]}
len=${#A[*]}或者len=${#A[@]}
echo ${#A[*]}
显示: 4
#改变数组元素的值
A[3] ="hello word"
echo ${A[*]}
显示:a b c hello word
#循环输出数组
len=${#A[@]}
for ((i = 0;i < len;i ++))
do
echo -n "${A[i]}"
done
________________________________
(( i = 0 ))
while (( i < len ))
do
echo "${A[i]}"
(( i = i + 1))
done
#循环输出数组元素的另一种写法,注意,${A[*]}不能写成$A,$A默认是第一个元素,如果A="a b c ded",就可以写$A
for value in ${A[*]}
do
echo $value
done
现在坐标点有了,那怎样把这些坐标点显示在屏幕上?这里我们要看一下shell中echo的用法
echo的基本语法不在进行讲解,我们来看一些其他的
echo 要变换颜色的时候,要使用-e
格式:echo -e "\033[背景颜色;字体颜色m字符串\033[0m"
eg:
echo -e "\033[41;36m something here \033[0m"
其中41的位置代表底色,36的位置是代表字的颜色
那些ascii code是对颜色调用的始末
\033[;m ... \033[0m
例子:
让字体变为红色并且不停的闪烁
echo -e "\033[31m\033[05m请确认是否要停止当前的sequid进程,输入[Y|N]\033[0m"
字背景颜色范围:40 -- 49
40:黑 41:深红 42:绿 43:黄 44:蓝 45:紫 46:深绿 47:白色
字颜色:30 -- 39
30:黑 31:红 32:绿 33:黄 34:蓝 35:紫 36:深绿 37:白
ANSI控制码的说明
\033[0m 关闭所有属性 \033[1m设置高亮度 \033[4m下划线 \033[y;xH设置光标位置
到这里我们把我们要在屏幕显示的坐标点都显示出来吧:
效果:
到此我们终于可以在屏幕上画出东东了。
阅读(1188) | 评论(0) | 转发(0) |