Ubuntu下Curses的学习

在上一篇的《Ubuntu中NetBeans下Curses的使用》http://blog.csdn.net/akof1314/archive/2010/10/18/5948505.aspx

Curses将终端屏幕看成是由字符单元组成的网格,每一个单元由(行、列)坐标对标示。坐标系的原点是屏幕的左上角,行坐标自上而下递增,列坐标自左向右递增。下面介绍其中的9个函数:

函数名作用
initscr()初始化curses库和tty
endwin()关闭curses并重置tty
refresh()使屏幕按照你的意图显示
move(r,c)移动光标到屏幕的(r,c)位置
addstr(s)在当前位置画字符串s
addch(c)在当前位置画字符c
clear()清屏
standout()启动standout模式(一般使屏幕反色)
standend()关闭standout模式

之后继续学习Curses库的使用,下面的代码把curses函数与循环,变量和其他函数组合在一起会产生更复杂的显示效果。

示例:

/*hello2.c 
 *2010年10日18号 在Ubuntu下的NetBeans IDE测试通过 
 *purpose   show how to use curses functions with a loop 
 * outline     initialize,draw stuff,wait up 
 */ 
#include <stdio.h> 
#include <curses.h> 
 
main() 

     int i; 
 
    initscr(); 
    clear(); 
     for(i= 0;i<LINES;i++){ 
        move(i,i+ 1); 
         if(i% 2== 1
            standout();      //启动standout模式,一般使屏幕反色 
        addstr( "Hello,world"); 
         if(i% 2== 1
            standend();      //关闭standout模式 
    } 
    refresh(); 
    getch(); 
    endwin(); 

 

效果图如下:

 

时钟编程,学习与系统函数sleep结合。

示例: 

/*hello3.c 
 *2010年10日18号 在Ubuntu下的NetBeans IDE测试通过 
 *purpose   using refresh and sleep for animated effects 
 * outline     initialize,draw stuff,wait up 
 */ 
#include <stdio.h> 
#include <curses.h> 
 
main() 

     int i; 
 
    initscr(); 
    clear(); 
     for (i= 0;i<LINES;i++){ 
        move(i,i+ 1); 
         if (i% 2== 1
            standout(); 
        addstr( "Hello,world"); 
         if (i% 2== 1
            standend(); 
        sleep( 1); 
        refresh(); 
    } 
    endwin(); 

 

效果图如下:

 现在可以开始变换出动画效果了,只需要把之前显示的字符串给“擦除”就创造出移动的假象。

示例:

/*hello4.c 
 *2010年10日18号 在Ubuntu下的NetBeans IDE测试通过 
 *purpose   show how to use erase,time,and draw for animation 
 */ 
#include <stdio.h> 
#include <curses.h> 
 
main() { 
     int i; 
 
    initscr(); 
    clear(); 
     for (i =  0; i < LINES; i++) { 
        move(i, i +  1); 
         if (i %  2 ==  1
            standout(); 
        addstr( "Hello,world"); 
         if (i %  2 ==  1
            standend(); 
        refresh(); 
        sleep( 1); 
        move(i, i +  1); 
        addstr( "                     "); 
    } 
    endwin(); 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值