新人无聊写来玩的,码代码习惯不是很好。
有兴趣的可以试一试
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
//打印语句色彩函数
void print_c(int color){
printf("\033[%dm",color);
}
void gotoxy(int x, int y) {
COORD pos = {x,y};
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);// 获取标准输出设备句柄
SetConsoleCursorPosition(hOut, pos);//两个参数分别是指定哪个窗体,具体位置
}
int main()
{
//定义语句
int i,j,k;
int x;//彩带一
int z;//彩带二
int g=2;//变色
int r=3;//个数
int t;//雪花位置(随机数
int p=10;//随机数最大值
//扩大缓冲区
//setvbuf(stdin,calloc(1<<20,sizeof(char)),_IOFBF,1<<20);
//setvbuf(stdout,calloc(1<<20,sizeof(char)),_IOFBF,1<<20);
while(1)
{
Sleep(400);//延时
srand((unsigned)time(NULL));
setvbuf(stdout,NULL,_IOFBF,50000);
gotoxy(0,0);
//system("color 4");//背景and前景颜色设置
//printf("圣诞快乐!!!\n");
//圣诞树顶小球
if(g%2==0)
print_c(33);//金色
else
print_c(31);
printf(" |\n -O-\n");
//第一节
print_c(31);//红色
int n=7;
int m=0;
x=12;
z=4;
//第一节
for(k=0;k<9;k++)
{
printf(" ");
for(i=0; i<=r;i++)
{
t=rand()%7;//产生随机数
for(j=0;j<=p-1;j++)
if(j==t)
{
print_c(0);
printf("*");
}else
{
printf(" ");
};
}
//空格打印循环
for(i=0;i<=n;i++)
{
printf(" ");//2格
}
n--;//打印空格呈倒三角由上往下递减
//树体打印循环
for(j=0;j<=m;j++)
{
if(j==x)
{
if(g%2==0)
print_c(33);
else
print_c(31);
printf(" /O");
}else if(j==z)
{
if(g%2==0)
print_c(31);
else
print_c(33);
printf(" O/ ");
}else{
print_c(32);
printf("%4c",'W');
}
}
m++;//树体呈正三角往下递增
x--;//彩带倾斜
z--;//彩带倾斜
printf(" ");
//雪花
for(i=0; i<=r;i++)
{
t=rand()%10;//产生随机数
for(j=0;j<=p;j++)
if(j==t)
{
print_c(0);
printf("*");
}else
{
printf(" ");
};
}
printf("\n");//换行
}
//第二节
n=4;
m=0;
x=2;
z=8;
for(k=0;k<6;k++)
{
printf("");
for(i=0; i<=r-1;i++)
{
t=rand()%7;//产生随机数
for(j=0;j<=p;j++)
if(j==t)
{
print_c(0);
printf("*");
}else
{
printf(" ");
};
}
//空格打印
for(i=0;i<=n;i++)
{
printf(" ");
}
n--;
//树体打印
for(j=-3;j<=m;j++)
{
if(j==x)
{
if(g%2==0)
print_c(31);
else
print_c(33);
printf(" /O");
}else if(j==z)
{
if(g%2==0)
print_c(33);
else
print_c(31);
printf(" O/ ");
}else{
print_c(32);
printf("%6c",'W');
}
}
m++;
x--;
z--;
printf(" ");
//雪花
for(i=0; i<=r;i++)
{
t=rand()%7;//产生随机数
for(j=0;j<=p;j++)
if(j==t)
{
print_c(0);
printf("*");
}else
{
printf(" ");
};
}
printf("\n");
}
//第三节
n=4;
m=0;
x=2;
z=8;
for(k=0;k<6;k++)
{
printf("");
for(i=0; i<=r-1;i++)
{
t=rand()%7;//产生随机数
for(j=0;j<=p;j++)
if(j==t)
{
print_c(0);
printf("*");
}else
{
printf(" ");
};
}
//空格打印
for(i=0;i<=n;i++)
{
printf(" ");
}
n--;
//树体打印
for(j=-3;j<=m;j++)
{
if(j==x)
{
if(g%2==0)
print_c(33);
else
print_c(31);
printf(" /O");
}else if(j==z)
{
if(g%2==0)
print_c(31);
else
print_c(33);
printf(" O/ ");
}else{
print_c(32);
printf("%6c",'W');
}
}
m++;
x--;
z--;
printf(" ");
//雪花
for(i=0; i<=r;i++)
{
t=rand()%7;//产生随机数
for(j=0;j<=p;j++)
if(j==t)
{
print_c(0);
printf("*");
}else
{
printf(" ");
};
}
printf("\n");
}
//树干
z=3;
x=10;
for(k=0;k<=2;k++)
{
for(i=0; i<=r-1;i++)
{
t=rand()%7;//产生随机数
for(j=0;j<=p;j++)
if(j==t)
{
print_c(0);
printf("*");
}else
{
printf(" ");
};
}
printf(" ");
for(i=0;i<=7;i++)
{
if(i==z)
{
if(g%2==0)
print_c(33);
else
print_c(31);
printf("O/");
}else if(i==x&&k>1)
{
if(g%2==0)
print_c(31);
else
print_c(33);
printf("O/");
}else
{
print_c(39);
printf("\\");
}
}
printf(" ");
//雪花
for(i=0; i<=r;i++)
{
t=rand()%7;//产生随机数
for(j=0;j<=p;j++)
if(j==t)
{
print_c(0);
printf("*");
}else
{
printf(" ");
};
}
printf("\n");
x-=2;
z-=2;;
}
print_c(37);
//地面
n=156;
for(i=0;i<n;i++)
{
printf("*");
}
//变色
g++;
printf("\n");
setvbuf(stdout,NULL,_IOFBF,50000);
//扩大缓冲区
//setvbuf(stdin,calloc(1<<20,sizeof(char)),_IOFBF,1<<20);
//setvbuf(stdout,calloc(1<<20,sizeof(char)),_IOFBF,1<<20);
//Sleep(2000);
}
print_c(8);
return 0;
}