LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1451|回复: 20

终端程序是怎样实现不翻屏的?

[复制链接]
发表于 2004-1-4 21:15:30 | 显示全部楼层 |阅读模式
显示出一行内容,如果想再显示出一行内容,或想改变第一行内容的值,怎样实现的不翻屏啊。
用C。
 楼主| 发表于 2004-1-4 21:22:37 | 显示全部楼层

  1.      1 float s=1944,x[5],y[5],z[5],r[5],j,h,a,b,d,e;
  2.       2 int i=33,c,l,f=1;
  3.       3 int g(){
  4.       4 //    return f=(f*6478+1)%65346;
  5.       5         return f=(f*6478)%65346;
  6.       6 }
  7.       7
  8.       8 m(){
  9.       9     x[i]=g()-l;
  10.      10     y[i]=(g()-l)/4;
  11.      11     r[i]=g()>>4;
  12.      12 }
  13.      13
  14.      14 main()
  15.      15 {
  16.      16     char t[1948]=" `MYmtw%FFlj%Jqig~%`jqig~Etsqnsj3stb",*p=t+3,*k="3tjlq9TX";
  17.      17     l=s*20;
  18.      18     while(i<s)
  19.      19         p[i++]='\n'+5;
  20.      20     for(i=0;i<5;i++)
  21.      21         z[i]=(i?z[i-1]:0)+l/3+!m();
  22.      22
  23.      23     while(1)
  24.      24     {
  25.      25         for(c=33;c<s;c++)
  26.      26         {
  27.      27                 c+=!((c+1)%81);
  28.      28                 j=c/s-.5;
  29.      29                 h=c%81/40.0-1;
  30.      30                 p[c]=37;
  31.      31                 for(i=4;i+1;i--)
  32.      32                         if((b=
  33.      33                                 (a=h*x[i]+j*y[i]+z[i])
  34.      34                                 *a-(d=1+j*j+h*h)
  35.      35                                 *(-r[i]*r[i]+x[i]*x[i]+y[i]*y[i]+z[i]*z[i])
  36.      36                                 )>0)
  37.      37                         {
  38.      38                                 for(e=b;e*e>b*1.01||e*e<b*.99;e-=.5*(e*e-b)/e);
  39.      39                                         p[c]=k[(int)(8*e/d/r[i])];
  40.      40                         }
  41.      41         }
  42.      42         for(i=4;i+1;z[i]-=s/2,i--)
  43.      43                 z[i]=z[i]<0?l*2+!m():z[i];
  44.      44         while(i<s)
  45.      45                 putchar(t[i++]-5);
  46.      46     }
  47.      47 }
复制代码
发表于 2004-1-4 21:23:29 | 显示全部楼层
看不明白
 楼主| 发表于 2004-1-4 21:24:36 | 显示全部楼层
就是想实现上面的那样子,可惜看不懂代码。:( 写的。。。
发表于 2004-1-5 00:20:45 | 显示全部楼层
是设置行号吗?

:set number
可以做到!
发表于 2004-1-5 11:45:56 | 显示全部楼层
呵呵,设置行号。。。汗。。。
我猜 wide288是想编程刷新屏幕指定行吧
查查ncurses的资料,我自己没用过哦
发表于 2004-1-5 11:53:07 | 显示全部楼层
kao,这个例子太牛了
wide你哪里翻来的阿
发表于 2004-1-5 12:16:58 | 显示全部楼层
这个例子其实是翻屏的吧
 楼主| 发表于 2004-1-5 21:58:16 | 显示全部楼层
不像翻屏啊。如果我把终端最大化,这个例子是不会跟着最大化的,还是用那么大的空间,
这个例子本版以前发过的。
 楼主| 发表于 2004-1-5 22:07:21 | 显示全部楼层
curses 我看了,不想用像 debian 的设置窗口那样的,
只是想在终端上画一个小图如:

  1. *        *
  2. *      * *
  3.   *    *   *
  4.    *  *     *
  5.      *        *
复制代码

见到了吧,第一行出现了二个星号我想是先画出“\”
再画“/” 再画 “\”,这样就需要画到第五行再回到第一行画。
而我发现上面的例程,好像能实现这个样子,可是就是读不出。:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表