/* 打印菜单文字 */
/* 参数1:文字行号,将该行文字背景色设为白色,文字颜色设为黑色 */
/* 参数2:为了实现文字居中,指定文字之前空出的宽度 */
void prt_txt(unsigned line_num, unsigned width)
{
/* 默认每行颜色:黑底白字 */
/* 第一行 */
unsigned bg1 = 40, fg1 = 37;
/* 第二行 */
unsigned bg2 = 40, fg2 = 37;
/* 第三行 */
unsigned bg3 = 40, fg3 = 37;
/* 根据参数调整指定的行颜色为白底绿字 */
switch (line_num)
{
case 1:
bg1 = 47;
fg1 = 32;
break;
case 2:
bg2 = 47;
fg2 = 32;
break;
default:
bg3 = 47;
fg3 = 32;
break;
}
/* 空行 */
putchar('\n');
/* 在文字之前打印指定宽度的黑色颜色条,实现文字居中 */
prt_color_bar(40, width);
/* 根据上面最终各行的颜色打印文字 */
printf("\033[%u;%um%s\033[0m\n\n", bg1, fg1, " 双人游戏 ");
prt_color_bar(40, width);
printf("\033[%u;%um%s\033[0m\n\n", bg2, fg2, " 单人游戏 ");
prt_color_bar(40, width);
printf("\033[%u;%um%s\033[0m\n\n", bg3, fg3, " 退出游戏 ");
putchar('\n');
}
int main(void)
{
/* 颜色条宽度,即占据多少个英文字符宽度 */
/* 一个汉字占两个英文字符宽度 */
/* 根据你的终端自行修改数值 */
unsigned width = 36;
/* 要实现文字居中,在文字之前也打印一定宽度的黑色色条 */
/* 8表示4个汉字占据的英文字符宽度 */
unsigned w = (width - 10) / 2;
/* 当前行数 */
unsigned current = 1;
/* 用户输入 */
char ch = 0;
/* 以无缓冲方式读入用户输入的字符,即按下的键 */
do
{
/* 打印新菜单之前,清屏 */
clrscr();
/* 打印开头颜色条 */
prt_color_bar(43, width);
putchar('\n');
prt_color_bar(47, width);
putchar('\n');
/* 如果用户输入2或4,将行数减1 */
/* 如果用户输入6或8,将行数加1 */
/* 由于只有三行文字,所以行数下限为1,上限为3 */
switch (ch)
{
default: break;
case '2':
case '4':
if (current > 1)
current--;
break;
case '6':
case '8':
if (current < 3)
current++;
break;
}
/* 打印菜单文字 */
prt_txt(current, w);
/* 打印结尾颜色条 */
prt_color_bar(47, width);
putchar('\n');
prt_color_bar(43, width);
}while(ch = getch());
/* 使用do-while循环,让程序在运行时就自动打印一次菜单 */
return 0;
}
三个函数,如果不是三个,那就是被管理员删了。
全部复制到一个文件里,main函数放在另外两个函数后面。
我想知道为什么管理会散
给你磕3个头,谢谢,回去好好研究
追答可能是那些看不懂代码的管理,发现回答里面数字多了就删。
运行了吗
追问话说你在这回答,是想让我采纳你吗?😃😃😁
追答看错了,答完发现你把那个问题问了三次
追问呵呵
可以运行
谢谢
你给的看不懂!😭😭😭
追答哪里不懂
追问你用拼音不行啊
非用英语当函数名
还有主函数放前面,
你能给我推荐书吗
或者网站
资源也行
你是怎么学成这样的阿!!!
我想得到一个正方形的墙怎么是这样?
你学到变长数组了?