哈喽大家好,我是iecne,本期为大家带来的是CPP/C++游戏设计教程的第③期—— 字体的颜色 ,包教包会,快来看看吧!

大家都知道,初学C++或者各种语言,面对枯燥无比的题目,脑子要爆的感觉是十分难受的,不妨会想设计一款游戏玩玩,但是由于能力不足、不知道如何设计而放弃。而这一专栏将会教会你们如何设计一款简单的Cpp游戏点赞收藏关注评论支持以下博主,蟹蟹


目录

一.改变的方法

二.运用位置

1.球类游戏

2.扫雷游戏

3.2D生存游戏

三.SetConsoleTextAttribute的用法

1.介绍

2.头文件

3.十进制

四.总结

系列文章目录


一.改变的方法

比较方便的方法有以下两种:

1.    system

2.    SetConsoleTextAttribute

SetConsoleTextAttribute比较方便,我建议大家用第二种SetConsoleTextAttribute,所以今天我们来讲讲SetConsoleTextAttribute


二.运用位置

SetConsoleTextAttribute是Windows系统中一个可以设置控制台窗口字体颜色和背景色的计算机函数,该函数被广泛应用于软件开发中

1.球类游戏

void dudang1()
{ FILE *fp=fopen("./cundang1.txt","r");for(int i=1;i<=SSSM;i++){fscanf(fp,"%d",&SSSY[i]); fscanf(fp,"\n");}fscanf(fp,"%d %d %d %d %d %d \n",&jinbi,&xuanxiuka,&XR,&xingyunzhi,&zongcishu,&yingcishu);fclose(fp); }
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);
}
long long numberaio(string n)
{for (int i = 0; i < 100000; i++) {if(n[i]=='\0'){return i;}}
}

以上代码由作者原创小游戏Supreme basketball 2.2.4中出场开头的代码


2.扫雷游戏

 else{system("cls");//清屏函数,懂得都懂,不懂的看C++游戏设计教程(2)for (int i = 1; i <= Y; i++){for (int j = 1; j <= X; j++){if (map[i][j][2] == 1){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 255); //通过颜色的不同虚拟地图cout << "你"; //输出一个中文大小的位置变换符号成为地图,直接表示出来}else if (map[i][j][2] == 0 && map[i][j][0] == 0){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 136); //通过颜色的不同虚拟地图cout << "空"; //输出一个中文大小的位置变换符号成为地图,直接表示出来//这里选择中文而不表示是因为十进制中的SetConsoleTextAttribute函数字体与单个背景相同}else if (map[i][j][0] > 0){if (map[i][j][2] == 0){if (map[i][j][0] == 9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 119); //字体和背景一样,不显示数字else SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 112); //通过颜色的不同虚拟地图}if (map[i][j][2] == 1){if (map[i][j][0] == 9) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 155); //字体和背景一样,不显示数字else SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 240); //通过颜色的不同虚拟地图}cout << " " << map[i][j][0]; //输出一个中文大小的位置变换符号成为地图,直接表示出来//这里选择中文而不表示是因为十进制中的SetConsoleTextAttribute函数字体与单个背景相同}else{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0); //调制为初始颜色,否则颜色会溢出,导致满屏 }}cout << endl;}SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0); //调制为初始颜色,否则颜色会溢出,导致满屏 这条代码为二层保护}Console();//马上转到控制函数,造成死循环,让我们可以随时控制

以上代码由作者原创小游戏扫雷_iecne 1.0中的设置地图的代码


3.2D生存游戏

for (int i = 1; i <= 30; i++){cout << endl;for (int j = 1; j <= 65; j++){if (dt[dtcs][i][j] == 1 )                                 {SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 136);cout << "石";}else if (dt[dtcs][i][j] == 0){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),102);cout << "土";}else if (dt[dtcs][i][j] == 100){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 112);cout << "你";}else if (dt[dtcs][i][j] == 11){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 170);cout << "树";}}}pdjp();

以上代码由作者原创小游戏survival 1.0中的画地图的代码

以上代码不难,但是新手难理解,看着头晕,我们下次再讲


三.SetConsoleTextAttribute的用法

1.介绍

很多时候,我们希望编写出能够拥有各种颜色的程序,能够让人眼前一亮,虽然system(color)函数可以设置颜色,但是system(color)函数设置的颜色只能有一种,这显然不是我们想要的结果,我们需要的是一个名为SetConsoleTextAttribute的函数。
SetConsoleTextAttribute()函数是一个API设置字体颜色和背景色的函数。参数表中使用两个属性(属性之间用,隔开),不同于system(color),SetConsoleTextAttribute()可以改变界面多种颜色,而system()只能修改为一种!


2.头文件

<windows.h>


3.十进制

博主出这一期就是让大家会用,而其他乱七八糟的理论我就不多说,想要知道的BAIDU搜搜就好了,保证让你头晕

头晕地址,直接点进去

然后呢,SetConsoleTextAttribute函数分为十六进制和十进制的用法,我们呢常用十进制,相比大家不想在写数字的时候出现ABCDEF,所以这里博主善良的推荐十进制

只需要按格式来:

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),那个数字);

#include<iostream>
#include<windows.h>
using namespace std;
int main()
{int i,ss;cout << "     ";for (i = 1; i <= 255; i++){if (i <= 9) ss = 2 + 1;else if (i >= 10 && i <= 99) ss = 2;else ss = 1;for (int j = 1; j < ss; j++){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), i);cout << " ";}SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), i);cout << i;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0);cout << "  ";if (i == 15) cout << endl;else{if ((i+1) % 16 == 0 && i!=0){cout << endl;}}}
}

