国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

通過 ncurses 在 Linux 上寫一個猜謎游戲

系統 Linux
使用 ncurses 的靈活性和強大功能在 Linux 上創建一個猜數字游戲。

使用 ncurses 的靈活性和強大功能在 Linux 上創建一個猜數字游戲。

在我的 上一篇文章,我簡要介紹了使用 ncurses 庫通過 C 語言編寫文本模式交互式應用程序。使用 ncurses,我們可以控制文本在終端上的顯示位置和方式。如果你通過閱讀手冊頁探索 ncurses 庫函數,你會發現顯示文本有很多不同的方式,包括粗體文本、顏色、閃爍文本、窗口、邊框、圖形字符和其它功能,這些都可以使你的應用脫穎而出。

如果你想探索一個更高級的程序來演示其中一些有趣的功能,有一個簡單的“猜數字”游戲,我已更新為使用 ncurses 編寫的了。該程序在一個范圍內選擇一個隨機數,然后要求用戶進行重復猜測,直到他們猜到這個秘密數字。當用戶進行猜測時,程序會告知他們猜測的數字是太低還是太高。

請注意,程序限定可能的數字范圍是 0 到 7。將值保持在有限的個位數數字范圍內,可以更輕松的使用 getch() 函數從用戶讀取單個數字。我還使用了 getrandom 內核系統調用來生成隨機數,設定數字最大值為 7,以從 0 (二進制 0000)到 7 (二進制 0111)中選擇一個隨機數。

  1. #include <curses.h>;
  2. #include <string.h>;          /* for strlen */
  3. #include <sys/random.h>;      /* for getrandom */
  4.  
  5. int
  6. random0_7()
  7. {
  8.    int num;
  9.    getrandom(&num, sizeof(int), GRND_NONBLOCK);
  10.    return (num & 7); /* from 0000 to 0111 */
  11. }
  12.  
  13. int
  14. read_guess()
  15. {
  16.   int ch;
  17.  
  18.   do {
  19.     ch = getch();
  20.   } while ((ch < '0') || (ch > '7'));
  21.  
  22.   return (ch - '0'); /* turn into a number */
  23. }

通過使用 ncurses,我們可以增加一些有趣的視覺體驗。通過添加函數,我們可以在屏幕頂部顯示重要的文本信息,在屏幕底部顯示狀態消息行:

  1. void
  2. print_header(const char *text)
  3. {
  4.   move(0, 0);
  5.   clrtoeol();
  6.  
  7.   attron(A_BOLD);
  8.   mvaddstr(0, (COLS / 2) - (strlen(text) / 2), text);
  9.   attroff(A_BOLD);
  10.   refresh();
  11. }
  12.  
  13. void
  14. print_status(const char *text)
  15. {
  16.   move(LINES - 1, 0);
  17.   clrtoeol();
  18.  
  19.   attron(A_REVERSE);
  20.   mvaddstr(LINES - 1, 0, text);
  21.   attroff(A_REVERSE);
  22.   refresh();
  23. }

通過這些函數,我們就可以構建猜數字游戲的主要部分。首先,程序為 ncurses 設置終端,然后從 0 到 7 中選擇一個隨機數。顯示數字刻度后,程序啟動一個循環,詢問用戶的猜測。

當用戶進行猜測時,程序會在屏幕上提供反饋。如果猜測太低,程序會在屏幕上的數字下方打印一個左方括號。如果猜測太高,程序會在屏幕上的數字下方打印一個右方括號。這有助于用戶縮小他們的選擇范圍,直到他們猜出正確的數字。

  1. int
  2. main()
  3. {
  4.   int number, guess;
  5.  
  6.   initscr();
  7.   cbreak();
  8.   noecho();
  9.  
  10.   number = random0_7();
  11.   mvprintw(1, COLS - 1, "%d", number); /* debugging */
  12.  
  13.   print_header("Guess the number 0-7");
  14.  
  15.   mvaddstr(9, (COLS / 2) - 7, "0 1 2 3 4 5 6 7");
  16.  
  17.   print_status("Make a guess...");
  18.  
  19.   do {
  20.     guess = read_guess();
  21.  
  22.     move(10, (COLS / 2) - 7 + (guess * 2));
  23.  
  24.     if (guess < number) {
  25.       addch('[');
  26.       print_status("Too low");
  27.     }
  28.  
  29.     else if (guess > number) {
  30.       addch(']');
  31.       print_status("Too high");
  32.     }
  33.  
  34.     else {
  35.       addch('^');
  36.     }
  37.   } while (guess != number);
  38.  
  39.   print_header("That's right!");
  40.   print_status("Press any key to quit");
  41.   getch();
  42.  
  43.   endwin();
  44.  
  45.   return 0;
  46. }

