目录
一、圣诞介绍
二、技术需要
三、效果展示
四、实现步骤
五、颜色的更改
六、源码
一、圣诞介绍
基督教纪念耶稣诞生的重要节日。亦称耶稣圣诞节、主降生节,天主教亦称耶稣圣诞瞻礼。耶稣诞生的日期,《圣经》并无记载。公元336年罗马教会开始在12月25日过此节。12月25日原是罗马帝国规定的太阳神诞辰。有人认为选择这天庆祝圣诞,是因为基督教徒认为耶稣就是正义、永恒的太阳。5世纪中叶以后,圣诞节作为重要节日,成了教会的传统,并在东西派教会中逐渐传开。因所用历法不同等原因,各教派会举行庆祝的具体日期和活动形式也有差别。圣诞节习俗传播到亚洲主要是在十九世纪中叶,日本、韩国等都受到了圣诞文化的影响。现在西方在圣诞节常互赠礼物,举行欢宴,并以圣诞老人、圣诞树等增添节日气氛,已成为普遍习俗。圣诞节也成为西方世界以及其他很多地区的公共假日。
二、技术需要
这次写的圣诞树只需要用C就可以实现,文件后缀为.C文件,我所使用的编译器是VS2019,当然,你用自己的编译器也没毛病。
三、效果展示
这是一颗彩色的圣诞树,如果你想变换颜色,后文会教你如何替换。
四、实现步骤
需要的头文件:
#define _CRT_SECURE_NO_WARNINGS 1 //为VS2019编译器需要
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#include<windows.h>
你可以写一些圣诞祝福的话或者更改打印圣诞树的符号或者更改颜色。
char hanzi[20];
printf("送给XXX\n");//祝福语
srand((unsigned int)time(NULL));
char ch[] = ".......**...";//打印圣诞树的符号
int n=99, j, i, m, x, y,love;
system("color 4");//改变数字4就可以换颜色,数字代表的颜色请看文末
这颗圣诞树一共有四层,所以用到了四个for循环实现每一层。颜色的更改请看文末。
第一层:
for (i = 0; i < n / 5; i += 2)
{
printf("*");
for (j = 0; j < (n / 2 - i); j++)
{
printf(" ");
}
for (j = 0; j <= 2 * i; j++)
{
int a = rand() % 11;
//对该层展示颜色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
printf("%c", ch[a]);
}
printf("\n");
}
第二层:
for (m = i; m < n / 2; m += 3)
{
printf("*");
for (j = 0; j < (n / 2 - m / 2); j++)
{
printf(" ");
}
for (j = 0; j <= m; j++)
{
int a = rand() % 11;
//对该层显示颜色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE);
printf("%c", ch[a]);
}
printf("\n");
}
第三层:
for (x = m; x < 5 * n / 4; x += 8)
{
printf("*");
for (j = 0; j < (n / 2 - 5 * x / 16); j++)
{
printf(" ");
}
for (j = 0; j <= 5 * x / 8; j++)
{
int a = rand() % 11;
//对该层显示颜色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
printf("%c", ch[a]);
}
printf("\n");
}
第四层(树的枝干):
for (y = 0; y < n / 5; y += 2)
{
printf("*");
for (j = 0; j < 2 * n / 5; j++)
{
printf(" ");
}
for (j = 0; j <= n / 5; j++)
{
int a = rand() % 11;
//对该层显示的颜色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_BLUE);
printf("%c", ch[a]);
}
printf("\n");
}
剩余代码:
for (j = 0; j < 2 * n / 5; j++)
{
printf(" ");
}
printf(" 圣 诞 快 乐 !\n");
for (love = 0; love < ((n / 2 - 5 * x / 16) + (5 * x / 8)); love++)
printf("*");
return 0;
五、颜色的更改
更改system("coior 4");该位置的颜色,数字可参考:
0 | 黑色 | 1 | 蓝色 |
2 | 绿色 | 3 | 浅绿色 |
4 | 红色 | 5 | 紫色 |
6 | 黄色 | 7 | 白色 |
8 | 灰色 | 9 | 淡紫色 |
A | 淡绿色 | B | 淡浅绿色 |
C | 淡红色 | D | 淡紫色 |
E | 淡黄色 | F | 亮白色 |
对于每一层的颜色修改可参考:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
颜色更改只需要该标红部分,下面表格是各个颜色的代表
FOREGROUND_INTENSITY | 表示设置前景色为高亮显示。 |
FOREGROUND_RED | 表示设置前景色为红色,即字体颜色为红色。 |
FOREGROUND_GREEN | 表示设置前景色为绿色,即字体颜色为绿色。 |
FOREGROUND_BLUE | 表示设置前景色为蓝色,即字体颜色为蓝色。 |
BACKGROUND_INTENSITY | 表示设置背景色为高亮显示。 |
BACKGROUND_RED | 表示设置背景色为红色。 |
BACKGROUND_GREEN | 表示设置背景色为绿色。 |
BACKGROUND_BLUE | 表示设置背景色为蓝色。 |
六、源码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#include<windows.h>
int main()
{
char hanzi[20];
printf("送给XXX\n");
srand((unsigned int)time(NULL));
char ch[] = ".......&&...";
int n=99, j, i, m, x, y,love;
system("color 4");
for (i = 0; i < n / 5; i += 2)
{
printf("*");
for (j = 0; j < (n / 2 - i); j++)
{
printf(" ");
}
for (j = 0; j <= 2 * i; j++)
{
int a = rand() % 11;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
printf("%c", ch[a]);
}
printf("\n");
}
for (m = i; m < n / 2; m += 3)
{
printf("*");
for (j = 0; j < (n / 2 - m / 2); j++)
{
printf(" ");
}
for (j = 0; j <= m; j++)
{
int a = rand() % 11;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE);
printf("%c", ch[a]);
}
printf("\n");
}
for (x = m; x < 5 * n / 4; x += 8)
{
printf("*");
for (j = 0; j < (n / 2 - 5 * x / 16); j++)
{
printf(" ");
}
for (j = 0; j <= 5 * x / 8; j++)
{
int a = rand() % 11;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED);
printf("%c", ch[a]);
}
printf("\n");
}
for (y = 0; y < n / 5; y += 2)
{
printf("*");
for (j = 0; j < 2 * n / 5; j++)
{
printf(" ");
}
for (j = 0; j <= n / 5; j++)
{
int a = rand() % 11;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_BLUE);
printf("%c", ch[a]);
}
printf("\n");
}
for (j = 0; j < 2 * n / 5; j++)
{
printf(" ");
}
printf(" 圣 诞 快 乐 !\n");
for (love = 0; love < ((n / 2 - 5 * x / 16) + (5 * x / 8)); love++)
printf("*");
return 0;
}