免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6016 | 回复: 10
打印 上一主题 下一主题

仿写个能发炮的字符坦克 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-22 13:53 |只看该作者 |倒序浏览
模仿 W.Z.T 的《用c写了个能发炮弹的ascii坦克车》 写了个 shell 脚本玩玩,基于 ANSI 控制序列,效果简陋了些:没有精确的定时器、未能隐藏光标

  1. #!/bin/sh
  2. type printf > /dev/null 2>&1
  3. if [ $? -ne 0 ]
  4. then
  5.         echo "error: no printf found!" 1>&2
  6.         exit
  7. fi

  8. width=80
  9. tank_len=33
  10. sleep_sec=1
  11. part_1="                        |        \033[33D\033[1B                 _\\---__|_       \033[33D\033[1BII=======OOOOO[/ *02 ___|        \033[33D\033[1B           ____\\_______|/-----."
  12. part_2="  \033[33D\033[1B         /____________________|  \033[33D\033[1B         \\@@@@@@@@@@@@@@@@@@@/   \033[33D\033[1B          ~~~~~~~~~~~~~~~~~~~    "
  13. route=`expr $width - $tank_len`

  14. clear
  15. i=`expr $route - 1`
  16. while [ $i -ge 0 ]
  17. do
  18.         if [ $i -eq `expr $route / 2` -o $i -eq `expr $route / 2 + 1` ]
  19.         then
  20.                 j=$i
  21.                 printf "\033[4A\r\033[$j""C\033[3DO\033[3C\a"
  22.                 while [ $j -gt 3 ]
  23.                 do
  24.                         sleep $sleep_sec
  25.                         printf "\033[7DO   "
  26.                         j=`expr $j - 3`
  27.                 done
  28.                 printf "\r   \033[3B"
  29.         fi
  30.         printf "\033[6A\r"
  31.         if [ $i -ne 0 ]
  32.         then
  33.                 printf "\033[$i""C"
  34.         fi
  35.         printf "$part_1"
  36.         printf "$part_2"
  37.         i=`expr $i - 2`
  38.         sleep $sleep_sec
  39. done
  40. echo ""
复制代码

[ 本帖最后由 jyw 于 2008-11-22 13:57 编辑 ]

评分

参与人数 1可用积分 +3 收起 理由
prolj + 3

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2008-11-22 14:07 |只看该作者
不错,支持
可惜发炮发得慢了

论坛徽章:
0
3 [报告]
发表于 2008-11-22 14:46 |只看该作者
有点意思。

论坛徽章:
0
4 [报告]
发表于 2008-11-22 18:26 |只看该作者
相当漂亮~~~~

论坛徽章:
0
5 [报告]
发表于 2008-11-22 19:40 |只看该作者
原帖由 windows-2008 于 2008-11-22 14:07 发表
不错,支持
可惜发炮发得慢了


的确是,我看了下 linux 的 sleep 命令,应该是支持小数秒的,不过在传统 Unix(比如 solaris )上的 sleep 不支持。。为了兼容就没那么用,其实可以改改专用于 linux,效果能好些

[ 本帖最后由 jyw 于 2008-11-22 19:47 编辑 ]

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52
6 [报告]
发表于 2008-11-22 19:56 |只看该作者


[ 本帖最后由 shdnzwy 于 2008-11-22 20:00 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-11-24 08:48 |只看该作者

论坛徽章:
0
8 [报告]
发表于 2008-11-24 09:10 |只看该作者
wawawa

2.jpg (12.63 KB, 下载次数: 46)

dd

dd

论坛徽章:
0
9 [报告]
发表于 2008-11-24 10:12 |只看该作者
有点意思,支持一个。

论坛徽章:
0
10 [报告]
发表于 2008-11-24 10:55 |只看该作者
不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP