c++游戏小技巧10:color 颜色

目录

1.前言

 2.正文

1.system 

2.color(自定义函数)

3.yanse(自定义函数)

 4.比较

3.后文

1.前言

(不知不觉,一天已经发了5篇了,凑个吉利的数,6)

日常水文章

仍然是一个文字游戏

为什么是仍然

c++游戏小技巧3:Sleep(停顿) 与 gotoxy(0,0) (无闪清屏)_L('ω')┘脏脏包└('ω')」的博客-CSDN博客

先看一下效果:

清一色的白色

不显眼

所以颜色的函数就出来了······

 2.正文

1.system 

上上上期我们提到了system

其中,有一种用法即是

system("color ??");

0=黑色   8=灰色
1=蓝色   9=淡蓝色
2=绿色   A=淡绿色
3=浅绿色 B=淡浅绿色
4=红色   C=淡红色
5=紫色   D=淡紫色
6=黄色   E=淡黄色
7=白色   F=亮白色

 给一个效果:

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
#define printf print
 
void print(string s,int ti)
{
	int l=s.size();
	for(int i=0;i<l;i++) cout<<s[i],Sleep(ti);
	return ;
}
 
int main()
{
	system("color F9");
	string s="	明亮的机房中开着一台神秘的电脑,旁边是一个题库,都存着一望无际的chen_zhe做的神仙毒瘤题,其间有一个十二三岁的少年,血管里流着网络流,\
靠着一棵平衡树,向蒟蒻的lhy930尽力地踩去,lhy930被爆踩了好久后却将身一扭,反从他的胯下跳进他家的内存池了。\n	这少年便是chen_zhe。我被他爆踩时,\
也不过十多岁,离现在将有几年了;那时我还没开始学OI,也很LJ,我正是一个蒟蒻。那一年,我家是一件大比赛的值年。这比赛,说是三十多年才能轮到一回,所以\
很毒瘤;正月里做神仙毒瘤题,题目很多,数据很讲究,做的人也很多,数据也很要防偷去。我家只有一个忙月,忙不过来,他便对父亲说,可以叫他的儿子chen_zhe来\
出题配数据的。\n	我的父亲允许了;我也很高兴,因为我早听到chen_zhe这名字,而且知道他和我仿佛年纪,是个神犇巨佬,会做和出神仙毒瘤题,所以我们叫他巨佬。\
他是能AK所有比赛的。\n	我于是日日盼望新年,新年到,chen_zhe也就到了。好容易到了年末,有一日,母亲告诉我,chen_zhe来了,我便飞跑的去看。他正在机房里,\
红色的圆脸,头戴一顶小绿帽,看上去明显就是一个光头。他见人很喜欢嘲讽,唯独嘲讽我嘲讽得最过分,没有旁人的时候,来嘲讽我,于是不到半日,我便被爆踩了。\n\
	我们那时候不知道谈些什么,只记得chen_zhe很高兴,说是上洛谷之后,做了没有其他人会做的毒瘤题。第二日,我便要他做题。他说:“这不能。须有神仙毒瘤题了\
才好。我们电脑上,有了题,我开出一块内存池来,用预处理所有的几亿个数据,打好表,看输入来了时,我立刻地将我预处理好的答案,只一输出,那正确答案0ms就输\
出来了。数据结构、字符串、图论、DP什么的都是LJ玩意儿……”\n	我于是又很盼望有题。\n\	chen_zhe又对我说:“现在这些题太水了,你夏天到我们这里来。\
我们日里去网上虐人,lhy930也有,kkk也有,tourist也有。晚上我和爹虐全场去,你也去。”\n	“要加文件输入输出吗?”“不用。我的程序可是非常大佬的,可以\
自动判断要不要文件输入输出。要管的是卡时间、卡空间、卡算法。洛谷上面,你看,月赛开始了,我要AK了。你便写好膜拜之语,在犇犇里发出去……”\n	\我那时并\
不知道这所谓月赛的是怎么一件东西——便是现在也没有知道——只是无端的觉得这肯定是神犇巨佬才能参加的比赛。\n	\“比赛很水么?”“有我呢。开始了,看见题\
了,我便AK了。这些题目很毒瘤,要用主席树,还要用模拟退火。但是对我来说都是不是一点的水……”\n	\我素不知道天下有这许多新鲜事:竟然有比A+B Problem毒\
瘤的题目,而且竟然有人能够AC,我先前单知道我连A+B Problem都过不了罢了。\n	“我们CF上,题目要来的时候,就有许多人喊着要AK,但最后都被我给Hack掉了……”\
\n	阿!chen_zhe的心里有无穷无尽的稀奇的算法,都是我往常的朋友所不知道的。他们不知道一些事,chen_zhe在AK虐场时,他们都和我一样还在颓A+B Problem。\n	\
可惜正月过去了,chen_zhe须回家里去,我急得大哭,他也躲到厨房里,哭着不肯出门,但终于被他父亲带走了。他后来还托他的父亲带给我一堆神仙毒瘤题和它们的\
AC代码,我也曾送他一两道红题,但从此没有再见面。";
	print(s,10);
    return 0;
}

