应用 ncurses 的协调性和强劲作用在 Linux 上建立一个猜数字手机游戏。
在我的 上一篇文章,我简单介紹了应用 ncurses 库根据 C 语言表达撰写文本方式互动式运用程序。应用 ncurses,我们可以操纵文本在终端设备上的表明地方和方法。假如你根据阅读手册页探寻 ncurses 函数库,你就会发现表明文本有很多差异的方法,包含粗字体文本、色调、闪动文本、对话框、外框、图型标识符和其他作用,这种可以使你的运用出类拔萃。
假如你要探寻一个更高等级的程序来演试在其中一些有意思的作用,有一个简便的“猜数字”手机游戏,我已升级为应用 ncurses 撰写的了。该程序在一个区域内挑选一个随机数字,随后规定客户开展反复猜测,直到她们猜到这一密秘数字。当客户开展猜测时,程序会告之她们猜测的数字是太低或是太高。
小心,程序限制很有可能的数字范畴是 0 到 7。将值维持在不足的个位数字范畴内,可以更简单的应用 getch
函数公式从客户载入单独数字。我都运用了getrandom
核心系统进程来生成随机数,设置数字最高值为 7,以从 0 (二进制0000
)到 7 (二进制0111
)中选取一个随机数字。
#include
根据应用 ncurses,我们可以提升一些有意思的视觉效果感受。根据加上函数公式,我们可以在屏幕顶端表明关键的文本信息内容,在屏幕底端表明情况信息行:
void
print_header(const char *text)
{
move(0, 0);
clrtoeol;
attron(A_BOLD);
mvaddstr(0, (COLS / 2) - (strlen(text) / 2), text);
attroff(A_BOLD);
refresh;
}
void
print_status(const char *text)
{
move(LINES - 1, 0);
clrtoeol;
attron(A_REVERSE);
mvaddstr(LINES - 1, 0, text);
attroff(A_REVERSE);
refresh;
}
根据这种函数公式,大家就可以搭建猜数字手机游戏的关键一部分。最先,程序为 ncurses 设定终端设备,随后从 0 到 7 中选取一个随机数字。表明数字标尺后,程序运行一个循环系统,了解客户的猜测。
当用户开展猜测时,程序会在屏幕上给予意见反馈。假如猜测太低,程序会在屏幕上的数字下边打印出一个左方括号。假如猜测太高,程序会在屏幕上的数字下边打印出一个右方括号。这有利于客户变小她们的选取范畴,直到她们猜到恰当的数字。
int
main
{
int number, guess;
initscr;
cbreak;
noecho;
number = random0_7;
mvprintw(1, COLS - 1, \"%d\", number); /* debugging */
print_header(\"Guess the number 0-7\");
mvaddstr(9, (COLS / 2) - 7, \"0 1 2 3 4 5 6 7\");
print_status(\"Make a guess...\");
do {
guess = read_guess;
move(10, (COLS / 2) - 7 (guess * 2));
if (guess number) {
addch(\']\');
print_status(\"Too high\");
}
else {
addch(\'^\');
}
} while (guess != number);
print_header(\"That\'s right!\");
print_status(\"Press any key to quit\");
getch;
endwin;
return 0;
}
拷贝这一程序,自身试着编译程序它。别忘记你需要告知 GCC c语言编译器连接到 ncurses 库:
$ gcc -o guess guess.c -lncurses
我留有了一个调节行,因此你能够见到屏幕右上方周边的密秘数字:
图1:猜数字手机游戏。留意右上方的密秘数字。
逐渐应用 ncurses
该程序使用了 ncurses 的很多其他函数公式,你能从这种函数公式逐渐。例如,print_header
函数公式在屏幕顶端垂直居中以粗字体文本打印消息,print_status
函数公式在屏幕左下方以反方向文本打印消息。应用它来协助你进行应用 ncurses 程序编写。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。