| 
 | 
 
2022年12月25号就是圣诞节了!圣诞节当然要有个圣诞树了,今天给你们用C语言编写一个雪夜圣诞树! 
如果本人的代码能够帮到你的话,还请在文章下方点个赞支持一下哟~ 这个就是用单纯的C语言代码实现的,需要一点点数学知识 
那么我们话不多说,先来看看具体的效果吧~ 
后面我会更新更加酷炫的圣诞树,大家可以期待哦~ 
效果展示: 
 
  
别人都手绘圣诞树,身为程序猿的我们可以用C语言编写一个圣诞树出来,可能C语言的效果没那么炫酷,后面我在看看弄个带音乐或者带雪花的版本出来,大家先用这个小小的准备一些吧~ 
代码如下: 
#include <math.h> 
#include <stdio.h> 
#include <stdlib.h> 
#define PI 3.14159265359 
float sx, sy; 
float sdCircle(float px, float py, float r) { 
        float dx = px - sx, dy = py - sy; 
        return sqrtf(dx * dx + dy * dy) - r; 
} 
float opUnion(float d1, float d2) { 
        return d1 < d2 ? d1 : d2; 
} 
#define T px + scale * r* cosf(theta), py + scale * r * sin(theta) 
int ribbon() { 
        float x = (fmodf(sy, 0.1f) / 0.1f - 0.5f) * 0.5f; 
        return sx >= x - 0.05f && sx <= x + 0.05f; 
} 
float f(float px, float py, float theta, float scale, int n) { 
        float d = 0.0f; 
        for (float r = 0.0f; r < 0.8f; r += 0.02f) 
                d = opUnion(d, sdCircle(T, 0.05f * scale * (0.95f - r))); 
        if (n > 0) 
                for (int t = -1; t <= 1; t += 2) { 
                        float tt = theta + t * 1.8f; 
                        float ss = scale * 0.9f; 
                        for (float r = 0.2f; r < 0.8f; r += 0.1f) { 
                                d = opUnion(d, f(T, tt, ss * 0.5f, n - 1)); 
                                ss *= 0.8f; 
                        } 
                } 
        return d; 
} 
int main(int argc, char* argv[]) { 
        int n = argc > 1 ? atoi(argv[1]) : 3; 
        float zoom = argc > 2 ? atof(argv[2]) : 1.0f; 
        for (sy = 0.8f; sy > 0.0f; sy -= 0.02f / zoom, putchar(&#39;\n&#39;)) 
                for (sx = -0.35f; sx < 0.35f; sx += 0.01f / zoom) { 
                        if (f(0, 0, PI * 0.5f, 1.0f, n) < 0.0f) { 
                                if (sy < 0.1f) 
                                        putchar(&#39;.&#39;); 
                                else { 
                                        if (ribbon()) 
                                                putchar(&#39;=&#39;); 
                                        else 
                                                putchar(&#34;...................................#j&o&#34;[rand() % 32]); 
                                } 
                        } 
                        else 
                                putchar(&#39; &#39;); 
                } 
} 
 
 
 
希望对大家有帮助!快拿着代码去试试效果吧~有什么问题可以来我下方粉丝群哦! 
此外,我也给大家分享我收集的其他资源,从最零基础开始的教程到C语言C++项目案例,帮助大家在学习C语言的道路上披荆斩棘! 
C语言C++编程学习视频分享: 
 
  
 
  
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)最重要的是你可以在群里面交流提问编程问题哦! 
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦! 
【C语言/C++/数据结构与算法学习群】 |   
 
 
 
 |