您的位置:首页 > 运维架构 > Shell

shell写俄罗斯方块(一)

2016-07-24 22:33 495 查看
 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=(011121221 011122000011121 0 2 1 0 1 1 1 2) box6=(0 1 1 1 1 2 2 1 1 0 1 11 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设置光标位置
到这里我们把我们要在屏幕显示的坐标点都显示出来吧: 效果: 到此我们终于可以在屏幕上画出东东了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: