目录
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.比较
system | color | yanse | |
---|---|---|---|
背景色 | 16 | 0 | 16 |
前景色 | 16 | 9 | 16 |
一起修改 | 是 | 否 | 否 |
记忆难度 | 简单 | 困难 | 中等 |
使用难度 | 中等 | 简单 | 困难 |
推荐等级 | 不推荐 | 强烈推荐 | 普通推荐 |
(好像少记录了几种颜色,算了,不管了)
3.后文
(给个赞吧! da lao们!)