红联Linux门户
Linux帮助

3天学会shell 俄罗斯方块 之一:绘制界面

发布时间:2009-04-14 15:52:41来源:红联作者:kevin_2009
[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)
文章评论

共有 65 条评论

  1. qxfsy 于 2014-02-09 10:59:29发表:

    学习

  2. 秦合六一 于 2014-01-14 22:25:52发表:

    颜色之类的表示,没有研究过

  3. li_0327 于 2013-10-14 16:37:53发表:

    学习!!

  4. jeffkuang1 于 2013-10-14 15:43:37发表:

    没有代码呢?

  5. jabwking 于 2013-06-03 10:38:50发表:

    厉害啊

  6. evanly2013 于 2013-04-17 11:51:16发表:

    好帖子

  7. 湫之落叶 于 2013-04-16 22:06:40发表:

    LZ,谢了

  8. youjh90 于 2013-04-16 20:39:28发表:

    长见识了,shell还能干这个

  9. cargo 于 2013-04-12 12:14:38发表:

    想学习啊

  10. 童话之双栖蝶 于 2013-03-26 19:18:59发表:

    顶一个。。。。。。

  11. kyo2075 于 2013-03-26 13:35:18发表:

    3天? 牛逼啊

  12. zyy_hz 于 2013-03-19 21:46:35发表:

    很想知道怎么编程。

  13. tuonioooo 于 2013-03-19 13:34:52发表:

    NB

  14. coffee_thinking 于 2013-03-17 10:36:46发表:

    学习

  15. zyy_hz 于 2013-03-16 10:18:05发表:

    很想要代码!

  16. flyingfishfun 于 2013-03-16 09:57:23发表:

    :0wmjh(1

  17. bbeans 于 2013-01-07 14:11:23发表:

    好强啊

  18. 秋天的絮儿 于 2013-01-06 00:04:14发表:

    可以共享源代码吗?

  19. lvpeng9696 于 2013-01-04 21:54:37发表:

    谢谢。

  20. weienchong 于 2012-11-03 21:11:34发表:

    学 习了

  21. hbyiwen 于 2012-07-23 13:35:45发表:

    可以共享代码吗?试试

  22. afeikuo7 于 2012-07-21 07:51:55发表:

    没了吗~?

  23. viforce 于 2012-07-18 12:13:45发表:

    可以有 5:ty(

  24. wueric 于 2012-07-06 12:39:11发表:

    比较强

  25. hug1985 于 2012-06-27 20:04:47发表:

    太强大了

  26. wlfzjj 于 2012-06-27 13:51:05发表:

    学习了

  27. honglianqxw123 于 2012-03-24 08:56:01发表:

    学习了!!!!谢谢楼主。

  28. hml1006 于 2011-04-22 16:50:47发表:

    nb

  29. 花开花败2011 于 2011-02-12 16:59:13发表:

    我顶啊

  30. gjs1988 于 2011-01-31 15:04:14发表:

    学习

  31. qxhong 于 2011-01-30 09:32:48发表:

    这也太强了吧

  32. windnest 于 2011-01-26 23:08:06发表:

    这个要顶的!!!学习!

  33. yukon 于 2011-01-12 16:09:14发表:

    厉害,学习学习!

  34. 水君 于 2011-01-08 23:12:02发表:

    有意思

  35. pope12389 于 2011-01-08 12:52:12发表:

    还不怎么清楚SHELL

  36. guoyang0601 于 2011-01-04 00:32:04发表:

    好好学习一下,厉害

  37. yyxl 于 2010-12-08 15:45:25发表:

    Shell也可以

  38. ruthless369 于 2010-11-30 17:03:36发表:

    强大啊!!

  39. xiaobing259 于 2010-11-29 17:32:26发表:

    太强悍了!

  40. wurr707 于 2010-09-28 17:37:30发表:

    很不错~~