您好,登錄后才能下訂單哦!
這篇“Linux ncurses怎么用”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Linux ncurses怎么用”文章吧。
ncurses(new curses)是一套編程庫,它提供了一系列的函數(shù)以便使用者調(diào)用它們?nèi)ド苫谖谋镜挠脩艚缑妗?ncurses名字中的n意味著“new”,因?yàn)樗?strong>curses的自由軟件版本。由于AT&T“臭名昭著”的版權(quán)政策,人們不得不在后來用ncurses去代替它。
需要在ubuntu系統(tǒng)上安裝庫文件,支持ncurses:
apt-get install libncurses5-dev
initscr()函數(shù):
initscr()用于初始化ncurses數(shù)據(jù)結(jié)構(gòu)并讀取正確的terminfo文件。內(nèi)存將被分配。 如果發(fā)生錯誤,initscr將返回ERR,否則將返回指針。 此外,屏幕將被刪除并初始化。
getyx() 函數(shù):
getyx() 函數(shù)可以用來取得當(dāng)前光標(biāo)的位置。并把它存儲在傳遞給它的兩個變量中。
mvprintw()函數(shù):
在指定的坐標(biāo)輸出
refresh()函數(shù):
更新終端屏幕
endwin()函數(shù):
endwin()將清除ncurses中所有已分配的資源,并將tty模式恢復(fù)為調(diào)用initscr()之前的狀態(tài) 。 必須在ncurses庫中的任何其他函數(shù)之前調(diào)用它,并且必須在程序退出之前調(diào)用endwin()。 當(dāng)您想要輸出到多個終端時,可以使用 newterm(...)而不是initscr()。
下面的代碼可以實(shí)現(xiàn)一個模擬的“球”在屏幕上來回反彈。 代碼參考: [https://www.viget.com/articles/game-programming-in-c-with-the-ncurses-library/]
源程序:
#include #include #define DELAY 30000int main(int argc, char *argv[]) { int x = 0; int y = 0; int max_x = 0,max_y = 0; int next_x = 0; int direction = 1; initscr(); /* 初始化屏幕 */ noecho(); /* 屏幕上不返回任何按鍵 */ curs_set(FALSE); /* 不顯示光標(biāo) */ /* getmaxyx(stdscr, max_y, max_x);/* 獲取屏幕尺寸 */ mvprintw(5, 5, "Hello, world!"); refresh(); /* 更新顯示器 */ sleep(1);while(1) { getmaxyx(stdscr, max_y, max_x);/* 獲取屏幕尺寸 */ clear(); /* 清屏 */ mvprintw(y, x, "O"); refresh(); usleep(DELAY); next_x = x + direction; if(next_x >= max_x || next_x else { x = x + direction; } } endwin(); /* 恢復(fù)終端 */ }
Makefile:
# Makefilecc=gcc LDFLAGS=-lncurses SRCS := $(wildcard *.c) TARGET := $(SRCS:%.c=%) $(TARGET):$(SRCS) $(cc) $(LDFLAGS) $(SRCS) -o $(TARGET) clean: rm $(TARGET)
以上就是關(guān)于“Linux ncurses怎么用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。