圣诞将至—C语言圣诞树代码来啦

2023-12-07 19:52
文章标签 语言 代码 圣诞树 圣诞

本文主要是介绍圣诞将至—C语言圣诞树代码来啦,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 圣诞将至—C实现语言圣诞树
  • 源码

圣诞将至—C实现语言圣诞树

圣诞树

在这里插入图片描述

源码

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#define PI 3.14159265359
char love[20][43] = {"111111111111111111111111111111111111111111","111111111111110000111111100001000111111111","110000000000000000011111100011000111111111","110000111001110001111111000110001111111111","111100010000110000111111100011000000000011","111100001000100011111110000100011111100011","100000000000000000001110000100011111000111","100000000000000000011100000000110001000111","100011100011111000110000000000110001111111","111011100011111100111111000111110001111111","111000000000000000111111000110000000001111","111111000111111111111111000110000000000111","111110001111111111111111000100010001000111","111000000000000001111111000000010001100011","111000000011000011111111000000110001100001","110001110000000111111111000001110001110111","100011111000011111111111000111110001111111","111110000000000000011111000111000001111111","111000000111110000011111000111000011111111","111111111111111111111111111111111111111111"
};void gotoxy(int x, int y)
{HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);COORD pos = { x,y };SetConsoleCursorPosition(hout, pos);
}void SetColor(int color)
{if (color == 0)color = 0x04;HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hCon, color);
}void showsnow()
{SetColor(rand() % 16);int x = rand() % 120;int y = rand() % 40;gotoxy(x, y);putchar('*');
}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.95 - 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[])
{system("mode con cols=120 lines=42");srand((int)time(NULL));SetConsoleCP(437);SetConsoleOutputCP(437);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){SetColor(rand() % 16);putchar('\3');}else {if (ribbon()) {putchar('=');}else {SetColor(rand() % 16);putchar('\3');}}}else {putchar(' ');}}}int i, j;int x, y = 3;for (i = 0; i < 19; i++, y++){x = 60;for (j = 0; j < 42; j++, x++){gotoxy(x, y);if (love[i][j] == '1'){putchar(' ');}else {SetColor(0x06);putchar('*');}}}for (n = 0; n++ < 365;){showsnow();}gotoxy(0, 40);getchar();return 0;
}

这篇关于圣诞将至—C语言圣诞树代码来啦的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/467157

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

Python屏幕抓取和录制的详细代码示例

《Python屏幕抓取和录制的详细代码示例》随着现代计算机性能的提高和网络速度的加快,越来越多的用户需要对他们的屏幕进行录制,:本文主要介绍Python屏幕抓取和录制的相关资料,需要的朋友可以参考... 目录一、常用 python 屏幕抓取库二、pyautogui 截屏示例三、mss 高性能截图四、Pill