目录
游戏推荐
研究初步
SetConsoleTextAttribute函数
原型
参数
举个栗子
最后
题外话
一篇游戏笔记。。。
游戏推荐
最近,在玩(完)一个c++的控制台游戏。
啊,真的非常好玩。虽然是一个文字游戏,但有很多隐藏的情节,很多隐藏的结局,在一次次结局的解锁中,你就会不知不觉地上瘾。事不宜迟,先展示一下吧。
基本页面:
一进来就可以看见这个,这是建议先看看提示 。
这是游戏刚开始时的页面,放在这里,用于展示游戏的绚丽,并且铺个垫……
这是其中的一个结局的展示,给你们期待期待。
好了,在文末评论区发送666,将给出下载链接(绝对免费)
研究初步
不过,我们今天要讨论的,不是娱乐,而是一个很小却又很有趣的c++小知识。
在游戏里,我发现,它的字体能够变换,于是,我看起了代码。
在代码中,我看见了一个这样的语句
system("color f4");
我赶紧查了一下,发现:system是一个C/C++的函数。windows操作系统下system() 函数详解主要是在C语言中的应用,system函数需加头文件<stdlib.h>后方可调用。在Windows中,可以发出一个DOS命令。
而且 systemtem("color AB"); 其中color后面的A是背景色代号,B是前景色代号。颜色属性由两个十六进制数字指定,AB都可以为以下任何值:
0 = 黑色 8 = 灰色(“亮黑色”)
1 = 蓝色 9 = 亮蓝色
2 = 绿色 A = 亮绿色
3 = 湖蓝色 B = 亮湖蓝色
4 = 红色 C = 亮红色
5 = 紫色 D = 亮紫色
6 = 黄色 E = 亮黄色
7 = 白色 F = 亮白色
我赶紧打开了我的test文件,写出了这样的代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
system("color f3");
printf("1\n");
system("color A5");
printf("2\n");
}
显示出来,是这样的:
(好绿呀!!) 很显然,它把前景、后景,都按最后一条颜色处理语句处理了。
看来是我看的不仔细,我又一次打开了代码。。。
这次,看到了这些代码:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_GREEN);
(后略)
……什么东西呀!!!
我,带着不懂就问的精神,打开CSDN,查了一下。
运行下面示例程序会发现,system函数加上color函数这个指令后可以对控制台文本属性进行改变,但是一改变就是整个控制台发生变化,只能把控制台改成一种颜色,无法达到我们想要指定一行的文本发生颜色改变(即改成多种颜色)的效果。因此,有下面SetConsoleTextAttribute函数,这个函数更加灵活。
啊!正中下怀!
为了庆祝这一点,我直接将下载的网址放出来!
网址就是,就是:c++生存小游戏(巨好玩)-C++文档类资源-CSDN文库
SetConsoleTextAttribute函数
原型
BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes);
参数
consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE);
GetStdHandle(nStdHandle)是返回标准的输入、输出或错误的设备的句柄,也就是获得输入、输出/错误的屏幕缓冲区的句柄。
其参数nStdHandle的值为下面几种类型的一种:
值 | 含义 |
STD_INPUT_HANDLE | 标准输入的句柄 |
STD_OUTPUT_HANDLE | 标准输出的句柄 |
STD_ERROR_HANDLE | 标准错误的句柄 |
wAttributes是用来设置颜色的参数:
wAttributes | 颜色 | 对应的值 |
FOREGROUND_BLUE | 字体颜色:蓝 | 1 |
FOREGROUND_GREEN | 字体颜色:绿 | 2 |
FOREGROUND_RED | 字体颜色:红 | 4 |
FOREGROUND_INTENSITY | 前景色高亮显示 | 8 |
BACKGROUND_BLUE | 背景颜色:蓝 | 16 |
BACKGROUND_GREEN | 背景颜色:绿 | 32 |
BACKGROUND_RED | 背景颜色:红 | 64 |
BACKGROUND_INTENSITY | 背景色高亮显示 | 128 |
也就是说SetConsoleTextAttribute函数是靠一个字节的低四位来控制前景色,高四位来控制背景色。
举个栗子
#include<Windows.h>
#include<bits/stdc++.h>
using namespace std;
int main() {
cout << "Hello ——this is the prime color" << endl;
cout << "先来看一哈青色的字儿:";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE);//设置青色
cout << endl << "Hello World!" << endl;
string q;
cout << "来尝试随便输入一下吧(给你一个蓝底白字):";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE | FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); //设置蓝底白字
cin >> q;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);//没有给其他颜色,只给了文本增强,只有亮度稍微改变一下
cout <<endl<< "再随便输入一下吧" << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);//设置白色
cin >> q;
return 0;
}
慢慢玩吧,这东西真的非常有趣。而且,用在游戏中也非常炫酷。
最后
啊哈,聪明的人应该在我主页找到链接了,认真的人也在文章中找到链接,其他人呢,看准了:
在文末评论区发送666,将给出下载链接(绝对免费)
题外话
对了,还有一件事,就是:
想知道你的文章在CSDN中质量如何吗?
你想知道你的CSDN文章到底写得怎么样吗?
你想要获得一个你的系统的CSDN文章评分吗?
CSDN质量分数帮你解决这个问题,网址如下:
https://www.csdn.net/qc
界面在如下,如果你打开的和我一样,说明你的操作完全没问题:
然后再将你想要测试的文章的网址粘贴到搜索框中,按下搜索:
(此处以本人的文章DFS(深度优先搜索)详解(概念讲解,图片辅助,例题解释)为例)
快去看看你的文章质量如何吧!