• ncurses库的介绍与安装


    介绍

    ncurses(new curses)是一套编程库,它提供了一系列的函数以便使用者调用它们去生成基于文本的用户界面。
    ncurses名字中的n意味着“new”,因为它是curses的自由软件版本。由于AT&T“臭名昭著”的版权政策,人们不得不在后来用ncurses去代替它。
    ncurses是GNU计划的一部分,但它却是少数几个不使用GNU GPL或LGPL授权的GNU软件之一。

    其实我们对ncurses本身并不陌生,以下几款大名鼎鼎的软件都用到过ncurses:

    • vim
    • emacs
    • lynx
    • screen

    为了制作自己构想了一段时间的Roguelike的游戏,同时作为对《The C Programming Language》的实践,我开始接触ncurses并在此作笔记。


    安装

    Linux

    以Debian为例(人生中第一个发行版)

    1
    
    $ sudo apt-get install libncurses5-dev
    

    在非Debian发行版中的安装方法以后会来补充

    安装完毕后,我们写下如下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    //test.c
    
    #include <string.h>
    #include <ncurses.h>
    
    int main(int argc,char* argv[]){
    	initscr();
    	raw();
    	noecho();
    	curs_set(0);
    
    	char* c = "Hello, World!";
    
    	mvprintw(LINES/2,(COLS-strlen(c))/2,c);
    	refresh();
    
    	getch();
    	endwin();
    
    	return 0;
    }
    

    然后使用gcc编译后执行看看效果,不要忘了加-lncurses哦。

    1
    2
    
    $ gcc test.c -o test -lncurses
    $ ./test
    

    不出意外的话结果如下:
    testtest

    Windows

    ncurses貌似没有提供Windows平台的支持,不过作为代替,我们可以使用PDCurses。虽然最近一次的stable版本已经是08年的事情了,但使用起来暂时没有发现问题,可以对照着网上的ncurses的资料进行学习。

    如果不想自己编译,可以直接下载pdc34dllw.zip。
    否则,下载PDCurses-3.4.tar.gz。以下只介绍下载了pdc34dllw.zip的情况。

    将pdc34dllw.zip解压后,不出意外将得到下面这些文件:
    pdc34dllw.zippdc34dllw.zip
    以MinGW为例,

    • 将所有.h文件放入MinGW的include目录中
    • 将pdcurses.lib文件放入MinGW的lib目录中
    • 将pdcurses.dll文件放到你的目标文件的同目录下(推荐)或者X:WindowsSysWOW64目录中(不推荐)

    配置完毕后,我们写下如下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    //test.c
    
    #include <string.h>
    #include <curses.h>
    
    int main(int argc,char* argv[]){
    	initscr();
    	raw();
    	noecho();
    	curs_set(0);
    
    	char* c = "Hello, World!";
    
    	mvprintw(LINES/2,(COLS-strlen(c))/2,c);
    	refresh();
    
    	getch();
    	endwin();
    
    	return 0;
    }
    

    然后使用gcc编译,不要忘了加-lpdcurses哦。

    1
    
    gcc test.c -o test.exe -lpdcurses
    

    不出意外的话运行结果如下:
    test.exetest.exe

  • 相关阅读:
    25个完美的Opencart模板,让顾客无法抗拒!
    来自极客标签10款最新设计素材-系列十
    Creating Contextual Menus创建上下文菜单
    java解惑之常常忘记的事
    java 泛型实例详解(普通泛型、 通配符、 泛型接口)
    Java 泛型、通配符? 解惑
    Java中public,private,protected,和默认的区别
    windows 环境下dos 命令符下进D盘(非c盘系统盘)根目录
    I/O流之--转换流:InputStreamReader 和InputStreamWriter
    java 代码执行cmd 返回值异常 (关于JAVA Project.waitfor()返回值是1)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13312540.html
Copyright © 2020-2023  润新知