局部:

整体:

C++的Hello World代码如下:

#include <stdio.h>int main() {printf("Hello world!\n");return 0;
}

在C++语言中,可以使用ANSI转义码来输出彩色字符串。下面是一个输出彩色Hello world字符串的示例代码:

#include <stdio.h>int main()
{printf("\033[1;31m"); // 设置颜色为红色printf("Hello ");printf("\033[1;32m"); // 设置颜色为绿色printf("world!\n");printf("\033[0m"); // 恢复默认颜色return 0;
}

在上面的代码中,\033代表ANSI转义码的起始符号,[1;31m代表设置颜色为红色的代码,[1;32m代表设置颜色为绿色的代码,[0m代表恢复默认颜色的代码。在输出彩色字符串时,需要先设置颜色代码,然后输出字符串,最后恢复默认颜色。


在云课中试试看吧:

彩色甜甜圈呢?

#include <stdio.h>
#include <math.h>#define PI 3.14159265int main()
{int r = 10, x, y;int i, j;float angle = 0.0;char colors[7][8] = {"\033[31m", "\033[33m", "\033[32m", "\033[36m", "\033[34m", "\033[35m", "\033[37m"};for (i = -r; i <= r; i++){for (j = -r; j <= r; j++){angle = atan2(j, i) * 180.0 / PI;x = (int)(sqrt(i * i + j * j) + 0.5);y = (int)(angle / 10 + 0.5) % 7;if (x == r){printf("%s", colors[y]);printf("O ");printf("\033[0m");}else{printf("  ");}}printf("\n");}return 0;
}

在这个代码中,我们使用了ANSI转义码来实现彩色输出。其中,colors数组保存了七种不同的颜色代码,分别对应不同的角度范围。在循环中,我们使用了数学函数来计算每个点的距离和角度,并根据距离和角度选择不同的颜色输出。最终的效果是一个彩色的甜甜圈。


蓝桥ROS机器人之C++系列奇妙甜甜圈

#include <stdio.h>
#include <math.h>
#include <cstring>
#include <unistd.h>int main() {float A = 0, B = 0;float i, j;int k;float z[1760];char b[1760];printf("\x1b[2J");for (;;) {memset(b, 32, 1760);memset(z, 0, 7040);for (j = 0; j < 6.28; j += 0.07) {for (i = 0; i < 6.28; i += 0.02) {float c = sin(i);float d = cos(j);float e = sin(A);float f = sin(j);float g = cos(A);float h = d + 2;float D = 1 / (c * h * e + f * g + 5);float l = cos(i);float m = cos(B);float n = sin(B);float t = c * h * g - f * e;int x = 40 + 30 * D * (l * h * m - t * n);int y = 12 + 15 * D * (l * h * n + t * m);int o = x + 80 * y;int N = 8 * ((f * e - c * d * g) * m - c * d * e - f * g - l * d * n);if (22 > y && y > 0 && x > 0 && 80 > x && D > z[o]) {z[o] = D;b[o] = ".,-~:;=!*#$@"[N > 0 ? N : 0];}}}printf("\x1b[H");for (k = 0; k < 1761; k++) {putchar(k % 80 ? b[k] : 10);A += 0.00004;B += 0.00002;}usleep(30000);}return 0;
}

char colors[7][8] = {"\033[31m", "\033[33m", "\033[32m", "\033[36m", "\033[34m", "\033[35m", "\033[37m"};
printf("%s", colors[y]);
#include <stdio.h>
#include <math.h>
#include <cstring>
#include <unistd.h>
char colors[7][8] = {"\033[31m", "\033[33m", "\033[32m", "\033[36m", "\033[34m", "\033[35m", "\033[37m"};int main() {float A = 0, B = 0;float i, j;int k;float z[1760];char b[1760];printf("\x1b[2J");for (;;) {memset(b, 32, 1760);memset(z, 0, 7040);for (j = 0; j < 6.28; j += 0.07) {for (i = 0; i < 6.28; i += 0.02) {float c = sin(i);float d = cos(j);float e = sin(A);float f = sin(j);float g = cos(A);float h = d + 2;float D = 1 / (c * h * e + f * g + 5);float l = cos(i);float m = cos(B);float n = sin(B);float t = c * h * g - f * e;int x = 40 + 30 * D * (l * h * m - t * n);int y = 12 + 15 * D * (l * h * n + t * m);int o = x + 80 * y;int N = 8 * ((f * e - c * d * g) * m - c * d * e - f * g - l * d * n);if (22 > y && y > 0 && x > 0 && 80 > x && D > z[o]) {z[o] = D;printf("%s", colors[N/2]);b[o] = ".,-~:;=!*#$@"[N > 0 ? N : 0];}}}printf("\x1b[H");for (k = 0; k < 1761; k++) {putchar(k % 80 ? b[k] : 10);A += 0.00004;B += 0.00002;}usleep(100000);}return 0;
}


#include <stdio.h>
#include <math.h>
#include <cstring>
#include <unistd.h>
char colors[7][8] = {"\033[31m", "\033[33m", "\033[32m", "\033[36m", "\033[34m", "\033[35m", "\033[37m"};int main() {float A = 0, B = 0;float i, j;int k;float z[1760];char b[1760];printf("\x1b[2J");for (;;) {memset(b, 32, 1760);memset(z, 0, 7040);for (j = 0; j < 6.28; j += 0.07) {for (i = 0; i < 6.28; i += 0.02) {float c = sin(i);float d = cos(j);float e = sin(A);float f = sin(j);float g = cos(A);float h = d + 2;float D = 1 / (c * h * e + f * g + 5);float l = cos(i);float m = cos(B);float n = sin(B);float t = c * h * g - f * e;int x = 40 + 30 * D * (l * h * m - t * n);int y = 12 + 15 * D * (l * h * n + t * m);int o = x + 80 * y;int N = 8 * ((f * e - c * d * g) * m - c * d * e - f * g - l * d * n);if (22 > y && y > 0 && x > 0 && 80 > x && D > z[o]) {z[o] = D;b[o] = ".,-~:;=!*#$@"[N > 0 ? N : 0];}}}printf("\x1b[H");for (k = 0; k < 1761; k++) {printf("%s", colors[k%7]);putchar(k % 80 ? b[k] : 10);A += 0.00004;B += 0.00002;}usleep(100000);}return 0;
}

\033[0m 关闭所有属性
\033[1m 高亮
\033[2m 亮度减半
\033[3m 斜体
\033[4m 下划线
\033[5m 闪烁
\033[6m 快闪
\033[7m 反显
\033[8m 消隐
\033[9m 中间一道横线
10-19 关于字体的
21-29 基本与1-9正好相反
30-37 设置前景色
40-47 设置背景色
30:黑
31:红
32:绿
33:黄
34:蓝
35:紫
36:深
37:白
38 打开下划线,设置默认前景色
39 关闭下划线,设置默认前景色
40 黑色背景
41 红色背景
42 绿色背景
43 棕色背景
44 蓝色背景
45 品红背景
46 孔雀蓝背景
47 白色背景
48 不知道什么东西
49 设置默认背景色
50-89 没用
90-109 又是设置前景背景的,比之前的颜色浅
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n行
\033[nD 光标左移n行
\033[y;xH设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标


  • 安装ncurses库:ncurses是一个用于控制终端屏幕的库,可以用来实现动态彩色甜甜圈的显示。在Linux系统中,可以使用以下命令安装ncurses库:
sudo apt-get install libncurses5-dev libncursesw5-dev
  • 创建C程序:使用任何文本编辑器创建一个新的C程序,并将其保存为一个.c文件。在程序中,需要包含ncurses.h头文件,以便使用ncurses库中的函数和常量。例如:
#include <ncurses.h>int main() {// 在此处编写程序return 0;
}
  • 初始化屏幕:在程序的开始处,需要调用initscr()函数来初始化终端屏幕。这个函数会打开终端屏幕,并启用ncurses库的各种特性。例如:
int main() {initscr();// 在此处编写程序endwin(); // 关闭终端屏幕return 0;
}
  • 设置颜色:使用start_color()函数来启用颜色模式,并使用init_pair()函数来创建颜色对。例如:
int main() {initscr();start_color();// 创建颜色对init_pair(1, COLOR_RED, COLOR_BLACK);init_pair(2, COLOR_GREEN, COLOR_BLACK);init_pair(3, COLOR_YELLOW, COLOR_BLACK);init_pair(4, COLOR_BLUE, COLOR_BLACK);init_pair(5, COLOR_MAGENTA, COLOR_BLACK);init_pair(6, COLOR_CYAN, COLOR_BLACK);// 在此处编写程序endwin();return 0;
}
  • 绘制甜甜圈:使用mvprintw()函数来在终端屏幕上输出字符,并使用attron()函数来设置字符的颜色。例如:
int main() {initscr();start_color();// 创建颜色对init_pair(1, COLOR_RED, COLOR_BLACK);init_pair(2, COLOR_GREEN, COLOR_BLACK);init_pair(3, COLOR_YELLOW, COLOR_BLACK);init_pair(4, COLOR_BLUE, COLOR_BLACK);init_pair(5, COLOR_MAGENTA, COLOR_BLACK);init_pair(6, COLOR_CYAN, COLOR_BLACK);// 绘制甜甜圈attron(COLOR_PAIR(1));mvprintw(10, 30, "    ######     ");mvprintw(11, 30, "  ##      ##   ");mvprintw(12, 30, " ##        ##  ");mvprintw(13, 30, "##          ## ");mvprintw(14, 30, "##          ## ");mvprintw(15, 30, "##          ## ");mvprintw(16, 30, "##          ## ");mvprintw(17, 30, "##          ## ");mvprintw(18, 30, " ##        ##  ");mvprintw(19, 30, "  ##      ##   ");mvprintw(20, 30, "    ######     ");// 在此处编写程序endwin();return 0;
}
  • 添加动态效果:使用clear()函数来清空终端屏幕,并使用usleep()函数来添加延时效果。例如:
int main() {initscr();start_color();// 创建颜色对init_pair(1, COLOR_RED, COLOR_BLACK);init_pair(2, COLOR_GREEN, COLOR_BLACK);init_pair(3, COLOR_YELLOW, COLOR_BLACK);init_pair(4, COLOR_BLUE, COLOR_BLACK);init_pair(5, COLOR_MAGENTA, COLOR_BLACK);init_pair(6, COLOR_CYAN, COLOR_BLACK);// 绘制甜甜圈while (true) {clear();attron(COLOR_PAIR(1));mvprintw(10, 30, "    ######     ");mvprintw(11, 30, "  ##      ##   ");mvprintw(12, 30, " ##        ##  ");mvprintw(13, 30, "##          ## ");mvprintw(14, 30, "##          ## ");mvprintw(15, 30, "##          ## ");mvprintw(16, 30, "##          ## ");mvprintw(17, 30, "##          ## ");mvprintw(18, 30, " ##        ##  ");mvprintw(19, 30, "  ##      ##   ");mvprintw(20, 30, "    ######     ");refresh();usleep(100000);}endwin();return 0;
}
  • 编译和运行程序:使用gcc编译器将C程序编译为可执行文件,并使用./命令执行程序。例如:
gcc -o myprogram myprogram.c -lncurses
./myprogram

以上就是在Linux系统中使用C编程完成动态彩色甜甜圈显示的具体步骤。

g++ donuts.cpp -o donuts -lncurses

彩色的Hello World到彩色的Donuts甜甜圈-蓝桥ROS云课-C++案例相关推荐

  1. 微信朋友圈+html+字体颜色,微信新功能 酷炫的彩色微信名字 朋友圈彩色昵称设置方法...

    原标题:微信新功能 酷炫的彩色微信名字 朋友圈彩色昵称设置方法 这几天有几位微民们问小编,说看到朋友的微信昵称变成了彩色字体,好奇这怎么回事,觉得非常好玩,那怎样才可以设置彩色字体呢? 希望小编能教大 ...

  2. 32位真彩色与24位真彩色区别

    真彩色是指图像中的每个像素值都分成R.G.B三个基色分量,每个基色分量直接决定其基色的强度,这样产生的色彩称为真彩色.真彩色图像是一种用三个或更多字节描述像素的计算机图像存储方式. 真彩色-表示方法 ...

  3. 32位全彩色与24位全彩色有啥区别

    真彩色是指图像中的每个像素值都分成R.G.B三个基色分量,每个基色分量直接决定其基色的强度,这样产生的色彩称为真彩色.真彩色图像是一种用三个或更多字节描述像素的计算机图像存储方式.        计算 ...

  4. java彩色的世界_JAVA真彩色转256色的实现

    色彩转换算法 实现真彩色到256色的转换,关键就是如何从24位真彩色的颜色中选出256种颜色,使图像失真较小.主要的算法有: (1)取颜色高位算法,例如:分别取R高3位,G高2位,B高3位组成8字节获 ...

  5. matlab彩色转灰度图代码,彩色图转灰度图 matlab 实现代码

    (一):彩色图像转灰度图 1.设计任务 1) 读入彩色和灰度图像并显示: 2) 对彩色图像转化为灰度图像并显示: 3) 比较两种方法的效果. 2.设计目的 1) 掌握彩色图转灰度图的基本原理与方法: ...

  6. 打印机彩色打印设置(将彩色打印为黑色)

    这天不知道谁手欠把打印机设置成了将彩色打印为黑色,害得我彩色打印的纸张都是黑麻麻的一片.真是艹蛋! 要不是发现的及时,特么的我得打废多少纸张啊. 打印机彩色打印设置:如图中所示将彩色打印为黑色的前边选 ...

  7. 32位全彩色和24位全彩色有啥区别

    32位真彩其实是不准确的说法,严格的说,只有24位真彩色,颜色数为2的24次方也就是1677万色左右,由于这已经是人眼能分辨的颜色极限,所以叫做真彩色.32位色是和24位真彩色颜色数相同,只不过增加了 ...

  8. python绘制彩色蟒蛇代码_python画彩色蟒蛇

    小白怎样用python画彩色蟒蛇 相信很多刚学python的小伙伴们知道画蟒蛇这个python中的神例! 但是你们知道怎样画出一条可爱的彩色小蟒蛇吗? 下面我将教你们如何用最简单的代码写出属于你的小蟒 ...

  9. pycharm控制台打印彩色字体、python打印彩色字体

    一.前言 构建命令行程序很酷:命令行可以按照我们的设定完成相应的工作,相比 GUI 界面程序,无需花费大量时间设计 GUI 界面.但要使命令行程序更吸引人,仅使用普通的打印功能是无法实现的. 一个很好 ...

最新文章

  1. 工艺路线和工序有差别吗_智能制造、数字化车间、数字化企业需要结构化工艺吗?...
  2. python旅游推荐系统_如何用Python搭建一个简单的推荐系统?
  3. OpenCV+python调用本地摄像头并录制视频
  4. Asp.net MVC2.0系列文章-编辑和删除新闻操作
  5. python中输入17=x会引起错误_python新手常犯的17个错误
  6. 金昌搜索引擎优化网络推广_网络推广优化企业服务
  7. 学生管理系统c#语言代码,基于C#语言的学生管理系统的设计(ASP.NET2.0)
  8. Appfuse实践(一)——配置安装 转自http://www.donews.net/skyhero/archive/2004/12/17/205662.aspx...
  9. 增长量计算n+1原则_何俊-资料分析中的增长量计算
  10. CSS 3之网页背景颜色
  11. 数据库的四个文本类型的差异
  12. 计算机网络技术自主招生考试题,清华等17所高校2017年自主招生笔试真题
  13. Null check operator used on a null value
  14. UE4 WebBrowser插件清除浏览器缓存
  15. C语言ALG什么文件,alg.exe进程是什么
  16. Memery of habit
  17. ios开发的p12和provision
  18. 【微信开发|PHP】设置关注自动回复,关键词自动回复。
  19. 蓝桥杯Python组的规矩
  20. cs224u Overview of the Stanford Sentiment Treebank

热门文章

  1. php设置延迟代码执行,PHP 延迟执行
  2. VR、AR、MR、XR
  3. ifstream用法
  4. Python安装过程中提示:No Python 3.8 installation was detected;0x80070643严重错误 - 解决方法
  5. UpdatePanel的简单用法(非嵌套)
  6. Jmeter接口测试-文件上传/文件下载
  7. Linux入门学习(四)—— 什么链接文件?软链接文件和硬链接文件有什么区别以及特点?
  8. fiddler修改网页标题
  9. 程序员的笑话之内涵笑话
  10. 中专计算机学生个人千字总结范文,学生个人总结中专范文6篇