免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: ivyharry
打印 上一主题 下一主题

问一个可行性的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-04-08 06:32 |只看该作者
数组构造阵列,参考下本版shell版俄罗斯方块程序,也许会有收获

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
12 [报告]
发表于 2007-04-08 17:42 |只看该作者
试着写了一个,楼主试一试:
  1. F0=' -
  2. | |
  3.    
  4. | |
  5. - '
  6. F1='   
  7.   |
  8.    
  9.   |
  10.    '
  11. F2=' -
  12.   |
  13. -
  14. |  
  15. - '
  16. F3=' -
  17.   |
  18. -
  19.   |
  20. - '
  21. F4='   
  22. | |
  23. -
  24.   |
  25.    '
  26. F5=' -
  27. |  
  28. -
  29.   |
  30. - '
  31. F6=' -
  32. |  
  33. -
  34. | |
  35. - '
  36. F7=' -
  37.   |
  38.    
  39.   |
  40.    '
  41. F8=' -
  42. | |
  43. -
  44. | |
  45. - '
  46. F9=' -
  47. | |
  48. -
  49.   |
  50. - '


  51. digi ()
  52. {
  53.   eval echo \"\$F$1\"
  54. }

  55. lcd ()
  56. {
  57.   { eval $*|grep -q '[^0-9]';}&&{ echo only digital charachters allowed;return 1;}
  58.   eval paste -d\" \" $($*|sed 's/./ <(digi &)/g')
  59. }

  60. lcd date +%H%M%S
复制代码


测试环境:
GNU bash, version 2.05b.0(1)

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
13 [报告]
发表于 2007-04-09 09:10 |只看该作者
晕!上面的F*的变量中的减号前后的空格有些被莫名其妙地丢掉了,看来论坛的BBCODE代码还是有点问题。请注意F*中每个减号前后都有且只有一个空格。
看来只好上传个附件了。
请将文件扩展名改为.txt后查看,unix格式文本。

[ 本帖最后由 woodie 于 2007-4-9 09:11 编辑 ]

lcd.zip

444 Bytes, 下载次数: 18

测试脚本

论坛徽章:
0
14 [报告]
发表于 2007-04-09 11:19 |只看该作者
说一下我的思路:


8端数码管
-                 [BK][-][BK] [BK]
| |                [|] [BK][|] [BK]
-                 [BK][-][BK] [BK]
| |                [|] [BK][|] [BK]
- .               [BK][-][BK] [.]
  

要横向显示的话,根据行走
1-0 可以表示为

1.1  (1的第一行)          ...         0.1
|
1.5  (1的第五行)          ...         0.5                 

如 12345

取值时候走矩阵
1.1 2.1 3.1 4.1 5.1
1.2 2.2 3.2 4.2 5.2
...
1.5 2.5 3.5 4.5 5.5

应该可以完美显示.

[ 本帖最后由 iamkey9 于 2007-4-9 11:31 编辑 ]

论坛徽章:
0
15 [报告]
发表于 2007-04-09 14:29 |只看该作者
  1. date +%H%M%S |awk '
  2. function initTable(){

  3.         lcdTable[0,2,1] = 1;
  4.         lcdTable[0,1,2] = 2;
  5.         lcdTable[0,3,2] = 2;
  6.         lcdTable[0,1,4] = 2;
  7.         lcdTable[0,3,4] = 2;
  8.         lcdTable[0,2,5] = 1;

  9.         lcdTable[1,3,2] = 2;
  10.         lcdTable[1,3,4] = 2;

  11.         lcdTable[2,2,1] = 1;
  12.         lcdTable[2,3,2] = 2;
  13.         lcdTable[2,2,3] = 1;
  14.         lcdTable[2,1,4] = 2;
  15.         lcdTable[2,2,5] = 1;

  16.         lcdTable[3,2,1] = 1;
  17.         lcdTable[3,3,2] = 2;
  18.         lcdTable[3,2,3] = 1;
  19.         lcdTable[3,3,4] = 2;
  20.         lcdTable[3,2,5] = 1;

  21.         lcdTable[4,1,2] = 2;
  22.         lcdTable[4,3,2] = 2;
  23.         lcdTable[4,2,3] = 1;
  24.         lcdTable[4,3,4] = 2;

  25.         lcdTable[5,2,1] = 1;
  26.         lcdTable[5,1,2] = 2;
  27.         lcdTable[5,2,3] = 1;
  28.         lcdTable[5,3,4] = 2;
  29.         lcdTable[5,2,5] = 1;

  30.         lcdTable[6,2,1] = 1;
  31.         lcdTable[6,1,2] = 2;
  32.         lcdTable[6,2,3] = 1;
  33.         lcdTable[6,1,4] = 2;
  34.         lcdTable[6,3,4] = 2;
  35.         lcdTable[6,2,5] = 1;

  36.         lcdTable[7,2,1] = 1;
  37.         lcdTable[7,3,2] = 2;
  38.         lcdTable[7,3,4] = 2;

  39.         lcdTable[8,2,1] = 1;
  40.         lcdTable[8,1,2] = 2;
  41.         lcdTable[8,3,2] = 2;
  42.         lcdTable[8,2,3] = 1;
  43.         lcdTable[8,1,4] = 2;
  44.         lcdTable[8,3,4] = 2;
  45.         lcdTable[8,2,5] = 1;

  46.         lcdTable[9,2,1] = 1;
  47.         lcdTable[9,1,2] = 2;
  48.         lcdTable[9,3,2] = 2;
  49.         lcdTable[9,2,3] = 1;
  50.         lcdTable[9,1,4] = 2;
  51.         lcdTable[9,3,4] = 2;
  52.         lcdTable[9,2,5] = 1;
  53. }

  54. function printLCD(pLCD, pCount, i, j){

  55.         for (j = 1; j <= 5; j++){
  56.                 for (i = 1; i <= pCount * 3; i++) printf !pLCD[i,j] ? " " : (pLCD[i,j] == 1 ? "-" : "|");
  57.                 printf "\n";
  58.         }
  59. }

  60. function setLCD(pLCD, pPos, pNumber, i, j){

  61.         for (i = 1; i <= 3; i++) for (j = 1; j <= 5; j++) pLCD[pPos*3 + i,j] = lcdTable[pNumber,i,j];
  62. }

  63. BEGIN {
  64.         initTable();       
  65. }

  66. {
  67.         count = split($0, arr, "");

  68.         for (i = 0; i < count; i++) setLCD(lcd, i, arr[i+1]);

  69.         printLCD(lcd, count);
  70. }'
复制代码

论坛徽章:
0
16 [报告]
发表于 2007-04-09 19:34 |只看该作者
搞个矩阵就行了..........上面已经实现了..

论坛徽章:
0
17 [报告]
发表于 2007-04-09 20:10 |只看该作者
帮主也来凑热闹呀~

论坛徽章:
0
18 [报告]
发表于 2007-04-10 06:22 |只看该作者
....

matrix matrix

确实这样一来简单点了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP