C语言开发浪漫流星雨表白程序,源码来了
浪漫表白效果:
开发环境:Visual Studio 2019 + 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"--爱你的XXX"); } 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-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++编程学习基地,点击正在跳转「链接」即可加入,欢迎有问题的小伙伴一起进来学习交流嗷~
债基单日跌幅超1,直接断舍离?单日跌幅1。90,具体债基阳光就不点名了,今天债基中倒数肯定是有名的。作为一只没有可转债和股票仓位的债基,出现这样幅度下跌,作为投资者是难以接受的。跌幅这么大的原因第一种可能就是债
realme发布真我10Pro新机,1699元起售新京报贝壳财经讯(记者许诺)11月17日,OPPO旗下品牌realme(真我)发布了真我10Pro新机。作为针对年轻用户主打高性能和高性价比的大厂子品牌,realme在真我10Pr
玩不转就降价,奔驰EQ最高直降23。76万元,BMW直呼内行2022年,中国汽车市场的新能源汽车渗透率达到了25,国内电气化趋势如浪潮般,席卷着整个市场。但比起一众新势力车企,奔驰方面的日子却并不好过,EQ系列进入国内市场反响一般。15日,
腾讯派息式减持美团,双方的最好结局11月16日,腾讯发布第三季度财报,并发布公告称,将派息式减持美团,两个月前的传闻,终于落实,我认为这是对双方都利好的结局。一Q3数据先从财报中看,腾讯三季度营收为1401亿元,同
五大上市险企前10月保费超2。2万亿元,寿险分化财险继续高增长记者吕文琦编辑2022年已近尾声。截至11月17日,A股五大上市险企前10个月保费收入数据已悉数出炉,合计揽收保费2。26万亿元,同比增长4。04。今年110月,中国人寿保费收入5
煤炭进口持续改善,老能源保供的故事还能持续吗?煤炭板块可谓是今年以来的大牛板块,以中证煤炭指数为例,今年至今涨幅达17。75,几乎成为了A股单边下行行情中唯一的幸运儿。然而相比新能源这类大热门的主题,煤炭开采概念似乎很难给投资
债市全线反弹本轮债市快速调整结束了吗?11月17日债市全线反弹,国债期货市场10年期主力合约涨0。52,5年期主力合约涨0。31,2年期主力合约涨0。16。现券市场,前期涨幅较大的短券收益率,今日下行幅度靠前,在10个
快递保价理赔难如何破解?双11前后产生了新一轮快递大潮。为避免快件丢失损毁造成损失,一些消费者在支付快递费时,额外为贵重物品购买保价服务。但新华视点记者调查发现,由于多种原因,快递保价经常发生理赔难问题。
10月家具零售总额继续下滑,家居卖场销售同比降四成记者蓝丽琦编辑作为一年内的装修旺季,今年10月份的家具类销售出现了下滑。11月15日,国家统计局发布2022年110月国民经济运行情况。数据显示,今年110月,全国家具类零售总额为
建信良将如潮建信,作为一家老牌银行系,有越来越火的趋势。在之前的文章中,写过周智硕和姜锋,都是业绩很不错的基金经理。上个月,周智硕发行了一只募集10亿的新基金,不到2天就结束募集。而他管理的老
2023保险开门红,理财险产品测评合集来了最近,一年一度的保险开门红号角吹响,虽然业内也有一些淡化开门红的声音,但是大部分保险公司,还是愿意借助这个节点奋战冲刺。如中国人寿平安人寿友邦人寿和泰康人寿等,陆续已经有开门红产品