免费注册 查看新帖 |

Chinaunix

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

[C] 用c写了个能发炮弹的ascii坦克车 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-20 21:14 |只看该作者 |倒序浏览
昨天yangxi推荐unbunt下的一个ascii动画, 有兴趣的可以apt-get install sl看下效果。

今天中午利用休息的时间写了类似的程序, 绝对比那个震撼, 有兴趣的朋友可以拿gcc编译下看看效果。

全屏观看效果更好~

BTW: 程序员们赶快行动起来吧, Program Just For Fun!



  1. /*
  2. * Program Just For Fun
  3. *
  4. * by wzt       [url]http://hi.baidu.com/wzt85[/url]
  5. */

  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <string.h>

  9. #define LENTH           7
  10. #define WIDTH           155

  11. #define SLEEP_TIME      30000
  12. #define ENTER_NUM       20

  13. char fun_ascii[LENTH][WIDTH] = {
  14. "                                                                                                                                                  |       ",
  15. "                                                                                                                                            _\\--__|_     ",
  16. "                                                                                                                           II=======OOOOO[/ *02 ___|      ",
  17. "                                                                                                                                      ____\\______|/-----.",
  18. "                                                                                                                                    /____________________|",
  19. "                                                                                                                                   \\@@@@@@@@@@@@@@@@@@@/ ",
  20. "                                                                                                                                     ~~~~~~~~~~~~~~~~~~~ "
  21. };

  22. int g_shoot_pos;
  23. int g_shoot_pos_static;

  24. void display_ascii(void);
  25. void print_enter(void);

  26. void move_ascii(void)
  27. {
  28.         int i, j;

  29.         for (i = 0; i < LENTH; i++) {
  30.                 for (j = 0; j < WIDTH; j++) {
  31.                         if (fun_ascii[i][j] != ' ') {
  32.                                 fun_ascii[i][j - 1] = fun_ascii[i][j];
  33.                                 fun_ascii[i][j] = ' ';
  34.                         }
  35.                 }
  36.         }
  37. }

  38. void shoot_init(void)
  39. {
  40.         int i, j;

  41.         for (j = 0; j < WIDTH; j++) {
  42.                 if (fun_ascii[2][j] != ' ')
  43.                         break;
  44.         }
  45.         --j;

  46.         g_shoot_pos_static = g_shoot_pos = j;
  47. }

  48. void shoot_begin(void)
  49. {
  50.         fun_ascii[2][g_shoot_pos] = 'O';

  51.         system("clear");
  52.         print_enter();
  53.         display_ascii();
  54.         fun_ascii[2][g_shoot_pos] = ' ';
  55. }

  56. void shoot_ascii(void)
  57. {
  58.         int i;

  59.         i = WIDTH / 2 - 1;

  60.         while (i > 0 && g_shoot_pos > 0) {
  61.                 shoot_begin();
  62.                 g_shoot_pos--;
  63.                 usleep(SLEEP_TIME);
  64.                 i--;
  65.         }
  66. }

  67. void do_shoot_ascii(void)
  68. {
  69.         int i = 3;

  70.         shoot_init();

  71.         while (i > 0) {
  72.                 shoot_ascii();
  73.                 g_shoot_pos = g_shoot_pos_static;
  74.                 i--;
  75.         }
  76. }

  77. void display_ascii(void)
  78. {
  79.         int i, j;

  80.         for (i = 0; i < LENTH; i++) {
  81.                 for (j = 0; j < WIDTH; j++)
  82.                         printf("%c", fun_ascii[i][j]);
  83.                 printf("\n");
  84.         }
  85. }

  86. void print_enter(void)
  87. {
  88.         int i;

  89.         for (i = 0; i < ENTER_NUM; i++)
  90.                 printf("\n");
  91. }

  92. int main(void)
  93. {
  94.         int i = WIDTH;

  95.         while (i > 0) {
  96.                 if (i == (WIDTH / 2)) {
  97.                         do_shoot_ascii();
  98.                         i--;
  99.                         continue;
  100.                 }
  101.                 system("clear");
  102.                 print_enter();
  103.                 move_ascii();
  104.                 display_ascii();
  105.                 i--;
  106.                 usleep(SLEEP_TIME);
  107.         }

  108.         return 0;
  109. }
复制代码

评分

参与人数 1可用积分 +10 收起 理由
cugb_cat + 10 原创内容

查看全部评分

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2008-11-20 21:53 |只看该作者
还没来及试一下,先赞一个

论坛徽章:
0
3 [报告]
发表于 2008-11-20 22:13 |只看该作者
牛啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

论坛徽章:
0
4 [报告]
发表于 2008-11-20 22:15 |只看该作者
不错...

论坛徽章:
0
5 [报告]
发表于 2008-11-20 22:20 |只看该作者
sl试了很不错。。感叹屏幕不是宽屏坦克没动感觉屏幕一直在闪,让坦克动起来效果很好

[[i] 本帖最后由 crscholes 于 2008-11-20 22:28 编辑 [/i]]

论坛徽章:
0
6 [报告]
发表于 2008-11-21 08:01 |只看该作者
原帖由 crscholes 于 2008-11-20 22:20 发表
sl试了很不错。。感叹屏幕不是宽屏坦克没动感觉屏幕一直在闪,让坦克动起来效果很好


如果是在windows下用ssh客户端连到开发机上, 用putty的效果好, securecrt不好。
如果是linux本机的话, 屏幕就不会是闪。

这个程序是利用闲暇时间来做的, 权当娱乐, O(∩_∩)O

论坛徽章:
0
7 [报告]
发表于 2008-11-21 11:14 |只看该作者
原帖由 W.Z.T 于 2008-11-21 08:01 发表


如果是在windows下用ssh客户端连到开发机上, 用putty的效果好, securecrt不好。
如果是linux本机的话, 屏幕就不会是闪。

这个程序是利用闲暇时间来做的, 权当娱乐, O(∩_∩)O


putty效果不错啊,挺有趣的

论坛徽章:
0
8 [报告]
发表于 2008-11-21 11:22 |只看该作者
哈哈哈哈哈

论坛徽章:
0
9 [报告]
发表于 2008-11-21 11:36 |只看该作者
哈哈,挺好玩的。有想法!

论坛徽章:
0
10 [报告]
发表于 2008-11-21 11:46 |只看该作者
真炯啊,我笑倒了,这小坦克一震一震,太cute了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP