C/C++圣诞树

系列文章
| 序号 | 直达链接 |
| 1 | C/C++爱心代码 |
| 2 | C/C++跳动的爱心 |
| 3 | C/C++李峋同款跳动的爱心代码 |
| 4 | C/C++满屏飘字表白代码 |
| 5 | C/C++大雪纷飞代码 |
| 6 | C/C++烟花代码 |
| 7 | C/C++黑客帝国同款字母雨 |
| 8 | C/C++樱花树代码 |
| 9 | C/C++奥特曼代码 |
| 10 | C/C++精美圣诞树 |
| 11 | C/C++俄罗斯方块 |
| 12 | C/C++贪吃蛇 |
| 13 | C/C++孤单又灿烂的神-鬼怪 |
| 14 | C/C++闪烁的爱心 |
| 15 | C/C++哆啦A梦 |
| 16 | C/C++简单圣诞树 |
| 17 | C/C++小宇宙 |
| 18 | C/C++冰墩墩 |
| 19 | C/C++七彩花朵 |
| 20 | C/C++玫瑰花 |
| 21 | C/C++小猪佩奇 |
| 22 | C/C++简易爱心 |
| 23 | C/C++流星雨 |
| 24 | C/C++2048小游戏 |
| 25 | C/C++爱心圣诞树 |
| 26 | C/C++文字跑马灯 |
| 27 | C/C++教师工作量管理系统 |
目录
系列文章
写在前面
程序设计
代码分析
写在后面
写在前面
C/C++语言绘制一棵精美的圣诞树。
程序设计
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#define PI 3.14159265359
#define T px+scale*r*cosf(theta),py+scale*r*sin(theta)
char love[20][43] = {
" ",
" 1111 1111 111 ",
" 11111111111111111 111 111 ",
" 1111 11 111 111 111 ",
" 111 1111 1111 111 1111111111 ",
" 1111 111 111 1111 111 111 ",
" 1111111111111111111 1111 111 111 ",
" 111111111111111111 11111111 111 111 ",
" 111 111 111 1111111111 111 ",
" 1 111 11 111 111 ",
" 111111111111111 111 111111111 ",
" 111 111 1111111111 ",
" 111 111 111 111 111 ",
" 11111111111111 1111111 111 111 ",
" 1111111 1111 111111 111 1111 ",
" 111 1111111 11111 111 1 ",
" 111 1111 111 111 ",
" 11111111111111 111 11111 ",
" 111111 11111 111 1111 ",
" "
};
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);
}
……
代码分析
这段代码是用C语言编写的控制台程序,它使用了Windows API来创建一个带有心形图案和飘雪效果的动画。以下是对代码各个部分的详细分析:
1. 包含头文件
#include <stdio.h>#include <math.h>#include <stdlib.h>#include <windows.h>#include <time.h>
-
stdio.h:用于输入输出函数。 -
math.h:提供数学函数如sqrtf、cosf等。 -
stdlib.h:提供如rand等标准库函数。 -
windows.h:包含Windows API函数。 -
time.h:提供时间相关的函数。
2. 定义常量和宏
#define PI 3.14159265359#define T px+scale*r*cosf(theta),py+scale*r*sin(theta)
-
PI:圆周率。 -
T:这是一个宏,用来简化后续代码中坐标变换的表达式。
3. 心形图案数组
char love[20][43] = { /* ... */ };
这是一个2D字符数组,定义了一个心形图案,其中'1'表示需要打印的部分,空格表示不需要打印的地方。
4. 函数定义
gotoxy(int x, int y)
这个函数使用Windows API将光标移动到指定位置。
SetColor(int color)
设置控制台文本的颜色。
showsnow()
在随机位置显示雪花('*')。
sdCircle(float px, float py, float r)
计算点(px, py)到圆心(sx, sy)的距离,并减去半径r得到距离差值。
opUnion(float d1, float d2)
返回两个距离中的最小值,用于构建几何形状。
ribbon()
判断是否处于绘制带状区域的位置。
f(float px, float py, float theta, float scale, int n)
递归地生成复杂的图形,可能是基于极坐标的心形或其他形状。
5. 主函数main
主函数执行了以下操作:
-
设置控制台窗口大小为120列42行。
-
获取屏幕分辨率并居中控制台窗口。
-
初始化随机数种子。
-
设置控制台的代码页以确保正确显示字符。
-
根据参数解析n和zoom变量,默认值分别为3和1.0。
-
使用循环和递归调用
f函数绘制心形图案。 -
使用
love数组在特定位置绘制静态的心形图案。 -
调用
showsnow模拟下雪效果。 -
等待用户按键后退出。
总的来说,这段代码是一个有趣的例子,展示了如何结合控制台编程和图形学概念来创建视觉上吸引人的效果。
写在后面
我是一只有趣的兔子,感谢你的喜欢!
相关文章:
C/C++圣诞树
系列文章 序号直达链接1C/C爱心代码2C/C跳动的爱心3C/C李峋同款跳动的爱心代码4C/C满屏飘字表白代码5C/C大雪纷飞代码6C/C烟花代码7C/C黑客帝国同款字母雨8C/C樱花树代码9C/C奥特曼代码10C/C精美圣诞树11C/C俄罗斯方块12C/C贪吃蛇13C/C孤单又灿烂的神-鬼怪14C/C闪烁的爱心15C…...
牛客--求小球落地5次后所经历的路程和第5次反弹的高度,称砝码
求小球落地5次后所经历的路程和第5次反弹的高度 描述 假设有一个小球从 hh 米高度自由落下,我们不考虑真实的物理模型,而是简洁的假定,该小球每次落地后会反弹回原高度的一半;再落下,再反弹;……。 求小球…...
cad学习 day6
平面布置图 文字标注: 材料代码(视口外进行标注) 成品家具(移动家具)、定制家具、洁具、家电电器根据封面设计说明内容进行文字标注sc 缩放代码符号, 打印可以看的清楚 家具尺寸图 家具尺寸标注: 家具尺寸; 过道尺寸; 冰箱、洗衣机、马桶(预览尺寸)D 平面内尺寸置为当前, 视…...
Chrome 浏览器插件获取网页 iframe 中的 window 对象
Chrome 浏览器插件获取网页 iframe 中的 window 对象 前言 之前写了篇《Chrome 浏览器插件获取网页 window 对象》文章,是获取当前页面的 window 对象,但是有些页面是嵌入 iframe 的,特别是系统项目主域一样,那就也需要获取 ifr…...
免费线上签字小程序,开启便捷电子签名
虽如今数字化飞速发展的时代,但线上签名小程序的开发制作却并非易事。需要攻克诸多技术难题,例如确保签名的真实性与唯一性,防止签名被伪造或篡改。 要精准地捕捉用户手写签名的笔迹特征,无论是笔画的粗细、轻重,还是…...
IT运维的365天--021 服务器上的dns设置后不起作用
之前在内网搭建了一个和外网同域名的网站,开发同事今天告诉我,程序调试发现可能服务器不能正常访问自己内网的网站内容。于是,今天的故事开始了。 前面的文章在下面列出,当然不看也问题不大,今天的主题是:…...
深信服企业级数据备份与恢复系统(整机裸机恢复)
概述 深信服企业级数据备份与恢复系统可实现无需搭建目标环境,目标机可以是没有操作系统的物理主机或虚拟机,实现异构环境下的裸机恢复。 深信服企业级数据备份与恢复系统支持的多种连接恢复方式: 1. PXE连接恢复:PXE连接需要做…...
Tool之Excalidraw:Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略
Tool之Excalidraw:Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略 目录 Excalidraw 简介 1、Excalidraw 的主要特点: Excalidraw 安装和使用方法 1、Excalidraw的安装 T1、使用 npm 安装: T2、使用 …...
OPPO C++面试题及参考答案
五层协议每层包含的协议 在计算机网络的五层协议体系结构(自下而上为物理层、数据链路层、网络层、传输层和应用层)中,各层包含多种协议。 物理层主要负责在物理介质上传输原始的比特流,包括像 RJ - 45 接口标准等物理接口规范&am…...
Unity中LineRenderer使用MeshCollider方法参考
运行时,如果一个物体不添加Collider组件就没有办法被鼠标点击,LineRenderer由于其Mesh会随着摄像机朝向变化,如果要通过添加MeshCollider来使其能够与鼠标交互,就需要不断同步更新其MeshCollider网格。 代码参考如下: …...
BERT模型入门(1)BERT的基本概念
文章目录 BERT是Bidirectional Encoder Representations from Transformers的首字母简写,中文意思是:Transformer的双向编码器表示。它是谷歌发布的最先进的嵌入模型。BERT在许多NLP任务中提供了更好的结果,如问答、文本生成、句子分类等&…...
致命错误: Class ‘ZipArchive‘ not found
银河麒麟V10处理 本人在安装过程遇到的坑,就是不要使用太低版本的 1、安装cmake 确认是否安装 cmake --version 如果没安装的话按照如下步骤处理下(如果想要其他版本点击cmake官网下载) wget https://github.com/Kitware/CMake/release…...
二手车交易平台开发:安全与效率的双重挑战
3.1系统体系结构 系统的体系结构非常重要,往往决定了系统的质量和生命周期。针对不同的系统可以采用不同的系统体系结构。本系统为二手车交易平台系统,属于开放式的平台,所以在体系结构中采用B/s。B/s结构抛弃了固定客户端要求,采…...
vector题目
118. 杨辉三角 - 力扣(LeetCode) 求解题目时候,我们可以将其看作近似的二维数组。 行为vector<vector<int>>,数组的每个数据类型为vector<int>。 列为vector<int>,数组的每个数据类型为int。 通过观察我们可以发现…...
测试测试测试测试测试测试测试测试测试测试
标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主&…...
Cisco WebEx 数据平台:统一 Trino、Pinot、Iceberg 及 Kyuubi,探索 Apache Doris 在 Cisco 的改造实践
导读:Cisco WebEx 早期数据平台采用了多系统架构(包括 Trino、Pinot、Iceberg 、 Kyuubi 等),面临架构复杂、数据冗余存储、运维困难、资源利用率低、数据时效性差等问题。因此,引入 Apache Doris 替换了 Trino、Pinot…...
大恒相机开发(3)—大恒相机工业检测的实际案例
大恒相机工业检测的实际案例 工业检测的实际案例图像采集性能优化技巧工业环境下的稳定性 工业检测的实际案例 以下是一些使用大恒相机进行工业检测的实际案例: 多特征光学成像系统: 在这个案例中,使用大恒相机构建了一个全方位、多特征的图…...
【泛微表单】流程相关信息修改
流程相关信息修改 查询流程对应数据库表名: select b.tablename from workflow_bill b ,workflow_base s,workflow_requestbase t where t.requestid=35389 and t.workflowid = s.id and b...
LeetCode80.删除有序数组的重复项
10多分钟的时间就把一道中等题目做出来了,而且我还没有思考,边写边想。我的思路很简单,就是按照题目意思,从前往后遍历数组并统计相同的个数count,然后一直维护一个左指针,把遍历的数移到左指针上然后左指针…...
rk3568制冷项目驱动开发流程汇总(只适用于部分模块CIF DVP等,自用)
采用fpga输入,3568采集并显示至hdmi RKVICAP 驱动框架说明 RKVICAP驱动主要是基于 v4l2 / media 框架实现硬件的配置、中断处理、控制 buffer 轮转,以及控制 subdevice(如 mipi dphy 及 sensor) 的上下电等功能。 对于RK356X 芯片而言, VICAP…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
