毕业设计基本流程

一、毕设选题

 这个环节很关键,建议选个已有的差不的毕设,可以问下学姐和学长,题目选得好,可以省下很多时间和精力,选题还要考虑是否好写论文。

二、开题报告

  大部分学校在11月至12月这个时间点上会上传开题报告,开题报告是什么呢
  开题报告就是你这个毕设的说明,包含有毕设的背影和意义,后面还要写上你这个毕设需要用到的元器件,完成的功能及方案

三、下发任务书

   经过开题报告后,指导老师会下发任务书,也就是毕设实现的指标,好的任务书会精确到用什么元器件,如果没有则需要自己去找,可以看看B站有没有类似的

四、中期检查

 那什么是中期检查呢?中期检查就是老师要看你是否在做这个毕设,是否遇到解决不了的问题,如果觉得难度大实在完成不了可以换题目

五、上传初稿

时间来到次年的3月这时基本陆陆续续开学了 ,毕设估计换题的换题,做也做得差不多了,没做的就得赶紧了,不过可以一边写论文一边做毕设,初稿决定的是你是否有机会参加答辩,一般初稿查重率不能超过30%,一般看学校的,太高是不给答辩机会的

六、上传定稿

定稿其实就是你的论文,定下的方向确定并没有脱离主题,格式也符合要求了,这时需要的查重率不能超过10%(不同学校有不同要求)

七、毕设答辩

到了5月,上传了定稿的同学,毕设完成的同学呢可以接受老师的质问了,你会被分组,可能是你认识的老师,大概就是问你毕设是怎么实现的,实现原理,只要不太过分基本能过。

八,终稿

经过毕设答辩老师会对你的论文作出指导,基本也是格式问题和引用,数据来源等问题跟着修改就行
到此~~~~~~~~你已经可以领取毕业证了
下期讲讲优秀毕业设计是如何得到的

