当前位置: 首页 > news >正文

C/C++爱心①

image-20250830115509120

写在前面

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++哆啦A梦
15C/C++简单圣诞树
16C/C++小宇宙
17C/C++冰墩墩
18C/C++七彩花朵
19C/C++玫瑰花
20C/C++小猪佩奇
21C/C++简易爱心
22C/C++流星雨①
23C/C++2048小游戏
24C/C++爱心圣诞树
25C/C++文字跑马灯
26C/C++教师工作量管理系统
27C/C++满天繁星
28C/C++漂浮爱心
29C/C++五子棋小游戏
30C/C++球球大作战小游戏
31C/C++走迷宫小游戏
32C/C++粉色爱心
33C/C++棕色小熊
34C/C++粉色动态爱心
35C/C++炫酷烟花①
36C/C++炫酷烟花②
37C/C++炫酷烟花③
38C/C++炫酷烟花④
39C/C++星空漩涡
40C/C++流星雨②
敬请期待……

技术需求

  1. 控制台图形绘制核心功能
  • 坐标定位:通过gotoxy函数精确控制字符在控制台的输出位置,实现二维图形的空间布局,突破传统文本输出的线性限制。
  • 颜色控制:调用SetColor函数设置控制台文本颜色,利用system("color 0c")预设背景与前景色,增强视觉表现力。
  • 窗口居中:获取屏幕与控制台窗口尺寸,计算并调用SetWindowPos将程序窗口居中显示,提升用户体验。
  1. 图形算法与数学建模
  • 爱心函数绘制:基于隐函数a*a*a-x1*x1*y1*y1*y1<0构建心形曲线,通过双重循环遍历坐标点,以星号*拼接出平滑的爱心轮廓。
  • 字符画映射:预先定义二维字符数组love,将0/1编码转换为空格与星号,通过循环逐行输出,形成固定图案文字。
  1. 系统级API调用
  • 句柄操作:使用GetStdHandle获取控制台输出句柄,结合SetConsoleTextAttribute实现颜色动态切换。
  • 窗口控制:调用GetConsoleWindow获取窗口句柄,配合GetSystemMetricsGetWindowRect实现分辨率适配与窗口定位。
  1. 流程控制与延时机制
  • 动态绘制:在爱心函数循环中嵌入Sleep(150),逐行停顿输出,模拟动态绘制过程,增强视觉冲击力。
  • 分步展示:通过分离的循环结构,依次绘制函数图形与字符画,实现内容的层次化呈现。
  1. 字符编码与输出优化
  • 条件输出:利用三元运算符判断数学条件,智能选择输出字符,保证图形边缘的平滑过渡。
  • 格式控制:通过多次输出换行符\n,调整画面留白,使最终画面居中且美观。
  1. 数据结构设计
  • 二维数组映射:将预设图案编码为0/1二维数组,每个元素对应控制台一个字符位置,实现图形到代码的精准转换。
  • 变量作用域管理:合理规划循环变量与坐标参数的作用域,避免内存冲突,确保程序稳定运行。

主要代码

创作不易,订阅后可查看完整代码

  • 《Python趣味编程》
  • 《C/C++趣味编程》
  • 《HTML趣味编程》
  • 《Java趣味编程》
#include<stdio.h>
#include<Windows.h>//写字
char love[20][43] = {"111111111111111111111111111111111111111111","111111111111110000111111100001000111111111","110000000000000000011111100011000111111111","110000111001110001111111000110001111111111","111100010000110000111111100011000000000011","111100001000100011111110000100011111100011","100000000000000000001110000100011111000111","100000000000000000011100000000110001000111","100011100011111000110000000000110001111111","111011100011111100111111000111110001111111","111000000000000000111111000110000000001111","111111000111111111111111000110000000000111","111110001111111111111111000100010001000111","111000000000000001111111000000010001100011","111000000011000011111111000000110001100001","110001110000000111111111000001110001110111","100011111000011111111111000111110001111111","111110000000000000011111000111000001111111","111000000111110000011111000111000011111111","111111111111111111111111111111111111111111"
};
……

创作流程

我设计这段代码时,心中怀着一种浪漫的冲动,想在枯燥的控制台里开出一朵花来。我希望用最原始的字符,构建出最温柔的形状——一颗跳动的心。整个创作过程,像是一场与数学和艺术的对话,我试图在有限的屏幕空间里,表达无限的情感。

