IE盒子

搜索
查看: 198|回复: 20

【圣诞树】用C语言给女朋友写一个圣诞树!内含源码

[复制链接]

1

主题

4

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2023-1-8 15:58:45 | 显示全部楼层 |阅读模式
圣诞节马上就要到了,不知道给自己喜欢的人准备什么样的惊喜吗?



作为一名程序员,今天就用最简单的编程语言——C语言来给大家写一个圣诞树吧!如果本人的代码能够帮到你的话,还请在文章下方点个赞支持一下哟~
那么我们话不多说,先来看看效果吧!



整个效果还是比较不错的,不需要图片素材,制作简单,将我们的C语言代码放到编译器运行即可!
(当然,这个小雪花的话是一个小小的exe程序造成的效果哈,不包括在代码本身里面)
源码示例:
#include <windows.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define PI 3.14159265359
#define T px + scale * r * cosf(theta), py + scale * r * sin(theta)
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;
}
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 ribbon() {
    float x = (fmodf(sy, 0.1f) / 0.1f - 0.5f) * 0.5f;
    return sx >= x - 0.05f && sx <= x + 0.05f;
}
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(' ');
            }
        }
    Sleep(1000);
    printf("\n\n\n");
    for (size_t i = 0; i < 40; i++) {
        putchar(' ');
    }
    //_sleep(5000);
    printf("Merry Christmas, baby~!\n");
    Sleep(500);
    for (size_t i = 0; i < 40; i++) {
        putchar(' ');
    }
    printf("Never say die.\n");
    Sleep(500);
    for (size_t i = 0; i < 40; i++) {
        putchar(' ');
    }
    printf("2016/12/24, 最爱你的UP主\n");
    getchar();
}
如果学习的过程中有什么问题,以及本项目有什么不懂的地方,都可以来找我交流,我来帮你!
那么今天的分享就到这里了,后续会更新更多精彩项目或者知识内容的,大家要好好学C语言C++哟~
微信公众号:C语言编程学习基地
【C语言/C++/数据结构算法粉丝群】
回复

使用道具 举报

3

主题

12

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2023-1-8 15:59:23 | 显示全部楼层
回复

使用道具 举报

5

主题

6

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2023-1-8 15:59:38 | 显示全部楼层
你即将失去你的女朋友
回复

使用道具 举报

0

主题

4

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2023-1-8 16:00:14 | 显示全部楼层
哈哈
回复

使用道具 举报

1

主题

6

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2023-1-8 16:00:49 | 显示全部楼层
求小雪花exe程序
回复

使用道具 举报

0

主题

5

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-1-8 16:01:44 | 显示全部楼层
哈哈哈哈不会的 [捂脸]
回复

使用道具 举报

0

主题

7

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2023-1-8 16:02:13 | 显示全部楼层
你比我狠,我只想说  你没有女朋友
回复

使用道具 举报

1

主题

9

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2023-1-8 16:03:13 | 显示全部楼层
我以为会有雪花,结果只有树
回复

使用道具 举报

1

主题

5

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2023-1-8 16:04:00 | 显示全部楼层
发给女神看了,她给我发了一张在酒店里穿着小鹿服装的图片,她说她和闺蜜一起去的,看见她那么开心 ,我也很开心,那一刻我终于意识到了,C语言太棒了,C语言赛高![耶]
回复

使用道具 举报

3

主题

9

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2023-1-8 16:04:12 | 显示全部楼层
[思考]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表