so?

故事好看吗? 

正经一点

2.color(自定义函数)

void color(int a)
{
/*亮白*/              if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
/*蓝色*/              if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
/*绿色*/              if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
/*紫色*/              if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
/*红色*/              if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
/*黄色*/              if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
/*深蓝色*/            if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
/*土黄色or金黄色*/    if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);
/*灰色接近白*/        if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}

看到这个的第一反映是什么?

天哪,好长!!!

问题(它又双叒叕)来了:

(这么长)有什么用?(博主好狠的心呀)

对比一下:

举根香蕉:

#include<windows.h>
#include<bits/stdc++.h>
using namespace std;
#define pau system("pause")

void print(string s,int x)
{
	int Len=s.length();
	for(int i=0;i<Len;i++)
	{
		cout<<s[i];
		Sleep(x);
	}
	cout<<"\n";
}

int main()
{
	system("color FB");
	print("这个chen_zhe",30);
	pau;
	print("据说是太强了",30);
	pau;
	system("color FC");
	print("竟能AK IOI,暴打集训队!",30);
	pau;
	return 0;
}

#include<windows.h>
#include<bits/stdc++.h>
using namespace std;
#define pau system("pause")

void color(int a)
{
/*亮白*/              if(a==0) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
/*蓝色*/              if(a==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
/*绿色*/              if(a==2) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);
/*紫色*/              if(a==3) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
/*红色*/              if(a==4) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
/*黄色*/              if(a==5) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
/*深蓝色*/            if(a==6) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE);
/*土黄色or金黄色*/    if(a==7) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN);
/*灰色接近白*/        if(a==8) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}

void print(string s,int x)
{
	int Len=s.length();
	for(int i=0;i<Len;i++)
	{
		cout<<s[i];
		Sleep(x);
	}
	cout<<"\n";
}

int main()
{
	color(2);
	print("这个chen_zhe",30);
	pau;
	print("据说是太强了",30);
	pau;
	color(4);
	print("竟能AK IOI,暴打集训队!",30);
	pau;
	return 0;
}

区别看出来了吧······

3.yanse(自定义函数)

void yanse(int ForgC, int BackC)//SetColorAndBackground函数(颜色函数) 
{
	WORD wColor=((BackC & 0x0F)<<4)+(ForgC & 0x0F);
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
	return ; 
	//或者
	HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);  
    SetConsoleTextAttribute(handle,ForeColor+BackGroundColor*0x10); 
}

(WDF?位运算+16进制?)

这一种函数的特点是:

在color的基础上更新背景色。

这次抬个西瓜:

16种字体色

16种背景色

(记死个人!!!)

 4.比较

systemcoloryanse
背景色16016
前景色16916

一起修改

记忆难度简单困难中等
使用难度中等简单困难
推荐等级不推荐强烈推荐普通推荐

(好像少记录了几种颜色,算了,不管了)

3.后文

(给个赞吧! da  lao们!)

上一篇:c++游戏小技巧9:windows.h 句柄介绍+实例_L('ω')┘脏脏包└('ω')」的博客-CSDN博客

下一篇:c++游戏小技巧11:goto_L('ω')┘脏脏包└('ω')」的博客-CSDN博客

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值