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++语言绘制一棵精美的圣诞树。

程序设计

cpp 复制代码
#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模拟下雪效果。

  • 等待用户按键后退出。

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

写在后面

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

相关推荐
Predestination王瀞潞1 分钟前
Python3:Fifteenth 类型注解(Type Hints)
开发语言·python
fie88894 分钟前
Qt对Word网页的读写功能实现
开发语言·qt·word
songgz1 小时前
洋葱式双向解析器演示(Ruby)
开发语言·后端·ruby
秋邱1 小时前
AR 应用流量增长与品牌 IP 打造:从被动接单到主动获客
开发语言·人工智能·后端·python·ar·restful
源代码•宸1 小时前
GoLang并发示例代码2(关于逻辑处理器运行顺序)
服务器·开发语言·经验分享·后端·golang
橘子真甜~1 小时前
C/C++ Linux网络编程9 - TCP服务器实现流程和独立运行
linux·运维·服务器·c++·守护进程·会话组
了一梨8 小时前
在Ubuntu中配置适配泰山派的交叉编译环境
linux·c语言·ubuntu
郑州光合科技余经理8 小时前
同城系统海外版:一站式多语种O2O系统源码
java·开发语言·git·mysql·uni-app·go·phpstorm
CQ_YM8 小时前
数据结构之单向链表
c语言·数据结构·链表
一只乔哇噻8 小时前
java后端工程师+AI大模型开发进修ing(研一版‖day60)
java·开发语言·人工智能·学习·语言模型