一开始,我选择用数学函数来绘制爱心。这个隐函数a*a*a-x1*x1*y1*y1*y1<0是我在网上找到的经典心形方程,它能用最简洁的表达勾勒出爱的轮廓。我决定用星号*来填充满足条件的点,而用空格填充其余区域。为了增强视觉效果,我在每一行输出后加入Sleep(150)延时,让爱心像是慢慢浮现出来,带着一种仪式感。

接下来,我想要在爱心下方添加一句情话。单纯的函数图形虽然美,但缺少人文温度。我构思了一句诗:“与君初相识,犹如故人归。天涯明月新,朝暮最相思”,希望用文字为图形注入灵魂。为了让文字居中且美观,我特意计算了控制台窗口的位置,将其居中显示在屏幕中央,这需要调用Windows API获取屏幕分辨率与窗口尺寸。

最难的部分是设计那句“I LOVE YOU”的字符画。我将每个字母拆解为像素点,用二维数组love将图案编码为0/1矩阵。1代表背景空格,0代表要显示的星号。这个过程极其考验耐心,我需要在纸上画出每个字母,再逐点转换为数字。为了让字符画与爱心图形风格统一,我选择了相同的星号作为显示字符,并用红色高亮显示,与控制台背景形成鲜明对比。

在颜色设计上,我选用了深红作为前景色,这与爱心的主题完美契合。通过system("color 0c")设置整体配色方案,再用自定义的SetColor函数在特定位置切换颜色,使文字部分更加突出。为了让整个画面协调,我在最后添加了多个换行符,确保图案居中显示,不会紧贴控制台边缘。

整个程序的执行流程被我精心编排:先是开场诗句,然后是动态绘制的爱心,最后是静态的“I LOVE YOU”字符画。这种层次递进的展示方式,像是讲述一个故事,从文字的铺垫,到图形的惊艳,再到情感的升华。我希望每一个看到这段代码运行结果的人,都能感受到其中蕴含的温度,哪怕它只是由最简单的字符组成。

这不仅仅是一段代码,更是一封用程序语言写就的情书。在这个数字化的世界里,我用最朴素的方式,表达了最真挚的情感。

写在后面

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

http://www.dtcms.com/a/618245.html

相关文章:

  • 7.4、Python-变量的作用域
  • 英文专业的网站建设网站设计建设流程
  • 【教程】用Python复刻经典小游戏(贪吃蛇、扫雷)
  • 在智联招聘网站做销售最新国际足球世界排名
  • 垃圾回收算法(GC Algorithm)基石:标记-清除、复制、标记-整理
  • 中保研汽车小偏置碰撞案例分析
  • 广西建设厅查询网站wordpress 批量导入评论
  • AI工具 Claude code 常用命令和标注汇总
  • 车联网GPS测试:GPS动态欺骗测试 || GPS信号干扰测试.
  • <script setup> 实战模式:大型组件怎么拆?
  • 关键词解释:迁移学习(Transfer Learning)
  • 网站建设方案书简单wordpress主页加音乐
  • 这样做网站标志设计公司有哪些
  • 【MacBook】自动隐藏和显示菜单栏
  • 在Mysql环境下对数据进行增删改查
  • C#类修饰符功能与范围详解
  • 一个网站怎么留住用户做的比较好的国外网站一级页面布局分析
  • 可信网站是否必须做南阳网站备案
  • 【Linux驱动开发】Linux 设备驱动中的阻塞与非阻塞 I/O:机制、源码与示例
  • HarmonyOS新闻卡片组件开发实战:自定义组件与List渲染深度解析
  • 解决:jenkins Exception java.lang.NoSuchFieldError: SNAKE_CASE
  • 如何实现Redis安装与使用的详细教程
  • tensorflow+yolo图片训练和图片识别系统
  • 唯品会 一家专门做特卖的网站现在前端开发用什么技术
  • 图神经网络分享系列-GraphSage(Inductive Representation Learning on Large Graphs) (一)
  • leetcode对称二叉树
  • 网站开发设计心得及体会河南建设工程造价管理协会网站
  • 深度学习实战:(2)用 TensorFlow 1.x 构建手语识别模型
  • 人工智能、机器学习、深度学习:技术革命的深度解析
  • 东营seo网站建设费用广告设计专业自我介绍