Chinaunix首页 | 论坛 | 博客
  • 博客访问: 244699
  • 博文数量: 37
  • 博客积分: 719
  • 博客等级: 上士
  • 技术积分: 325
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-04 10:04
文章分类

全部博文(37)

文章存档

2014年(2)

2013年(5)

2012年(11)

2011年(13)

2010年(3)

2009年(3)

分类:

2012-05-23 01:29:52

欢迎转载,请注明原处,版权个人所有,不得用于商业用途,违者将追求起法律责任。  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设置光标位置
到这里我们把我们要在屏幕显示的坐标点都显示出来吧:
 
 
效果:
 
到此我们终于可以在屏幕上画出东东了。
 
 
 
 
 
 
阅读(927) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~