[i=s] 本帖最后由 kevin_2009 于 2009-4-14 16:23 编辑 [/i]
[font=微软雅黑]
没办法,老师让3天内做完shell下的俄罗斯方块编程,那就只能去做咯,呵呵,
顺便和大家一起分享交流,一起努力完成这个有趣的游戏[/font]
第一步就是绘制界面了:
[attach]12778[/attach]
首先我们要学习一下shell下的颜色的使用
那么我们来看看shell下颜色的定义:
代码 颜色
---------------------------------------
0 黑色
1 ?色
2 ?色
3 ?色
4 ?色
5 紫?色
6 青?色
7 白色
-----------------------------------------
使用 shell 的颜色
下面我用一个提示符的例子来解释 shell 的颜色。
[nico@ ebrain: ~]$ PS1="\[\033[0;32;40m\u@\h:\w\$ \]"
这样提示符就全部显示成绿色了。就像这样: [nico@ ebrain: ~]$
\033 声明了转义序列的开始,然后是 [ 开始定义颜色。 后面的 0 定义了默认的字体宽度。稍后我会介绍其他的可用字符。 转义序列字符串要用 \[ 和 \] 括起来, 防止转义序列的文本显示在 shell 里占用太多的空间。
下面我们要选择前景色(这里是 32,代表绿色)。背景色的 40 表示黑色。 要是不想让提示符后面的文字也变成绿色,我们用 \033[0m 关闭转义序列, \033[0m 是 shell 的默认颜色。前景色和背景色都有 8 种可用的选择。
可选颜色:红色、绿色、黄色、蓝色、洋红、青色和白色。 他们对应的颜色代码是:30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)。
用同样色方法设置背景色,不过要把第一个数字“3”替换成“4”, 例如 40、41、42、43、44、45、46、47。
示例:
~/.bashrc: PS1="\[\033[0;37;44m\u@\033[0;32;43m\h:\033[0;33;41m\w$\033[0m\]"
这给了我们一个非常多彩的提示符:
nico@ ebrain: ~$
[attach]12779[/attach]
相信经过以上的学习,你对shell下的颜色有了进一步的了解,那么我们继续开始俄罗斯方块的编写吧。
从玩家的角度来看俄罗斯方块游戏。这个游戏由几种基本形状的砖头,依照一定的速度下降到窗口的底部。
在下落过程中,砖头是可以翻转和移动的。当底部有砖头衔接,占据了一整条行的时候,就可以被消除掉。所以,
我们的实现就分这么两大部分:后台处理部分和用户界面显示部分。
那么回到界面设计的问题上来。为了让颜色比较容易使用,这里我们用英文把字符给替换掉:
#颜色定义
cRed=1
cGreen=2
cYellow=3
cBlue=4
cFuchsia=5
cCyan=6
cWhite=7
colorTable=($cRed $cGreen $cYellow $cBlue $cFuchsia $cCyan $cWhite)
接下来的工作就是定义数组来显示方块了,我们知道,方块共有8种,而每种方块又各有几种变换的方式:
#七中不同的方块的定义
#通过旋转,每种方块的显示的样式可能有几种
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)
box2=(0 0 0 1 1 1 1 2 0 1 1 0 1 1 2 0)
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变量中
box=(${box0[@]} ${box1[@]} ${box2[@]} ${box3[@]} ${box4[@]} ${box5[@]} ${box6[@]})
#各种方块旋转后可能的样式数目
countBox=(1 2 2 2 4 4 4)
qxfsy 于 2014-02-09 10:59:29发表:
学习
秦合六一 于 2014-01-14 22:25:52发表:
颜色之类的表示,没有研究过
li_0327 于 2013-10-14 16:37:53发表:
学习!!
jeffkuang1 于 2013-10-14 15:43:37发表:
没有代码呢?
jabwking 于 2013-06-03 10:38:50发表:
厉害啊
evanly2013 于 2013-04-17 11:51:16发表:
好帖子
湫之落叶 于 2013-04-16 22:06:40发表:
LZ,谢了
youjh90 于 2013-04-16 20:39:28发表:
长见识了,shell还能干这个
cargo 于 2013-04-12 12:14:38发表:
想学习啊
童话之双栖蝶 于 2013-03-26 19:18:59发表:
顶一个。。。。。。
kyo2075 于 2013-03-26 13:35:18发表:
3天? 牛逼啊
zyy_hz 于 2013-03-19 21:46:35发表:
很想知道怎么编程。
tuonioooo 于 2013-03-19 13:34:52发表:
NB
coffee_thinking 于 2013-03-17 10:36:46发表:
学习
zyy_hz 于 2013-03-16 10:18:05发表:
很想要代码!
flyingfishfun 于 2013-03-16 09:57:23发表:
:0wmjh(1
bbeans 于 2013-01-07 14:11:23发表:
好强啊
秋天的絮儿 于 2013-01-06 00:04:14发表:
可以共享源代码吗?
lvpeng9696 于 2013-01-04 21:54:37发表:
谢谢。
weienchong 于 2012-11-03 21:11:34发表:
学 习了
hbyiwen 于 2012-07-23 13:35:45发表:
可以共享代码吗?试试
afeikuo7 于 2012-07-21 07:51:55发表:
没了吗~?
viforce 于 2012-07-18 12:13:45发表:
可以有 5:ty(
wueric 于 2012-07-06 12:39:11发表:
比较强
hug1985 于 2012-06-27 20:04:47发表:
太强大了
wlfzjj 于 2012-06-27 13:51:05发表:
学习了
honglianqxw123 于 2012-03-24 08:56:01发表:
学习了!!!!谢谢楼主。
hml1006 于 2011-04-22 16:50:47发表:
nb
花开花败2011 于 2011-02-12 16:59:13发表:
我顶啊
gjs1988 于 2011-01-31 15:04:14发表:
学习
qxhong 于 2011-01-30 09:32:48发表:
这也太强了吧
windnest 于 2011-01-26 23:08:06发表:
这个要顶的!!!学习!
yukon 于 2011-01-12 16:09:14发表:
厉害,学习学习!
水君 于 2011-01-08 23:12:02发表:
有意思
pope12389 于 2011-01-08 12:52:12发表:
还不怎么清楚SHELL
guoyang0601 于 2011-01-04 00:32:04发表:
好好学习一下,厉害
yyxl 于 2010-12-08 15:45:25发表:
Shell也可以
ruthless369 于 2010-11-30 17:03:36发表:
强大啊!!
xiaobing259 于 2010-11-29 17:32:26发表:
太强悍了!
wurr707 于 2010-09-28 17:37:30发表:
很不错~~