" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實(shí)現(xiàn)流星雨效果流程

 更新時(shí)間:2021年11月22日 08:44:58   作者:MAX在碼字  
C本篇文章帶你用C語言去實(shí)現(xiàn)漫天流星雨的效果,代碼寫的很清晰,效果非常棒,另有視頻詳解整個(gè)過程,相信你一定能看懂,感興趣的童鞋快來看看吧

再亮眼的流星,也會(huì)一閃而過。

嗨!這里是狐貍~~

沒錯(cuò),我又來了,上次的“煙花”表白程序你學(xué)廢了嗎,這次我次我又來給大家支招啦,學(xué)會(huì)了“煙花”,我們一起來看“流星雨”吧?。?! 直接上界面

上次忘記說了,因?yàn)槲覀兪怯肅語言寫的所以是控制臺(tái)程序,創(chuàng)造不出來界面,那怎么辦呢,我們就要用Windows的遠(yuǎn)房表親EasyX圖形庫來建界面了,上次忘記說了,望諒解!?。?/p>

我們今天就和往常一樣一步一步的教大家如何去完成這個(gè)“流星雨”表白程序吧!

一、頭文件

最近總是被吐槽為什么沒有頭文件,原因是呢,我覺得我分享項(xiàng)目最主要的目的是讓大家學(xué)知識(shí),頭文件這些沒營養(yǎng)的,開始就沒有考慮,但鑒于需要的小伙伴太多了,我就發(fā)出來吧!?。?/p>

#include<stdio.h>
#include<easyx.h>	//第三方圖形庫,需要安裝
#include<time.h>
#include<conio.h>
 
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")

二、結(jié)構(gòu)體

老朋友結(jié)構(gòu)體他又來了,不用多說,直接看

struct Star		//小星星
{
	int x;
	int y;
	int r;
	int speed;			//速度
	COLORREF color;		//顏色
};
struct Meteor
{
	int x;
	int y;
	int speed;
};

三、初始化

初始化星星以及流星,要用到隨機(jī)函數(shù)哦,讓星星和流星看起來更自然。

//初始化星星
void initStar(int i)
{
	star[i].x = rand() % getwidth();
	star[i].y = rand() % getheight();
	star[i].r = rand() % 3 + 1;
	star[i].speed = rand() % 5;	//0 1 2 3 4
	star[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);
}
//初始化流星
void initMeteor(int i)
{
	//[0,2400)
	//[-1200,1200)
	meteor[i].x = rand() % (2 * getwidth()) - getwidth();	//[-1200,1200)
	meteor[i].y = 20 - 200;
	meteor[i].speed = rand()%15+1;
}

四、繪制函數(shù)

繪制星星以及流星,簡單的貼圖就行啦

繪制星星
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 drawMeteor()
{
	for (size_t i = 0; i < METEOR_NUM; i++)
	{
		putimage(meteor[i].x, meteor[i].y, img + rand() % 2,SRCPAINT);
	}
}

五、移動(dòng)函數(shù)

不僅流星要?jiǎng)?,星星也要跟著?dòng),怎么動(dòng)才能更自然,自己也可以優(yōu)化一下。

//星星的移動(dòng)
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;
		}
	}
}
 
//流星的移動(dòng)
void moveMeteor()
{
	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);
		}
	}
}

六、界面設(shè)計(jì)

接下來是我們的界面設(shè)計(jì)函數(shù)了,這個(gè)也是大家自由發(fā)揮的地方,可以自己去查一些界面的設(shè)置函數(shù),自己設(shè)計(jì)自己的界面,里面的情話就可以自己去發(fā)揮了!?。?/p>

