C语言开发《浪漫流星雨》表白程序,去年已经成功了
话不多说,直接上效果:
开发环境:Visual Studio 2021 + EasyX图形库插件即可
接下来我们看看源码:
#include
#include
#include
#include
#include //自己安装了才有
#include
#pragma comment(lib,"winmm.lib")//多媒体设备接口库文件
#define PI 3.1415
#define NUM 13 //烟花弹数量
#define WIDTH 960
#define HEIGHT 640
struct Fire
{
int x, y;
int cen_x, cen_y; //中心点坐标
int r; //当前绽放半径
int max_r; //最大绽放半径
int width, height;
DWORD pixel[240][240]; //图片像素数组
bool isShow; //社区烟花是否准备好了
bool isDraw; //是否绘制烟花
}fire[NUM];
struct Jet //烟花弹
{
int x, y; //坐标
int hx, hy; //最高点的坐标
bool isLaunch; //烟花弹是否在发射中
IMAGE img[2];
byte n : 1; //位段 0 1 0 1 0 1 0 1 0 1
}jet[NUM];
void welcome()
{
mciSendString(L"open ./res/小幸运.mp3", 0, 0, 0);
mciSendString(L"play ./res/小幸运.mp3", 0, 0, 0);
for (int i=0; i < 50; i++)
{
//清除屏幕
cleardevice();
int x=500 + 180 * sin(2 * PI / 60 * i);
int y=200 + 180 * cos(2 * PI / 60 * i);
//设置字体样式
settextstyle(i, 0, L"楷体");
settextcolor(RGB(0, 202, 0));
setbkmode(TRANSPARENT);
outtextxy(x, y, L"浪漫表白程序");
Sleep(20);
}
_getch();//按任意键继续
cleardevice();
settextstyle(25, 0, L"楷体");
outtextxy(350, 100, L"亲爱的XXX");
outtextxy(350, 150, L"自从第一天看见你");
outtextxy(350, 200, L"我的心就不能自已");
outtextxy(350, 250, L"不管天上地下都想看见你");
outtextxy(350, 300, L"...");
outtextxy(350, 350, L"...");
outtextxy(450, 400, L"--有问题请加Q群765 80 3539");
}
void InitData(int i);
void loadImg()
{
//初始化绽放效果
IMAGE bloomImg,tImg;
loadimage(&bloomImg, L"./res/flower.jpg", 3120, 240);
for (int i=0; i < NUM; i++)
{
InitData(i);
SetWorkingImage(&bloomImg);
getimage(&tImg, i * 240, 0, 240, 240);
SetWorkingImage(&tImg);
for (int a=0; a < 240; a++)
{
for (int b=0; b < 240; b++)
{
fire[i].pixel[a][b]=getpixel(a, b);
}
}
}
//初始化烟花弹
IMAGE jetImg;
loadimage(&jetImg, L"./res/launch.jpg", 200, 50);
SetWorkingImage(&jetImg);
for (int i=0; i < NUM; i++)
{
int n=rand() % 5;
getimage(&jet[i].img[0], n*20, 0, 20, 50);
getimage(&jet[i].img[1], n*20 + 100, 0, 20, 50);
jet[i].isLaunch=false;
}
SetWorkingImage();
}
void InitData(int i)
{
fire[i].cen_x=120;
fire[i].cen_y=120;
fire[i].max_r=120;
fire[i].r=0;
fire[i].width=240;
fire[i].height=240;
fire[i].isDraw=false;
fire[i].isShow=false;
}
//产生烟花弹
void createJet()
{
int i=rand() % NUM;//[0~13)
if (jet[i].isLaunch==false)
{
jet[i].x=rand() % (Width<span class="hljs-number">-20);
jet[i].y=rand() % 100 + HEIGHT;
jet[i].hx=jet[i].x;
jet[i].hy=rand() % (HEIGHT / 3 * 2);
jet[i].isLaunch=true;
}
}
//发射烟花弹
void launch()
{
for (int i=0; i < NUM; i++)
{
if (jet[i].isLaunch)
{
putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n],SRCINVERT);
//判断是否达到最高点了
if (jet[i].y > jet[i].hy)
{
jet[i].y -=5;
jet[i].n++;
}
putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n], SRCINVERT);
if (jet[i].y <=jet[i].hy)
{
jet[i].isLaunch=false;
//可以开始放烟花了
fire[i].x=jet[i].x;
fire[i].y=jet[i].y;
fire[i].isShow=true;
}
}
}
}
void bloom(DWORD *pMem)
{
for (int i=0; i < NUM; i++)
{
if (fire[i].isShow)
{
if (fire[i].r < fire[i].max_r)
{
fire[i].r++;
fire[i].isDraw=true; //可以开始绘制烟花了
}
if (fire[i].r >=fire[i].max_r)
{
InitData(i);
}
}
if (fire[i].isDraw)
{
//求当前半径下,圆上的每个点对于的弧度
for (double a=0; a <=2 * PI; a +=0.01)
{
int img_x=fire[i].cen_x + fire[i].r * cos(a);//求出圆上的每个点的坐标
int img_y=fire[i].cen_y + fire[i].r * sin(a);
if (img_x > 0 && img_x < fire[i].width && img_y>0 && img_y < fire[i].height)
{
//针对现在的绽放点,对应的屏幕坐标
int win_x= fire[i].x + fire[i].r * cos(a);
int win_y=fire[i].y + fire[i].r * sin(a);
if (win_x > 0 && win_x < WIDTH && win_y>0 && win_y < WIDTH)
{
pMem[win_y * WIDTH + win_x]=BGR(fire[i].pixel[img_x][img_y]);
}
}
}
}
}
}
int main()
{
//创建窗口
initgraph(960, 640);
//设置随机数种子
srand((unsigned)time(NULL)+clock());
welcome();
loadImg();
DWORD* pMem=GetImageBuffer(); //获取窗口的内存指针
while (1)
{
for (int i=0; i < WIDTH; i++)
{
for (int k=0; k < 4; k++)
{
int x=rand() % WIDTH;
int y=rand() % HEIGHT;
if (y < HEIGHT)
{
pMem[y * WIDTH + x]=BLACK;
}
}
}
createJet();
launch();
bloom(pMem);
Sleep(10);
}
closegraph();
return 0;
}
以上就是我们表白程序的源码了!最后祝大家都能和喜欢的人在一起哦~
对于学习编程的小伙伴或者在工作想升职的程序员,如果你想更好的提升你的编程能力帮助你提升水平!笔者这里或许可以帮到你~
C语言开发《浪漫流星雨》表白程序,去年已经成功了相关推荐
- C/C++项目:程序员的浪漫——流星雨表白程序教程
这是你的百度搜索的历史词条吗?不用担心!学完这个流星雨表白,早日追到男神女神(不包分配) PS:要安装easyx图形库哦 #include<easyx.h> (文末领取) 第一步:创建 ...
- C/C++实现你的浪漫表白:浪漫流星雨表白程序,
想要讨女朋友欢心也巩固自己所学的知识,各位小伙伴有自己的想法了吗?准备好想要怎样实施了吗?有什么美好的计划了吗?如果没有的话那么别慌,我知道,在座的各位肯定都是有自己的心仪的姑娘,那么今天就教大家一招 ...
- C/C++实现你的浪漫表白:浪漫流星雨表白程序
想要讨女朋友欢心也巩固自己所学的知识,各位小伙伴有自己的想法了吗?准备好想要怎样实施了吗?有什么美好的计划了吗?如果没有的话那么别慌,我知道,在座的各位肯定都是有自己的心仪的姑娘,那么今天就教大家一招 ...
- C语言兴趣学习记:浪漫流星雨表白程序
作为一个未来可能会成为一个专业程序员的小伙们,不知道你们现在学到哪里了,学了点东西之后有没有想在你女朋友面前大大的表现表现呢, 今天小编就给你一个机会来研究一下下边的代码吧,保证大写的6,当然大佬是排 ...
- java制作超炫流星雨表白_[源码分享]C语言浪漫流星雨表白程序!
01 编码过程设置星星的属性,初始化星星,画星星,进行星星的移动 设置流星的属性,初始化流星 初始化加载数据,通过贴图来画流星,进行流星的移动 设置表白文字 主函数设置数组,加载界面 02 效果展示 ...
- c++语言表白超炫图形_C/C++图形界面编程打造——浪漫的表白程序!
谁说程序员不浪漫???来来来一起打造一个浪漫的表白程序,配上好听的音乐,瞬间高大上. 下面,发下代码吧,昨天的愤怒的小鸟推箱子版本的没发,今天发这个,,,简单的C语言和easyx一起打造浪漫的程序附带 ...
- C语言和图形界面编程打造——浪漫的表白程序
谁说程序员不浪漫???来来来一起打造一个浪漫的表白程序,配上好听的音乐,瞬间高大上. 下面,发下代码吧,昨天的愤怒的小鸟推箱子版本的没发,今天发这个,,,简单的C语言和easyx一起打造浪漫的程序附带 ...
- vbs画动态爱心代码_用C语言实现心形表白程序[酷炫动态版]
前几天给大家放一个C语言实现心形表白功能的程序,许多小白觉得有意思,今天给大家再放一个更炫酷的表白程序,有需要的童鞋拿去吧~ 先看看效果图吧: 因为是动图,所以只能象征性给大家截图啦~ 怎么样?童鞋们 ...
- C语言实现心形表白程序
版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/qq_42680327 C语言实现心形表白程序[酷炫动态版] : 效果图如下: 源码如下: #in ...
- 浪漫流星雨表白神器——来自程序员的浪漫
哈喽,大家好,昨天是七夕节,不知道大家是成双入对还是孤苦伶仃呢?考略到很多同学可能还是一个人吃饭一个人睡,所以这期内容本来是昨天准备出的,直接贴心的为大家打包部署好,直接拿走就能用,但是问题就出在打包 ...
最新文章
- C语言指针数组与数组指针的区别
- 评阅百篇博士论文后我发现:博士生发SCI越多,通常科研能力越差!
- 200 ssl服务器证书无效_ssl证书无效怎么办?
- Stanford UFLDL教程 梯度检验与高级优化
- Eclipse新建的Maven项目想修改DynamicWebModule,直接去项目目录下修改
- 在keil中使用头文件实现多文件编程
- 开发中常见的@NotNull,@NotBlank,@NotEmpty注解的区别
- 6N137中文说明书 光耦资料 6N137资料
- 爆肝三天,我整理了这份春招攻略【针对大三/研二】
- c语言随机数猜数游戏
- 山东理工oj答案java_山东理工大学ACM程序设计竞赛-山东理工ACM主页.DOC
- rack puma rails
- 若依管理系统漏洞利用
- PDF文件旋转最好用的方法
- 计算机二本专业怎么进国企,这3所学校虽然是二本,但毕业后就业前景好,很容易进国企...
- onPullDownRefresh和uni.startPullDownRefresh(OBJECT)、uni.stopPullDownRefresh()的关系
- 安卓机 input file图片上传无反应解决方案
- 伴随着我娃成长的运维平台(持续开源..)
- Linux运维入门及进阶全新经典视频-老男孩Linux第三部-老男孩-专题视频课程
- 【吃灰板子捡起来】按键输入实验