用C语言实现一个圣诞树!(超简单详细)全部源码分享
Posted 一起学编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言实现一个圣诞树!(超简单详细)全部源码分享相关的知识,希望对你有一定的参考价值。
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('\\n'))
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('.');
else
if (ribbon())
putchar('=');
else
putchar("...................................#j&o"[rand() % 32]);
else
putchar(' ');
希望对大家有帮助!快拿着代码去试试效果吧~有什么问题可以来我下方粉丝群哦!
此外,我也给大家分享我收集的其他资源,从最零基础开始的教程到C语言C++项目案例,帮助大家在学习C语言的道路上披荆斩棘!
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)最重要的是你可以在群里面交流提问编程问题哦!
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!(↓↓↓↓↓↓)
以上是关于用C语言实现一个圣诞树!(超简单详细)全部源码分享的主要内容,如果未能解决你的问题,请参考以下文章