復制這個程序,自己嘗試編譯它。不要忘記你需要告訴 GCC 編譯器鏈接到 ncurses 庫:

  1. $ gcc -o guess guess.c -lncurses

我留下了一個調試行,所以你可以看到屏幕右上角附近的秘密數字:

 

圖1:猜數字游戲。注意右上角的秘密數字。

開始使用 ncurses 

該程序使用了 ncurses 的許多其它函數,你可以從這些函數開始。例如,print_header 函數在屏幕頂部居中以粗體文本打印消息,print_status 函數在屏幕左下角以反向文本打印消息。使用它來幫助你開始使用 ncurses 編程。

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2021-06-26 16:24:21

Linux命令系統

2019-05-23 14:36:24

LinuxSOSReportxsos

2015-12-17 11:04:00

云開支云計算

2019-03-31 08:50:44

LinuxWine游戲

2012-01-04 13:55:23

Canvas

2015-06-29 11:30:07

JavaScript小烏龜推箱子

2021-04-14 15:25:39

Linux加密文件保險庫

2022-10-11 15:15:31

應用開發鴻蒙

2011-09-08 10:46:12

Widget

2015-06-02 04:13:23

Python乒乓球類游戲

2018-01-19 12:56:19

Linux進程

2022-07-01 15:33:53

LinuxBash

2021-09-06 09:10:31

Linuxncurses定位文本

2021-01-14 08:55:20

C語言編程

2021-01-03 16:30:34

Rust編程語言

2018-07-16 08:40:08

Linux段錯誤C++

2018-11-06 09:24:55

LinuxLutries命令

2021-11-01 12:13:53

Linux僵尸進程

2023-11-29 08:10:36

javascriptH5游戲

2022-08-10 18:14:49

國際象棋游戲位字段C語言
點贊
收藏

51CTO技術棧公眾號