<think>好的,用户现在想要了解如何用C/C++实现李峋同款的跳动爱心。之前用户已经询问过Qt串口通信,现在转向图形相关的爱心效果,可能用户对编程有较广泛的兴趣,或者在做某个项目需要结合硬件和图形界面。 首先,用户提到的“李峋同款跳动爱心”应该是指影视剧中的动态爱心效果,可能是一个在控制台或图形窗口中跳动爱心动画。需要确认用户的需求是控制台实现还是图形界面,比如使用OpenGL或者Qt的图形库。不过考虑到用户之前接触过Qt,可能更倾向于图形界面,但C/C++的控制台动画也是一种常见做法,尤其是使用ASCII字符来模拟动画。 接下来需要分析实现方法。控制台下的跳动爱心通常利用数学公式生成爱心的形状,结合颜色变化和动态缩放来模拟跳动效果。在Windows下可能需要使用Windows API来设置控制台颜色和光标位置,而Linux/macOS则可能使用ANSI转义码。 用户可能需要详细的步骤,包括爱心坐标的计算、控制台颜色的设置、动画循环的实现。同时需要代码示例,最好能跨平台或者注明不同系统的适配方法。另外,用户可能希望代码简洁,容易理解和修改。 考虑到用户可能没有图形库的经验,优先选择控制台实现,因为依赖较少,适合快速实现。但需要注意不同系统的兼容性,比如Windows和Unix-like系统在控制台处理上的差异。例如,Windows使用SetConsoleCursorPosition和SetConsoleTextAttribute,而其他系统使用ANSI转义码。 代码结构大致分为:初始化(隐藏光标、设置颜色)、计算爱心形状的坐标、动态调整爱心大小以实现跳动效果,以及循环刷新显示。可能需要用到数学公式,比如心形曲线的参数方程,或者使用预定义的字符矩阵来绘制爱心。 同时,需要处理用户的退出操作,比如检测按键事件来终止程序,或者在循环中设置退出条件。此外,动画的流畅性取决于刷新速率,可能需要使用睡眠函数来控制帧率。 最后,可能需要注意事项,比如编译时的平台相关代码处理,或者颜色不支持时的回退方案。用户可能还希望了解如何调整爱心的大小、颜色变化或跳动速度,所以代码中的参数应该易于修改。 总结来说,需要提供一个简洁的C/C++控制台程序,实现跳动爱心动画,包含跨平台处理,代码注释清晰,并解释关键步骤和数学原理,方便用户理解和自定义。</think>以下是一个用 C/C++ 实现的**控制台跳动爱心**代码(灵感来自《点燃我,温暖你》中李峋的爱心代码),结合数学公式与颜色动画效果,支持 Windows/Linux/macOS 平台: --- ### 代码实现 ```cpp #include <iostream> #include <cmath> #include <windows.h> // Windows 专用 API(Linux/macOS 可用 ANSI 转义码替代) // 设置控制台光标位置(跨平台建议使用 ncurses 库) void setCursorPos(int x, int y) { #ifdef _WIN32 HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos = { (SHORT)x, (SHORT)y }; SetConsoleCursorPosition(hConsole, pos); #else std::cout << "\033[" << y + 1 << ";" << x + 1 << "H"; // ANSI 转义码 #endif } // 隐藏光标 void hideCursor() { #ifdef _WIN32 HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO cursorInfo; GetConsoleCursorInfo(hConsole, &cursorInfo); cursorInfo.bVisible = false; SetConsoleCursorInfo(hConsole, &cursorInfo); #else std::cout << "\033[?25l"; #endif } // 设置控制台颜色(示例仅 Windows,其他系统可用 ANSI) void setColor(int color) { #ifdef _WIN32 HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hConsole, color); #else std::cout << "\033[38;5;" << color << "m"; #endif } // 爱心数学公式:笛卡尔心形线变形 bool heartShape(float x, float y, float scale) { x /= scale; y /= scale; float heart = pow(x*x + y*y - 1, 3) - x*x*y*y*y; return heart <= 0; } int main() { hideCursor(); float scale = 1.0; bool expanding = false; while (true) { // 清屏(简单模拟) system("cls"); // 动态缩放系数 scale += expanding ? 0.05 : -0.05; if (scale <= 0.5) expanding = true; if (scale >= 1.5) expanding = false; // 遍历坐标绘制爱心 for (float y = 1.5; y > -1.5; y -= 0.05) { for (float x = -1.5; x < 1.5; x += 0.025) { if (heartShape(x, y, scale)) { setColor(12); // 红色(Windows) std::cout << "*"; } else { std::cout << " "; } } std::cout << std::endl; } // 控制动画速度 Sleep(50); } return 0; } ``` --- ### 关键原理 1. **心形方程** 使用变形后的笛卡尔心形线公式: ```math (x^2 + y^2 - 1)^3 - x^2 y^3 \leq 0 ``` 当坐标点满足该不等式时,绘制爱心符号。 2. **动态缩放** 通过 `scale` 参数周期性变化(0.5~1.5),实现爱心的"跳动"效果。 3. **控制台动画** - 使用 `system("cls")` 清屏(实际项目建议用更高效方式) - 通过 `Sleep()` 控制帧率 - 隐藏光标避免闪烁 4. **颜色控制** Windows 使用 `SetConsoleTextAttribute`,其他系统可用 ANSI 转义码实现彩色输出。 --- ### 运行效果 - 控制台中会出现一个红色爱心,持续缩放跳动 - 类似影视剧中的终端动态效果(需调整参数优化动画流畅度) --- ### 跨平台适配建议 1. **Linux/macOS** - 安装 `ncurses` 库替代 Windows API - 使用 ANSI 转义码控制颜色和光标 - 将 `Sleep(50)` 改为 `usleep(50000)` 2. **增强效果** - 修改公式实现不同形状爱心 - 添加渐变颜色(如粉红到深红) - 增加随机粒子效果 如果需要完整跨平台版本或图形界面(如 OpenGL/Qt 实现),可以进一步补充说明!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值