C++编写的表白小程序(图片围成爱心+烟花+音乐)-附源代码

一、效果

视频效果:

C++编写的表白小程序(图片围成爱心+烟花+音乐)-附源码

 

二、项目完整源代码:

链接:https://pan.baidu.com/s/1zea3Wji1VN4FIrqXoa4LWw 
提取码:ypag

三、程序需要调用EasyX图形库

官网链接:https://easyx.cn/downloads/

使用的版本:EasyX库(附带graphics.h) 2018春分版 (2018-3-21)

四、展现爱心和烟花的代码

==============Romantic.h==================

#pragma once
#include "graphics.h"
#include "time.h"
#include "mmsystem.h"
#include <stdio.h>		//标准的输入输出头文件。
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include "windows.h"

#pragma comment(lib,"winmm.lib")
#define nSecond 500

#define PI 3.1415926548
#define NUM		13

class CRomantic
{
public:
	CRomantic(void);
	virtual ~CRomantic(void);
public:
	void ShowLove();
	void GaoBaiQiQiu();

	//==============第二个================窗口
	void FireFlower();
	//烟花弹
	struct JET
	{
		int x, y;   //烟花弹的坐标
		int hx, hy;  //最高点坐标 ---> 烟花(爆炸坐标)
		int height;  //高度  y-hy
		bool shoot;  //是否可以发射

		DWORD t1, t2, dt;  //时间间隔
		IMAGE img[2];      //小数组 存放图片
		byte n : 1;        //位段 
	}jet[NUM];

	//烟花
	struct FIRE
	{
		int r;      //r
		int max_r;  //
		int x, y;  //
		int cen_x, cen_y;  //
		int width, height;
		int xy[240][240];

		bool show;
		bool draw;
		DWORD t1, t2, dt;
	}fire[NUM];

	//声明函数
	void Welcome();
	void Init(int i);//初始化
	void Load(); //加载图片
	void Chose(DWORD& t1);  //选择可以发射的烟花弹
	void Shoot();   //发射
	void Show(DWORD* pMem);

};

五、关于如何替换爱心的图片见此文章出处

http://liyanliang.net/index.php/2021/02/16/showmylove/

 

注:转载请标明出处:

https://blog.csdn.net/qq_40416052/article/details/103701756

已标记关键词 清除标记
相关推荐
vs2017环境下成功编译,vc6.0编译不通过 #include "stdafx.h" #include <iostream> #include <graphics.h> #include <math.h> #include <time.h> // 使用该计时器必须包含的文件 #pragma comment ( lib, "Winmm.lib" ) using namespace std; #define LONG 800 // 窗口长 #define WIDE 500 // 窗口宽 #define NUM 13 // 烟花种类数量宏定义 void Init_Fire(); // 初始化烟花 void Load_Image(); // 加载烟花图片 void Shoot(); // 发射烟花 void Chose(DWORD& t1); // 筛选烟花 void Show(DWORD* pMem); // 绽放烟花 void Erase(DWORD* pMem); // 随机擦除像素点 // 烟花结构 struct FIRE { int r; // 当前爆炸半径 int max_r; // 爆炸中心距离边缘最大半径 int x, y; // 爆炸中心在窗口的坐标 int cen_x, cen_y; // 爆炸中心相对图片左上角的坐标 int width, height; // 图片的宽高 int xy[240][240]; // 储存图片像素点 bool show; // 是否绽放 bool draw; // 开始输出像素点 DWORD t1, t2, dt; // 绽放速度 }Fire[NUM]; // 烟花弹结构 struct JET { int x, y; // 喷射点坐标 int hx, hy; // 最高点坐标------将赋值给 FIRE 里面的 x, y int height; // 烟花高度 bool shoot; // 是否可以发射 DWORD t1, t2, dt; // 发射速度 IMAGE img[2]; // 储存花弹一亮一暗图片 byte n : 1; // 图片下标 }Jet[NUM]; // 初始化烟花参数 void Init_Fire() { // 分别为:烟花中心到图片边缘的最远距离、烟花中心到图片左上角的距离 (x、y) 两个分量 int r[13] = { 120, 120, 155, 123, 130, 147, 138, 138, 130, 135, 140, 132, 155 }; int x[13] = { 120, 120, 110, 117, 110, 93, 102, 102, 110, 105, 100, 108, 110 }; int y[13] = { 120, 120, 85, 118, 120, 103, 105, 110, 110, 120, 120, 104, 85 }; for (int i = 0; i < NUM; i++) // 初始化烟花 { Fire[i].x = 0; // 烟花中心坐标 Fire[i].y = 0; Fire[i].width = 240; // 图片宽 Fire[i].height = 240; // 图片高 Fire[i].max_r = r[i]; // 最大半径 Fire[i].cen_x = x[i]; // 中心距左上角距离 Fire[i].cen_y = y[i]; Fire[i].show = false; // 是否绽放 Fire[i].dt = 5; // 绽放时间间隔 Fire[i].t1 = timeGetTime(); Fire[i].r = 0; // 从 0 开始绽放 Jet[i].x =
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页