国外av在线| 日韩精品视频网站| 成人在线中文| 亚洲男人av电影| 综合在线影院| 欧美国产在线视频| 韩国中文免费在线视频| 欧美日韩一区精品| 夜鲁夜鲁夜鲁视频在线播放| 久久亚洲一区二区三区四区五区高| av成人男女| 51国偷自产一区二区三区| 亚洲在线免费| 国产精品久久久久7777| 亚洲人一二三区| 日本中文字幕视频在线| 色偷偷9999www| 日韩黄色大片| 亚洲高清123| 中文字幕av免费专区久久| 欧美大陆一区二区| 国产精品91xxx| 天天色综合天天色| 色婷婷亚洲精品| 色综合天天色| 国产精品亚洲综合天堂夜夜| 丝袜美腿亚洲综合| 午夜免费精品视频| 欧美性色欧美a在线播放| 欧美aaa大片视频一二区| 国产精品自拍网| 国产精品中文有码| 97国产在线| 亚洲人成绝费网站色www| 性欧美xxxx免费岛国不卡电影| 久久国产主播精品| 久久久蜜桃精品| 潘金莲一级淫片aaaaa免费看| 久久久精品国产免大香伊| 日本1级在线| 久久影视免费观看| 国产九九精品| 毛片视频免费观看| 亚洲一级一级97网| 欧美视频官网| 波多野结衣xxxx| 日韩毛片中文字幕| 国产精品videosex极品| 免费男同深夜夜行网站| 91精品国产福利在线观看| 国产乱码精品一区二区亚洲| 国产91在线亚洲| 91久久精品网| 日韩精品欧美大片| 中文字幕人妻熟女人妻洋洋| 欧美亚洲国产bt| 国产欧美日韩在线观看视频| 1024精品视频| 国产丝袜精品视频| 亚洲精品免费观看| 噼里啪啦在线中文观看| 午夜精品美女自拍福到在线| 国产一区91精品张津瑜| 成年在线观看免费人视频| 日本一本a高清免费不卡| 真实原创一区二区影院| 91xxx视频| 欧美日韩日日骚| 国产视频中文字幕在线观看| 日韩av大片在线| 久久久久久久免费视频了| www视频在线观看| 免费一区二区三区| 一本色道a无线码一区v| 在线观看欧美理论a影院| 亚洲精品怡红院| 日日噜噜噜夜夜爽亚洲精品| 精品综合久久久久久8888| 日本欧美在线视频免费观看| 91精品视频一区| 亚洲综合自拍| 五月婷婷导航| 久久久综合免费视频| 99久久综合色| 日韩成人综合网| 国产 日韩 欧美在线| 一区二区三区国产在线观看| 狠狠色伊人亚洲综合成人| 污视频免费在线观看| 免费久久99精品国产自| 欧美精品丝袜久久久中文字幕| 亚洲天堂激情| 日产精品久久久久久久性色| 成人免费看吃奶视频网站| 丝袜美腿成人在线| 欧美日本韩国一区二区| 成人欧美一区二区三区在线| 午夜在线电影亚洲一区| 最新av在线播放| 欧美精品免费观看二区| 91精品在线免费| 丝袜美腿亚洲色图| 2021中文字幕在线| 欧美精品videosex性欧美| 久久久久久久电影| 超碰成人在线观看| 色总=综合色| 日韩欧美一二三区| 久久亚洲视频| 美女露胸视频在线观看| 人妻激情另类乱人伦人妻| 综合国产在线观看| 久久综合久久鬼色| 麻豆视频一区| 最新天堂资源在线| 国产高清精品一区二区| 欧美一区欧美二区| 国内精品伊人久久久久av影院 | 亚洲一区二区精品视频| 五月久久久综合一区二区小说| 看电影就来5566av视频在线播放| 含羞草久久爱69一区| 亚洲高清福利视频| 97久久精品人人做人人爽| 欧美调教在线| 国产一二三区在线视频| 日韩av大全| 久久99国产精品久久久久久久久| 亚洲午夜av在线| 日韩黄色免费电影| 日韩高清一区| 涩涩涩999| 日韩中文av在线| 亚洲欧美日韩国产手机在线| 欧美日韩亚洲一区| 男女视频在线| 不卡av免费在线| 91亚色免费| 亚洲人成电影网站色| 亚洲色欲色欲www在线观看| 欧美精品1区| av一区在线播放| 美女永久在线网站| 亚洲一区三区视频在线观看| 国内精品久久久久影院优| 欧美在线你懂得| 成人免费电影视频| 99久久久久国产精品| 中文字幕在线免费观看视频| 男人插女人欧美| 五月天亚洲综合| 欧美在线视频a| 亚洲成人中文字幕| 亚洲视频在线观看三级| 日韩在线a电影| 久久av中文| 亚洲欧美韩国| 一区二区三区不卡在线视频| 超碰10000| 99久久无色码| 日韩最新免费不卡| 欧美日韩激情在线| 亚洲国产精品黑人久久久| 日日骚欧美日韩| 欧美日韩一二三四| 韩国精品视频在线观看| 欧美日韩激情四射| 成人看片人aa| 日韩三级成人av网| 欧美四级电影网| 国产精品私人影院| 久久av老司机精品网站导航| 日韩一区二区在线免费| 日本精品久久| 欧美人与禽猛交乱配| 在线三级av| 韩国视频一区二区三区| 中文精品视频一区二区在线观看| 成人免费网站在线| 久久久久久亚洲精品中文字幕| 亚洲精品不卡在线| 国产一区二区伦理片| 亚洲高清影视| 超碰97久久国产精品牛牛| 裤袜国产欧美精品一区| 免费观看成人高潮| 亚洲女人天堂| 综合网插菊花| 国产成人黄色片| 久久国产精品免费观看| 久久久影院一区二区三区| 国产精品夜间视频香蕉| 久久久久久91| 中文欧美日本在线资源| 亚洲第一区在线| 欧美日韩国产天堂| 日韩欧美一区二区在线| 亚洲一区在线观看免费观看电影高清 | 少妇性l交大片| 免费看欧美黑人毛片|