C/C++圣诞树

ops/2024/12/20 1:39:46/

系列文章 

序号直达链接
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/C++哆啦A梦
16C/C++简单圣诞树
17C/C++小宇宙
18C/C++冰墩墩
19C/C++七彩花朵
20C/C++玫瑰花
21C/C++小猪佩奇
22C/C++简易爱心
23C/C++流星雨
24C/C++2048小游戏
25C/C++爱心圣诞树
26C/C++文字跑马灯
27C/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:提供数学函数如sqrtfcosf等。

  • 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模拟下雪效果。

  • 等待用户按键后退出。

总的来说,这段代码是一个有趣的例子,展示了如何结合控制台编程和图形学概念来创建视觉上吸引人的效果。

写在后面

我是一只有趣的兔子,感谢你的喜欢!


http://www.ppmy.cn/ops/143342.html

相关文章

word中写论文的一些trick

文章目录 加图注使用latex|matjax语法打公式给公式加上编号引用文献 加图注 这样就给图片插入图注 使用latex|matjax语法打公式 按下alt 会出现下面的情景 在右上角选择专业 然后就可以在里面打入latex或mathjax了&#xff0c;不过这个没有预览功能&#xff0c;可以在别的…

Vue3 获取当前组件实例

在 Vue 3 中&#xff0c;getCurrentInstance 是一个用于获取当前组件实例的重要函数。以下是对getCurrentInstance 的详细分析&#xff1a; 基本概念 定义&#xff1a;getCurrentInstance 是 Vue 3 提供的一个函数&#xff0c;用于获取当前正在执行的 Vue 组件实例的上下文信息…

强化学习Q-learning及其在机器人路径规划系统中的应用研究,matlab代码

一、Q-learning 算法概述 Q-learning 是一种无模型的强化学习算法&#xff0c;它允许智能体&#xff08;agent&#xff09;在没有环境模型的情况下通过与环境的交互来学习最优策略。Q-learning的核心是学习一个动作价值函数&#xff08;Q-function&#xff09;&#xff0c;该函…

ip_done

文章目录 路由结论 IP分片 数据链路层重谈Mac地址MAC帧报头局域网的通信原理MSS&#xff0c;以及MAC帧对上层的影响ARP协议 1.公司是不是这样呢? 类似的要给运营商交钱&#xff0c;构建公司的子网&#xff0c;具有公司级别的入口路由器 2&#xff0e;为什么要这样呢?? IP地…

碰一碰发视频 + 智能文案生成全解析,支持OEM

一、引言 在数字化营销的汹涌浪潮中&#xff0c;新颖且高效的推广策略不断迭代涌现。“碰一碰发视频” 结合 “点评打卡、种草文案一键生成” 的创新模式&#xff0c;宛如一颗璀璨的营销新星&#xff0c;正以燎原之势重塑商家与消费者的互动生态&#xff0c;为品牌传播及用户引…

【工具】使用 Gin 集成 pprof 进行性能调优

使用 Gin 集成 pprof 进行性能调优 一、pprof 简介 pprof 表示性能分析器&#xff08;Performance Profiler&#xff09;&#xff0c;其概念和初始实现来源于Google内部的性能分析需求。pprof 在程序运行期间&#xff0c;定期对应用的状态数据进行采样&#xff0c;每次采样都…

vue 响应式数据原理

发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【宝藏入口】。 Vue 的响应式数据原理是其核心功能之一&#xff0c;它使得 Vue 应用能够自动响应数据的变化&#xff0c;并在数据变化时自动更新…

【每日一题 基础题】[蓝桥杯 2020 省 AB3] 乘法表

[蓝桥杯 2020 省 AB3] 乘法表 乘法表 九九乘法表是学习乘法时必须要掌握的。在不同进制数下&#xff0c;需要不同的乘法表。 例如, 四进制下的乘法表如下所示&#xff1a; 1 * 11 2 * 12 2 * 210 3 * 13 3 * 212 3 * 321 请注意&#xff0c;乘法表中两个数相乘的顺序必须为样例…