void welcome()
{
	//播放音樂 mci media device interface 
	mciSendString(_T("open ./images/浪漫空氣.mp3 alias bgm"), NULL, 0, NULL);
	mciSendString(_T("play bgm"), NULL, 0, NULL);
 
	//設(shè)置隨機(jī)數(shù)種子
	srand((unsigned)time(NULL));
	/*@思考:表白的話語*/
 
	//設(shè)置背景模式
	setbkmode(TRANSPARENT);
 
	//設(shè)置文字樣式
	settextstyle(40, 0, _T("華文行楷"));
 
	//如果沒有按鍵按下,就一直循環(huán)
	while (!_kbhit())
	{
		//清屏
		cleardevice();
		putimage(0, 0, &bk);
 
		//設(shè)置文字顏色
		settextcolor(RGB(rand()%256, rand() % 256, rand() % 256));
 
		//輸出文字
		int tx = (getwidth() - textwidth(_T("XXX我喜歡你"))) / 2;
		outtextxy(tx, 20, _T("XXX我喜歡你"));
 
		outtextxy(200, 100, _T("血包我不要,我只要你"));
		outtextxy(200, 150, _T("老師我在床上更愛你"));
		outtextxy(200, 200, _T("寶 你就想cf里的源武器 便宜但沒人要"));
		outtextxy(200, 250, _T("春風(fēng)十里 ,我只愛你"));
		outtextxy(200, 300, _T("我的程序只有你一個(gè)主函數(shù)"));
		outtextxy(200, 350, _T("孤單不是與生俱來,而是由你愛上一個(gè)人的那一刻開始。"));
		outtextxy(200, 400, _T("如果奇跡有顏色,那一定是彩虹的顏色"));
		outtextxy(200, 450, _T("山有木兮木有枝,心悅君兮君不知"));
		outtextxy(200, 500, _T("我從不暢享未來,遇到了你以后我每天都在想"));
		outtextxy(200, 550, _T("------------ 愛你XXX"));
		
		for (size_t i = 0; i < 10; i++)
		{
			settextcolor(RGB(rand() % 256, rand() % 256, rand() % 256));
			outtextxy(rand()%getwidth(), rand()%getheight(), _T("?"));
		}
		
		
		Sleep(1000);
	}
}

七、主函數(shù)

最后是我們的主函數(shù),把之前的函數(shù)一起調(diào)用起來吧

int main()
{
	//1,創(chuàng)建圖形窗口
	initgraph(1200, 800);
	//設(shè)置背景顏色
	//setbkcolor(RGB(99, 99, 99));
	//cleardevice();
 
	
	loadimage(&bk, _T("./images/bk.png"),getwidth(),getheight());
 
 
	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)
	{
		cleardevice();
		putimage(0, 0, &bk);
 
		drawStar();
		moveStar();
 
		drawMeteor();
		moveMeteor();
 
		FlushBatchDraw();
	}
	EndBatchDraw();
getchar();
	return 0;
}

總結(jié)

好了,這樣一來,“流星雨”表白程序你也已經(jīng)拿到手了,這還不夠嗎,以后別說咱們程序員不浪漫,那是不想動(dòng)手,浪漫起來誰也抵擋不住,代碼不難,用心去做誰都可以,加油吧?。?!

視頻講解

想要看視頻講解的看這里,講得很詳細(xì),可以認(rèn)真的聽一下

聽說向流星許愿就會(huì)有好運(yùn)氣

https://www.bilibili.com/video/BV1Tv411g7xL/

感謝

在這里向大家說聲感謝,我的“煙花”表白程序上了熱榜第一,我很感動(dòng),我也很感謝大家的支持,讓我覺得自己的努力并不是竹籃打水一場(chǎng)空,我也希望大家可以真實(shí)的學(xué)到東西,而不是說單純的只是看一下程序運(yùn)行的結(jié)果,或者說簡單的給那個(gè)人看罷了,我也不知道這篇發(fā)完的結(jié)果怎么樣,但不管怎么樣,我也是希望大家可以在未來不管遇到什么,看到什么都不要放棄學(xué)習(xí)的機(jī)會(huì),再次感謝大家!

