首页 电脑 电脑学堂 查看内容

shell版俄罗斯方块二:界面绘制

2015-7-27 10:45 |原作者: 朱传林 1066 1

摘要: view plaincopyspanstyle="font-size:24px;"1、这里有一个很重要的命令:echo,用这个命令改变输出的颜色及光标的位置,具体可以参看我另一篇转载的博客2、定义方块的表达方式,所有方块都是由4个单位块组成,4个 ...
关键词: nbsp box 方块 echo 033 marginTop 位置 marginLeft 景色 边框

  1. <span style="font-size:24px;">1、这里有一个很重要的命令:echo,用这个命令改变输出的颜色及光标的位置,具体可以参看我另一篇转载的博客  
  2. 2、定义方块的表达方式,所有方块都是由4个单位块组成,4个单位块的不同位置就组成了不同方块,且每一方块都有不同的形式。  
  3.    box数组,前8个是单位块的坐标,后两个是出现的第一个方块的位置。  
  4. 3、  
  5. </span>  
  6. #!/bin/bash  
  7.   
  8. #Program  
  9. #   This program trys to draw border  
  10. #History  
  11. #   Walker first 2015-07-27  
  12.   
  13. marginLeft=4;  
  14. marginTop=5;  
  15. mapWidth=10;  
  16. mapHeight=20;  
  17. ((mapLeft=${marginLeft}+2))  
  18. ((mapTop=${marginTop}+1))  
  19.   
  20. box0_0=(0 0 0 1 1 0 1 1 0 4) #方块数组  
  21.   
  22. box1_0=(0 1 1 1 2 1 3 1 0 3)  
  23. box1_1=(1 0 1 1 1 2 1 3 -1 3)  
  24.   
  25. box2_0=(0 0 1 0 1 1 2 1 0 4)  
  26. box2_1=(0 1 0 2 1 0 1 1 0 3)  
  27.   
  28. box3_0=(0 1 1 0 1 1 2 0 0 4)  
  29. box3_1=(0 0 0 1 1 1 1 2 0 4)  
  30.   
  31. box4_0=(0 2 1 0 1 1 1 2 0 3)  
  32. box4_1=(0 1 1 1 2 1 2 2 0 3)  
  33. box4_2=(1 0 1 1 1 2 2 0 -1 3)  
  34. box4_3=(0 0 0 1 1 1 2 1 0 4)  
  35.   
  36. box5_0=(0 0 1 0 1 1 1 2 0 3)  
  37. box5_1=(0 1 0 2 1 1 2 1 0 3)  
  38. box5_2=(1 0 1 1 1 2 2 2 -1 3)  
  39. box5_3=(0 1 1 1 2 0 2 1 0 4)  
  40.   
  41. box6_0=(0 1 1 0 1 1 1 2 0 3)  
  42. box6_1=(0 1 1 1 1 2 2 1 0 3)  
  43. box6_2=(1 0 1 1 1 2 2 1 -1 3)  
  44. box6_3=(0 1 1 0 1 1 2 1 0 4)  
  45.   
  46.   
  47. DrawBorder()//绘制边框函数  
  48. {  
  49.     local i y x1 x2#局部变量的定义,local的使用  
  50.     echo -ne "\033[1m\033[32m\033[42m"#1m表示高亮表示,32表示前景色,42表示背景色,3开头的颜色是前景色,4开头的是背景色  
  51.     ((x1=marginLeft+1))  
  52.     ((x2=x1+2+mapWidth*2))  
  53. #   echo $x1  
  54. #   echo $x2  
  55.     for((i=0;i<mapHeight;i++))  
  56.     do  
  57.         ((y=i+marginTop+1))#绘制左右边框  
  58.         echo -ne "\033[${y};${x1}H||"  
  59.         echo -ne "\033[${y};${x2}H||"  
  60.     done  
  61.   
  62.     ((x1=marginTop+mapHeight+1))  
  63.     for((i=0;i<mapWidth+2;i++))  
  64.     do  
  65.         ((y=i*2+marginLeft+1))//#绘制上下边框  
  66.         echo -ne "\033[${marginTop};${y}H=="  
  67.         echo -ne "\033[${x1};${y}H=="  
  68.     done  
  69.     echo -ne "\033[0m"//取消高这显示  
  70. }  
  71.   
  72. DrawBox()#方块绘制函数  
  73. {  
  74.     local i x y xPos yPos  
  75.     yPos=${box0_0[8]}#保存首次出现的位置  
  76.     xPos=${box0_0[9]}  
  77.     echo -ne "\033[1m\033[35m\033[45m"  
  78.     for((i=0;i<8;i+=2))#绘制方块,每次绘制一个单位块  
  79.     do  
  80.         (( y = ${mapTop} + ${box0_0[$i]} + ${yPos} ))  
  81.         (( x = ${mapLeft} + 1 + 2*(${box0_0[$i+1]} + ${xPos})))  
  82.         echo -ne "\033[${y};${x}H[]"  
  83.     done  
  84.     echo -ne "\033[0m"  
  85. }  
  86.   
  87. clear#清屏  
  88. DrawBorder  
  89. DrawBox  
  90.   
  91. ((overPos=${marginTop}+${mapHeight}+4))  
  92. echo -ne "\033[${overPos};1H"#重定位光标位置 
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手
1

鲜花

鸡蛋

刚表态过的朋友 (1 人)

  • 鲜花

    匿名

返回顶部