您好,登錄后才能下訂單哦!
這篇“Linux ncurses怎么用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Linux ncurses怎么用”文章吧。
ncurses(new curses)是一套編程庫,它提供了一系列的函數以便使用者調用它們去生成基于文本的用戶界面。 ncurses名字中的n意味著“new”,因為它是curses的自由軟件版本。由于AT&T“臭名昭著”的版權政策,人們不得不在后來用ncurses去代替它。
需要在ubuntu系統上安裝庫文件,支持ncurses:
apt-get install libncurses5-dev
initscr()函數:
initscr()用于初始化ncurses數據結構并讀取正確的terminfo文件。內存將被分配。 如果發生錯誤,initscr將返回ERR,否則將返回指針。 此外,屏幕將被刪除并初始化。
getyx() 函數:
getyx() 函數可以用來取得當前光標的位置。并把它存儲在傳遞給它的兩個變量中。
mvprintw()函數:
在指定的坐標輸出
refresh()函數:
更新終端屏幕
endwin()函數:
endwin()將清除ncurses中所有已分配的資源,并將tty模式恢復為調用initscr()之前的狀態 。 必須在ncurses庫中的任何其他函數之前調用它,并且必須在程序退出之前調用endwin()。 當您想要輸出到多個終端時,可以使用 newterm(...)而不是initscr()。
下面的代碼可以實現一個模擬的“球”在屏幕上來回反彈。 代碼參考: [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); /* 不顯示光標 */ /* 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(); /* 恢復終端 */ }
Makefile:
# Makefilecc=gcc LDFLAGS=-lncurses SRCS := $(wildcard *.c) TARGET := $(SRCS:%.c=%) $(TARGET):$(SRCS) $(cc) $(LDFLAGS) $(SRCS) -o $(TARGET) clean: rm $(TARGET)
以上就是關于“Linux ncurses怎么用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。