话说代码有点烦人哈,结果如下

如我们要黑底黑字

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0);

我们要白底黑字

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),240);

按照这个程序的结果来就行


四.总结

本节课主要是讲解了SetConsoleTextAttribute函数,至此SetConsoleTextAttribute的思想博主已经彻彻底底分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下

包教包会,帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!


系列文章目录

本期收录于博主的专栏——C++游戏设计教程,感兴趣的朋友们可以订阅,查看其它专栏。

C++游戏设计教程_iecne的博客-CSDN博客

C++游戏设计教程(1) 随机数

C++游戏设计教程(2) Sleep睡眠与常用system

C++游戏设计教程(3) 字体的颜色


感谢每一个观看本篇文章的朋友,更多精彩敬请期待:iecne的博客_CSDN博客-C++保姆级入门教程领域博主

文章存在借鉴,如有侵权请联系修改删除!

【C++游戏设计】 通过函数设置字体的颜色相关推荐

  1. QT打印窗口、退出、设置字体及颜色、设置时间、控件实现系统函数、添加资源文件(菜单图片)、工具栏添加图片

    打印窗口 #include <QPrintDialog> 退出 QObject::connect(ui->exitAction, SIGNAL(triggerd()), this, ...

  2. MATLAB 一幅图两个纵坐标(附带功能:设置字体、颜色、字号、坐标轴显示范围、显示间隔、加百分号)

    plot一幅图,有两个变量,共用一个自变量,各有各的纵轴标度,想画在一幅图里 网上查的有两种思路: 1.plotyy 2.yyaxis 个人推荐第2种:yyaxis(亲测在2016b版本中可以用,据说 ...

  3. odoo14 文本字段动态设置字体样式颜色 decoration

    简介:我们在实际开发中有时候需要突出显示字段文本,让使用者可以更直观的查看数据,就需要对字段文本进行字体及颜色的设置.odoo自带了一套简单的设置颜色的方式,可以设置列表中某个字段的颜色字体. (一) ...

  4. Python print函数设置字体效果和背景色

    实现过程: 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033 ...

  5. WebStorm设置字体和颜色

    新建Scheme + 修改字体 ctrl+alt+s打开Settings界面,Editor > Colors&Fonts > Font. Default scheme是亮色调,但我 ...

  6. Latex系列3---页面设置+字体字号+颜色符号

    上一节中阐述的是简易的文本,本节在此基础上进行完善加工. 页面设置 页边距 在平时写文章的时候,其实对于页边距的要求不高,但是论文这种就比较的严格. 调整页边距需要使用\usepackage{geom ...

  7. POI导出Excel:设置字体、颜色、行高自适应、列宽自适应、锁住单元格、合并单元格...

    点击关注公众号,利用碎片时间学习 1. 前言 poi框架可以支持我们在java代码中, 将数据导出成excel , 在实际开发中, 往往还需要设置excel字体,颜色,行高,列宽等属性, 有时候还需要 ...

  8. QFont如何设置字体大小/颜色等?

    1.设置字体的大小: QFont ft;ft.setPointSize(25);//字体大小m_titleLabel->setFont(ft);//其他控件里的字体大小设置也一样 2.设置字体颜 ...

  9. Python+tkinter+Treeview模拟表格并设置字体和颜色

    清华大学出版社-第10届高等学校计算机程序设计课程论坛 中国大学MOOC"Python程序设计基础"免费学习地址 2020年秋季学期Python教材推荐与选用参考 推荐图书: &l ...

最新文章

  1. 怎么关闭wordpress评论
  2. [翻译] ASP.NET内幕 - IIS处理模型
  3. matlab中filter卷积补零,matlab中的卷积——filter,conv之间的区别
  4. 推荐!手把手教你使用Git
  5. 数据结构---B-(B)、B+的总结
  6. 云小课 | 详解华为云独享型负载均衡如何计费
  7. C语言求一个数的平方根倒数的近似值-一战封神的代码
  8. 内存恶鬼drawRect - 谈画图功能的内存优化
  9. python中score_在Python中“得分必须返回一个数字”scikit-learn中的cross_val_score错误...
  10. 解决filezilla中无法显示中文的文件名
  11. 火狐html5播放器,可能用户已经发现你在火狐内建HTML5音视频播放器
  12. 操作系统概念(Operating System Concepts Ninth Edition恐龙书)阅读
  13. [Python3网络爬虫开发实战] Appium 爬取微信朋友圈
  14. pano2VR只更换全景图片
  15. UltraEdit 26 总是偶尔提示运行的是试用模式
  16. python软件长什么样子图片_使用Python把多个图片拼接成为长图
  17. ubuntu 16.04软件源
  18. PgMP学习感受分享
  19. 有些人的恨是没有原因的,他们平庸、没有天分、碌碌无为,于是你的优秀、你的天赋、你的善良和幸福都是原罪。
  20. java开发软件难吗_JAVA开发太难了呀!30K程序员到底要会哪些技术?

热门文章

  1. Mbed Studio编辑L-Tek FF-LPC546XX
  2. edis集群之二——具体使用
  3. STM32和定时器:编码器模式
  4. iOS_定时器:NSTimer、GCDTimer、DisplayLink
  5. adb无法连接夜神模拟器处理以及文件传输
  6. sonar java_如何正确配置属性“sonar.java.binaries”?
  7. 免费相对安全的远程控制软件
  8. 可替代TeamView的免费远程控制软件ToDesk
  9. 最少需要多少翻译(分枝限界法)
  10. 滴滴插件化方案 VirtualApk 源码解析