到此這篇關(guān)于C語言實(shí)現(xiàn)流星雨效果流程的文章就介紹到這了,更多相關(guān)C語言 流星雨內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • ubuntu系統(tǒng)下C++調(diào)用matlab程序的方法詳解

    ubuntu系統(tǒng)下C++調(diào)用matlab程序的方法詳解

    學(xué)習(xí)c++與matlab混合編程一般是通過c++調(diào)用matlab函數(shù),因?yàn)閙atlab具有強(qiáng)大的數(shù)學(xué)函數(shù)庫,然而vc++具有界面設(shè)計(jì)靈活的優(yōu)點(diǎn),下面這篇文章主要給大家介紹了關(guān)于在ubuntu系統(tǒng)下C++調(diào)用matlab程序的方法,需要的朋友可以參考下。
    2017-08-08
  • C++學(xué)習(xí)貝葉斯分類器實(shí)現(xiàn)手寫數(shù)字識(shí)別示例解析

    C++學(xué)習(xí)貝葉斯分類器實(shí)現(xiàn)手寫數(shù)字識(shí)別示例解析

    這篇文章主要介紹了在C++學(xué)習(xí)中如何采用貝葉斯分類器來實(shí)現(xiàn)手寫數(shù)字識(shí)別的示例及解析有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • C語言中的逗號(hào)運(yùn)算符詳解

    C語言中的逗號(hào)運(yùn)算符詳解

    在C語言中逗號(hào)“,”也是一種運(yùn)算符,稱為逗號(hào)運(yùn)算符,其功能是把兩個(gè)表達(dá)式連接起來組成一個(gè)表達(dá)式,?稱為逗號(hào)表達(dá)式,這篇文章主要介紹了C語言中的逗號(hào)運(yùn)算符,需要的朋友可以參考下
    2022-11-11
  • C++實(shí)現(xiàn)T型插補(bǔ)詳解

    C++實(shí)現(xiàn)T型插補(bǔ)詳解

    這篇文章主要介紹了C++實(shí)現(xiàn)T型插補(bǔ),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • C++實(shí)現(xiàn)順序排序算法簡單示例代碼

    C++實(shí)現(xiàn)順序排序算法簡單示例代碼

    這篇文章主要介紹了C++實(shí)現(xiàn)順序排序算法簡單示例代碼,對(duì)于學(xué)過C++的朋友一定不會(huì)陌生,現(xiàn)在重溫一下這個(gè)算法,需要的朋友可以參考下
    2014-08-08
  • C語言控制臺(tái)繪制曲線的實(shí)現(xiàn)代碼

    C語言控制臺(tái)繪制曲線的實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了C語言控制臺(tái)繪制曲線的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • C語言中二級(jí)指針的實(shí)例詳解

    C語言中二級(jí)指針的實(shí)例詳解

    這篇文章主要介紹了C語言中二級(jí)指針的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家掌握理解二級(jí)指針的知識(shí),需要的朋友可以參考下
    2017-10-10
  • C++靜態(tài)鏈接與動(dòng)態(tài)鏈接詳解

    C++靜態(tài)鏈接與動(dòng)態(tài)鏈接詳解

    下面小編就為大家介紹C++靜態(tài)鏈接與動(dòng)態(tài)鏈接。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-10-10
  • opencv提取輪廓大于某個(gè)閾值的圖像

    opencv提取輪廓大于某個(gè)閾值的圖像

    這篇文章主要為大家詳細(xì)介紹了opencv提取輪廓大于某個(gè)閾值的圖像,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++ Template應(yīng)用詳解

    C++ Template應(yīng)用詳解

    本篇文章主要介紹了C++ Template應(yīng)用詳解,模板(Template)指C++程序設(shè)計(jì)設(shè)計(jì)語言中采用類型作為參數(shù)的程序設(shè)計(jì),支持通用程序設(shè)計(jì)。
    2016-12-12

最新評(píng)論

莆田市| 鹤壁市| 南雄市| 共和县| 呼玛县| 兴化市| 江永县| 伊春市| 叙永县| 望城县| 桂东县| 凤冈县| 弥勒县| 高碑店市| 和平区| 哈尔滨市| 德格县| 惠水县| 肇州县| 大荔县| 三原县| 东辽县| 上林县| 宜兰县| 深圳市| 东丽区| 武乡县| 同德县| 苏州市| 确山县| 三原县| 罗平县| 安陆市| 绥江县| 元氏县| 当涂县| 冷水江市| 黄大仙区| 义乌市| 西乡县| 聂拉木县|