gpt4 book ai didi

C++ : Using background colors with clrscr()

转载 作者:行者123 更新时间:2023-11-27 22:58:24 27 4
gpt4 key购买 nike

我目前正在制作一个简单的游戏。初始屏幕是欢迎屏幕,颜色如下:

system("color f3")//background:white , text:aqua

然后当我从我的 main() 函数中调用以下内容时

void display()
{

Sleep(2000);
clrscr();
system("color f3");
cout<<"Levels:\n\n";
int d;
cout<<"1.Easy\n";
cout<<"2.Medium\n";
cout<<"3.Hard\n";
cout<<"4.Insane!\n";
cout<<"Choose your difficulty:";
cin>>d;
}

在我的 display() 中没有语句 system("color f3"); 背景是黑色的,文本以白色突出显示,文本颜色是浅绿色.

enter image description here

我想知道为什么会出现上述情况。

问题:

使用语句 system("color f3");clrscr() 被调用时,屏幕变黑几毫秒然后变白,水色。

那么如何防止屏幕变黑那几毫秒呢?

感谢您的帮助:)

最佳答案

当您调用 system() 时,您在另一个进程中启动命令处理器,这会更改屏幕设置。

当您稍后调用 clrscr() 时,您的库清除会使用它在启动时存储的自己的颜色来清除屏幕。这就是您遇到问题的原因。

您可以直接使用 windows console API ,例如函数 SetConsoleTextAttribute() :

#include <windows.h>
...
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
BACKGROUND_INTENSITY|FOREGROUND_BLUE);

注意:可以根据需要使用 | 组合颜色和强度。在你的情况下你可以简单地写 0xf3

顺便说一下,this SO question显示其他可能感兴趣的 native Windows 控制台 API 函数。

关于C++ : Using background colors with clrscr(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30242351/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com