shell写俄罗斯方块(一)


shell能是命令行解释器,shell脚本是命令的有序结合。在网上看到一位哥们用shell语言写了一个游戏,俄罗斯方块,佩服呀。为了弥补童年的不足,我们一起用shell语言开始编写我们自己的俄罗斯方块吧。
我们先来回顾一下,俄罗斯都有哪些方块吧。
26833883_1333021683lGZJ.png
box0=(0 0 0 1 1 0 1 1)
26833883_1333021996zU3O.png26833883_1333022103M110.png
box1=(0 2 1 2 2 2 3 2 1 0 1 1 1 2 1 3)
26833883_13330222825ZdW.png26833883_1333022352HSYt.png
box3=(0 1 0 2 1 0 1 1 0 0 1 0 1 1 2 1)
26833883_13330225264Pyq.png26833883_1333022628Hn5k.png26833883_1333022734jJW9.png26833883_1333022764ppPk.png
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 )
26833883_1333022916256D.png26833883_1333022940xtMH.png26833883_1333022970Eqiq.png26833883_1333023003B9CL.png
box5=(011121221 011122000011121 0 2 1 0 1 1 1 2)
26833883_1333023482n0ZC.png26833883_1333023506N1DS.png26833883_1333023600NGF6.png26833883_13330236295sZJ.png
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设置光标位置
到这里我们把我们要在屏幕显示的坐标点都显示出来吧:
26833883_133302391940QK.png
效果:
26833883_1333023985369w.png
到此我们终于可以在屏幕上画出东东了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值