我目前正在制作一个简单的游戏。初始屏幕是欢迎屏幕,颜色如下:
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");
背景是黑色的,文本以白色突出显示,文本颜色是浅绿色.
我想知道为什么会出现上述情况。
问题:
使用语句 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/