C++流星表白🌠代码
2024-01-07 18:16:06
发布于:广东
喜欢点个赞吧!!!
本代码作者:(csdn)彼此沉默
代码:
#include<iostream>
#include<easyx.h>//图形库
#include<mmsystem.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<graphics.h>
#include<time.h>
#include<math.h>
#include<locale.h>
#pragma comment(lib,"winmm.lib")
#define STAR_NUM 500
#define METEOR_NUM 100
IMAGE img1;
IMAGE img2;
IMAGE img3;
using namespace std;
void heart(int x, int y, double scale)
{
//setfillcolor(RED);
solidrectangle((x - 35) * scale, y * scale, (x + 35) * scale, (y + 90) * scale);
solidcircle((x - 45) * scale, y * scale, 55 * scale);
solidcircle((x + 45) * scale, y * scale, 55 * scale);
setlinecolor(COLORREF(BLACK));
for (int i = 0; i <= 35; i++) {
POINT pts1[] = { {(x - 70 - i * 1) * scale,(y - 50) * scale},
{(x - 140 - i * 1) * scale,y * scale},
{(x - 15 - i * 1) * scale,(y + 50) * scale},
{(x - i * 1) * scale,(y + 90) * scale}
};
POINT pts2[] = { {(x + 70 + i * 1) * scale,(y - 50) * scale},
{(x + 135 + i * 1) * scale,y * scale},
{(x + 17 + i * 1) * scale,(y + 50) * scale},
{(x + i * 1) * scale,(y + 90) * scale}
};
polybezier(pts1, 4);
polybezier(pts2, 4);
}
}
struct Star
{
int x;
int y;
int r;
int speed;
COLORREF color;
};
struct Meteor
{
int x;
int y;
int speed;
};
void Back_Ground()
{
loadimage(&img3, "5.jpg", 1000, 600);//先把图片放在工程项目下
putimage(0, 0, &img3);//显示背景图片
}
struct Star star[STAR_NUM];
struct Meteor meteor[METEOR_NUM];
//初始化星星
void initStar(int i)
{
star[i].x = rand() % getwidth();
star[i].y = rand() % getheight();
star[i].r = rand()%2 + 1;
star[i].speed = rand() % 5;
star[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);
}
//绘制星星
void drawStar()
{
for (size_t i = 0; i < STAR_NUM; i++)
{
putpixel(star[i].x, star[i].y, star[i].color);
setfillcolor(star[i].color);
solidcircle(star[i].x, star[i].y, star[i].r);
}
}
//移动星星
void moveStar()
{
for (size_t i = 0; i < STAR_NUM; i++)
{
star[i].x+=star[i].speed;
if (star[i].x > getwidth())
{
star[i].x = 0;
}
}
}
//流星
IMAGE img[2];
void loadImg()
{
//loadimage(img + 0, "D:\Desktop\流星雨\流星雨\1.png",50,50);
//D:\Desktop\流星雨\流星雨
//loadimage(img + 1, "D:\Desktop\流星雨\流星雨\2.png", 50, 50);
//loadimage(&img, L"D:\codefile\easyxFile\loading\guan.jpg", 100, 100);
loadimage(&img1, "1.png", 50, 50);//先把图片放在工程项目下
loadimage(&img2, "2.png", 50, 50);
}
//初始化流星
void InitMeteor(int i)
{
meteor[i].x=rand()%(getwidth()*2)-getwidth();
meteor[i].y = 20-200;
meteor[i].speed= rand() % 5+5;
//meteor[i].y=rand()%get;
}
void drawMeteor()
{
//Back_Ground();
for (size_t i = 0; i < METEOR_NUM; i++)
{
int a = 0;
a = rand() % 2 + 1;
if (a == 1)
{
putimage(meteor[i].x, meteor[i].y, &img1,SRCPAINT);//显示图片
}
else
{
putimage(meteor[i].x, meteor[i].y, &img2,SRCPAINT);//显示图片
}
}
}
//移动流星
void moveMetor()
{
for (size_t i = 0; i < METEOR_NUM; i++)
{
meteor[i].x += meteor[i].speed;
meteor[i].y += meteor[i].speed;
if (meteor[i].x >= getwidth() || meteor[i].y >= getheight())
{
InitMeteor(i);
}
}
}
void welcome()
{
loadimage(&img3, "5.jpg", 1000, 600);//先把图片放在工程项目下
//设置随机数种子
srand((unsigned)time(NULL));
//媒体控制接口用来发生字符串D:\Desktop\背景音乐调用
//mciSendString("open /Desktop/背景音乐和图片调用/勾指起誓.mp3 alias BGM", 0, 0, 0);
//mciSendString("play BGM repeat", 0, 0, 0);
setbkmode(TRANSPARENT);
int tx = (getwidth() - textwidth("流星雨")) / 2;
settextstyle(20, 0, "隶书");//设置标题字体
settextcolor(GREEN);//设置字体风格
outtextxy(tx, 40, ("流星雨"));//标题
//如果没有按键按下就一直循环
while (!_kbhit())
{
//清屏
cleardevice();
//Back_Ground();
putimage(0, 0, &img3);//显示背景图片
int tx = (getwidth() - textwidth("流星雨")) / 2;
settextstyle(30, 0, "隶书");//设置标题字体
settextcolor(GREEN);//设置字体风格
outtextxy(tx, 50, ("流星雨"));//标题
//正文
settextstyle(25, 0, "隶书");//设置正文字体
settextcolor(YELLOW);//设置正文字体风格
settextcolor(RGB(rand() % 256, rand() % 256, rand() % 256));
outtextxy(250, 160, "人和人之间舒服的关系,是可以一直不说话,也可以随时的说话。");
outtextxy(250, 210, "生命是有光的。");
outtextxy(250, 260, "在我熄灭以前,能够照亮你一点,就是我所有能做的了。");
outtextxy(250, 300, "王莺莺,为什么天空那么高?");
outtextxy(250, 350, "你看到云没有?那些都是天空的翅膀啊。");
outtextxy(750, 350, "----云边有个小卖部");
Sleep(1000);
}
}
int main()
{
//创建图形窗口
initgraph(1000, 600);
//设置背景
//Back_Ground();
//IMAGE bk;
//loadimage(&bk, "5.jpg", 1000, 600);//先把图片放在工程项目下
loadimage(&img3, "5.jpg", 1000, 600);//先把图片放在工程项目下
for (size_t i = 0; i < STAR_NUM; i++)
{
initStar(i);
}
for (size_t i = 0; i < METEOR_NUM; i++)
{
InitMeteor(i);
}
loadImg();
welcome();
//双缓冲绘图
BeginBatchDraw();
while (true)
{
//putimage(0, 0, &img3);//显示图片
cleardevice();
putimage(0, 0, &img3);//显示背景图片
//Back_Ground();
drawStar();
moveStar();
drawMeteor();
moveMetor();
FlushBatchDraw();
}
EndBatchDraw();
getchar();
//int n;
//n = getchar();
//
//for (int i = 1; i < 100; i++)
//{
// cout << (rand() % 1000) << endl;
// cout << (rand() % 600) << endl;
//}
system("pause");
return 0;
}
第二篇:作者(csdn)爱编程的鱼
#include<stdio.h>
#include<graphics.h> //图形库:easyX201905
#include<conio.h>
#include<time.h>
#define MAXSTAR 1314
#define MAXMETEOR 520
//结构体
//几个星星:1000
struct Star
{
int x, y;
int color;
int step;
}star[MAXSTAR];
//流星结构
struct Meteor
{
int x, y;
int style;
int step;
}meteor[MAXMETEOR];
IMAGE img1, img2;//1.定义图片变量
void printText()
{
//设置文字颜色
settextcolor(RGB(255, 0, 255));//三原色:红,绿,蓝
//调整字体大小
settextstyle(50, 0, "华文行楷");
//你的文采:发到公屏上
/*
海底月是天上月,眼前人是心上人
春分十里,我喜欢你
终是庄周圆了梦
这是我的手背,这是我的脚背,你是我的宝贝。
一粥一饭/不及你/颦颦一笑
问君能有几多愁?家人未入眼帘人消瘦
我喜欢你,像风走了八万里,不问归期
白酒清欢无别事,我在等风也在等你
就承认一笑倾城一见自难忘
问君能有几多愁?佳人未入眼帘人消瘦
ABCDEFGHIJKLMNOPQRSTVWXYZ
*/
//在指定位置输出字符串
outtextxy(450, 20, "七夕到了,炮姐我喜欢你");
//设置文字颜色
settextcolor(RGB(0, 255, 255));//三原色:红,绿,蓝
//调整字体大小
settextstyle(40, 0, "华文行楷");
outtextxy(200, 100, "终是庄周圆了梦");
outtextxy(200, 150, "春分十里,我喜欢你");
outtextxy(200, 200, "一粥一饭不及你颦颦一笑");
outtextxy(200, 250, "就承认一笑倾城一见自难忘");
outtextxy(200, 300, "海底月是天上月,眼前人是心上人");
outtextxy(200, 350, "白酒清欢无别事,我在等风也在等你");
outtextxy(200, 400, "ABCDEFGHIJKLMNOPQRSTVWXYZ");
outtextxy(200, 450, " 我喜欢你,像风走了八万里,不问归期");
outtextxy(200, 500, "问君能有几多愁?佳人未入眼帘人消瘦");
outtextxy(200, 550, "这是我的手背,这是我的脚背,你是我的宝贝。");
outtextxy(300, 600, "----------------------------------爱你的艺辰");
_getch();//按键
}
//放大招:流星雨
//初始化星星
void initStar(int i)
{
//随机产生坐标,颜色,速度
star[i].x = rand() % 1200;
star[i].y = rand() % 800;
star[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);
star[i].step = rand() % 10;
}
//画星星
void drawStar(int i)
{
//画像素点:在初始化星星的坐标
putpixel(star[i].x, star[i].y, star[i].color);
//移动星星:给它速度
star[i].x += star[i].step;
//跑到窗口外面的星星:初始化
if (star[i].x >= 1200)
{
putpixel(star[i].x, star[i].y, star[i].color);
initStar(i);
}
}
//流星
//初始化流星
void initMeteor(int i)
{
meteor[i].x = rand()%2200-1000;//[-1200,1199]
meteor[i].y = rand()%20-200;
meteor[i].style = rand() % 2; //0,1
meteor[i].step = rand() % 30 + 1;//+3 :流星的速度不为0
}
//画流星:贴图技术
void drawMeteor(int i)
{
//3.贴图:显示图片
for (i = 0; i < MAXMETEOR; i++)
{
switch (meteor[i].style)
{
case 0:
putimage(meteor[i].x, meteor[i].y, &img1,SRCPAINT);
break;
case 1:
putimage(meteor[i].x, meteor[i].y, &img2, SRCPAINT);
break;
}
}
}
//移动流星
void moveMeteor(int i)
{
for (i = 0; i < MAXMETEOR; i++)
{
meteor[i].x += meteor[i].step;
meteor[i].y += meteor[i].step;
if (meteor[i].x >= 1200 || meteor[i].y >= 800)
{
initMeteor(i);
}
}
}
int main()
{
//2.加载图片
loadimage(&img1, "1.jpg", 50, 50);
loadimage(&img2, "2.jpg", 50, 50);
//界面:初始化图形环境宽度,高度
initgraph(1200, 800);
//随机函数种子:如果不播种:随机出来的是伪随机
srand((unsigned int)time(NULL));
printText();
int i = 0;
for ( i = 0; i < MAXSTAR; i++)
{
initStar(i);
}
for (i = 0; i < MAXMETEOR; i++)
{
initMeteor(i);
}
drawMeteor(i);
while (1)
{
BeginBatchDraw();
cleardevice();
for (i = 0; i < MAXSTAR; i++)
{
drawStar(i);
}
drawMeteor(i);
moveMeteor(i);
Sleep(100);
EndBatchDraw();
}
while (1); //卡屏 _getch()函数
closegraph();//关闭图形环境
return 0;
}
想表白的兄弟们抓紧复制了!!!
全部评论 2
为什么报错?
2024-01-08 来自 广东
0没下easyX图形库
2025-02-10 来自 四川
0
蟹蟹大家的观看,不足之处尽管提
2024-01-07 来自 广东
0
有帮助,赞一个