免费注册 查看新帖 |

Chinaunix

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

[金融] 大家能贡献一个cursor的例子吗 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-09 13:15 |只看该作者 |倒序浏览
想用cursor做个界面,另外想问一下cursor是否能使用printf在界面里面输出字符

论坛徽章:
0
2 [报告]
发表于 2007-11-16 13:17 |只看该作者
能往界面里输出字符,但是不是用printf 而是用 sprintf
例子随便搜一下就有

论坛徽章:
0
3 [报告]
发表于 2007-11-23 19:22 |只看该作者
一个练习打字的,就练习八个键。输出用printw()


  1. #include <signal.h>
  2. #include <curses.h>
  3. #include <math.h>

  4. const char CHAR[] = "asdfjkl;                                        ";
  5. struct for_shot {
  6.         char chars[50];
  7.         int sum;
  8.         int pos_l[50], pos_c[50];       /* postion of its arrow */
  9.         int flag[50];   /* 1  been created
  10.                            2  be aimed
  11.                            3  has been shot */
  12. }targets;

  13. int now_pos = 0;
  14. int err_click = 0;

  15. void generate()
  16. {
  17.         int i;

  18.         now_pos ++;
  19.         if (now_pos > 65) return ;

  20.         i = rand() % 25;
  21.         if (i>7) return;
  22.         move(0, now_pos);
  23.         addch(CHAR[i]);
  24.         targets.chars[targets.sum] = CHAR[i];
  25.         targets.flag[targets.sum]  = 1;
  26.         targets.pos_l[targets.sum] = LINES - 1;
  27.         targets.pos_c[targets.sum] = now_pos;
  28.         targets.sum ++;

  29.         refresh();
  30.         return;
  31. }

  32. void refreshscr()
  33. {
  34.         int i;

  35.         for (i =0; i<targets.sum; i++) {
  36.                 if (targets.flag[i] != 2) continue;
  37.                 move(targets.pos_l[i], targets.pos_c[i]);
  38.                 addch(' ');

  39.                 if (targets.pos_l[i] <2 ) {
  40.                         targets.flag[i] = 3;
  41.                         beep();
  42.                         move( 0, targets.pos_c[i]);
  43.                         addstr(" ");
  44.                         move( LINES - 1, targets.pos_c[i]);
  45.                         addch(targets.chars[i]);

  46.                         refresh();
  47.                         break;
  48.                 }
  49.                 targets.pos_l[i] -= 1;
  50.                 move(targets.pos_l[i], targets.pos_c[i]);
  51.                 addch('^');
  52.                 refresh();
  53.         }
  54. }

  55. void show_score()
  56. {
  57.         int i;
  58.         static int score = 0;
  59.         for (i=0; i<targets.sum; i++)
  60.                 if (targets.flag[i] == 3) score++;
  61.         move(LINES/2, COLS/2 - 5);
  62.         printw("SCORES : %d", 100*score/targets.sum);
  63.         move(LINES/2+2, COLS/2 - 10);
  64.         printw("Click correct : %d", 100 * score / (score + err_click));
  65.         refresh();
  66.         beep();
  67.         nocbreak();
  68.         getch();
  69. }

  70. int main()
  71. {
  72.         int i, count = 0;
  73.         int tmp = 0;

  74.         initscr();
  75.         clear();
  76.         curs_set(0);
  77.         noecho();
  78.         halfdelay(1);
  79.         refresh();

  80.         srand((int) time(NULL));
  81.         targets.sum = 0;

  82.         while(now_pos<85) {
  83.                 count = ++count % 5;
  84.                 if (!count) generate();
  85.                 refreshscr();

  86.                 if (now_pos<71) tmp = getch();
  87.                 for (i = 0; i<targets.sum; i++) {
  88.                         if (targets.flag[i] != 1 ) continue;
  89.                         if ( (int)targets.chars[i] != tmp) continue;
  90.                         targets.flag[i] = 2;
  91.                         break;
  92.                 }
  93.                 if ( tmp != -1 && i == targets.sum )
  94.                         err_click++ ;
  95.         }

  96.         show_score();

  97.         endwin();
  98.         return 0;
  99. }

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP