版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、石家莊經(jīng)濟(jì)學(xué)院 本科生課程設(shè)計(jì)報(bào)告書題 目 池塘夜降彩色雨系統(tǒng) 姓名 學(xué)號(hào) 學(xué) 院 信息工程學(xué)院 專業(yè) 計(jì)算機(jī)方向 指導(dǎo)教師 完成日期: 2012-07-04池塘夜降彩色雨系統(tǒng)1 需求分析設(shè)計(jì)一個(gè)程序,演示美麗的“池塘夜雨”景色:色彩繽紛的雨點(diǎn)飄飄灑灑地從天而降, 滴滴入水有聲,濺起圈圈微瀾。 具體要求:(1) 雨點(diǎn)在空中的出現(xiàn)位置、雨點(diǎn)大小、降落過程的可見程度、入水位置、顏色、最大水圈等,都是隨機(jī)確定的 ;(2) 多個(gè)雨點(diǎn)按照各自的隨機(jī)參數(shù)和存在狀態(tài),同時(shí)演示在屏幕上??梢赃m當(dāng)調(diào)整控制雨點(diǎn)密度、大小、漣漪和狀態(tài)變化的時(shí)間間隔等參數(shù)。該系統(tǒng)實(shí)現(xiàn)了池塘的夜晚,下起了五彩的雨點(diǎn)的自然現(xiàn)象。2 概要
2、設(shè)計(jì)該系統(tǒng)旨在描繪一幅池塘夜雨的動(dòng)態(tài)圖,因此應(yīng)該關(guān)注每一滴雨點(diǎn):(1) 每個(gè)雨點(diǎn)的存在周期可分為三個(gè)階段:從天而降、入水有聲和入水漣漪,需要一個(gè)記錄存儲(chǔ)其相關(guān)參數(shù)、當(dāng)前狀態(tài)和下一狀態(tài)的更新時(shí)刻。(2) 雨點(diǎn)下降的可見程度應(yīng)是斷斷續(xù)續(xù)、依稀可見;入水漣漪應(yīng)是由里至外逐漸擴(kuò)大和消失的。(3) 每個(gè)雨點(diǎn)發(fā)生時(shí),生成其記錄,并預(yù)置下一個(gè)雨點(diǎn)的發(fā)生時(shí)間。(4) 用一個(gè)適當(dāng)?shù)慕Y(jié)構(gòu)管理當(dāng)前存在的雨點(diǎn),使系統(tǒng)能利用它按時(shí)更新每個(gè)雨點(diǎn)的狀態(tài),一旦有雨點(diǎn)的水圈全部消失,就從結(jié)構(gòu)中刪去。根據(jù)以上的分析,可以將整個(gè)系統(tǒng)的數(shù)據(jù)類型定義如下 ADT graphList 數(shù)據(jù)對(duì)象:D=ai | ai Charset , I
3、 = 1,2,3,···,n, n0數(shù)據(jù)關(guān)系:R1=<ai-1,ai> | ai-1,aiD,ai-1<ai, I =2,···,n基本操作: initgraphics(void)操作結(jié)果;圖形模式的初始化rainDrop *creatDrop(void)操作結(jié)果;構(gòu)造雨點(diǎn)drawRainLine(struct rainDrop *p)初始條件:雨點(diǎn)已經(jīng)產(chǎn)生操作結(jié)果;畫雨點(diǎn)下落路線creatRain(void) 初始條件:雨點(diǎn)已經(jīng)產(chǎn)生操作結(jié)果;產(chǎn)生雨連續(xù)下落的效果setwinddirection(struct rai
4、nDrop *p)初始條件:雨點(diǎn)已經(jīng)開始下落操作結(jié)果:風(fēng)向的設(shè)置(無風(fēng),東風(fēng),西風(fēng)updateRainLineData(struct rainDrop *p)初始條件:雨點(diǎn)已經(jīng)產(chǎn)生操作結(jié)果;雨點(diǎn)的下落過程更改updateRainCircleData and floatradius(struct rainDrop *p)初始條件:雨點(diǎn)已經(jīng)出現(xiàn)且落在湖面上操作結(jié)果;水圈漣漪的設(shè)計(jì)rainDropDown(struct rainDrop *p)初始條件:雨點(diǎn)下落到湖面操作結(jié)果;使雨點(diǎn)在落到湖面上消失drawRainCircle(struct rainDrop *p)初始條件: 水圈漣漪已存在操作結(jié)果
5、;水圈漣漪的畫出clearRainLine(struct rainDrop *p)初始條件:雨點(diǎn)已經(jīng)出現(xiàn)且已經(jīng)畫出了一段痕跡操作結(jié)果;清除雨點(diǎn)的滑落路線 clearRainCircle(struct rainDrop *p)初始條件:水圈漣漪已存在操作結(jié)果;清除水圈漣漪clearAll(void)操作結(jié)果:清除所有ADT graphList程序的主要模塊包括四個(gè)部分:(1) 主函數(shù)void(main)(2) 設(shè)定雨滴大小creatDrop(void) struct rainDrop *p rainLineLength(struct rainDrop *p)(3) 風(fēng)向的設(shè)置 setWindDi
6、rection(struct rainDrop *p)(4) 結(jié)束 end各大模塊的調(diào)用關(guān)系:主程序 雨滴的設(shè)置3 詳細(xì)設(shè)計(jì)Struct rainCircle/定義水圈的相關(guān)數(shù)據(jù)/橫坐標(biāo)、縱坐標(biāo)、路線步驟、水圈半徑int x;/橫坐標(biāo)int y;/縱坐標(biāo)int cutR;/水圈初始半徑int r;/水圈變化后的半徑int rainCircleStep;/水圈產(chǎn)生的步驟Struct raindrop/定義雨點(diǎn)下落的過程的數(shù)據(jù)int startX;/開始的橫坐標(biāo)int startY;/開始的縱坐標(biāo)int endY;/結(jié)束的縱坐標(biāo)int curX;/每個(gè)雨點(diǎn)消失的橫坐標(biāo)int curY;/ 每個(gè)雨點(diǎn)
7、消失的縱坐標(biāo)int rainColor;/雨點(diǎn)的的顏色int rainLineStep;/雨點(diǎn)下落的路徑int rainLineLength;/雨點(diǎn)的長(zhǎng)度int status;/判斷是否到達(dá)湖面struct rainCircle water;/產(chǎn)生漣漪struct raindrop *next;/指向下一顆雨點(diǎn)Void initgraphics(void) /圖形函數(shù)的初始化int gmodegdiver;gdriver=DETECT;initgraph(&gdriver,&gmode,”D:TC”)/其中g(shù)driver和gmode分別表示圖形驅(qū)動(dòng)器和模式,“D:TC”是指的圖
8、形驅(qū)動(dòng)程序所在的目錄路徑Struct raindrop *creatDrop(void)/雨點(diǎn)開始產(chǎn)生時(shí)的隨機(jī)設(shè)置Struct raindrop *p;P=(struct raindrop *)molloc(LEN);p->startX=rand()%640;/隨機(jī)產(chǎn)生的位置Xp->startY=rand()%430;/隨機(jī)產(chǎn)生的位置Yp->endY=430+rand()%50;/結(jié)束坐標(biāo)p->curX= p->startX;/每個(gè)雨點(diǎn)消失的橫坐標(biāo)p->curY= p->startY;/每個(gè)雨點(diǎn)消失的縱坐標(biāo)p->rainLineStep=8:/共
9、分8個(gè)步驟p->rainColor=rand()%15+1;/彩色的隨機(jī)產(chǎn)生p->rainLineLenth=rand()%10+10;/雨點(diǎn)大小的隨即產(chǎn)生p->status=0;p->water.x= p->startX;p->water.y= p->startY;/隨機(jī)產(chǎn)生的漣漪的位置p->water.r=p->rand()%45;/隨機(jī)產(chǎn)生漣漪的半徑p->water.curR=rand()%3;/漣漪消失的半徑p->water.rainCircleStep=rand()%3+1;p->next=NULL;return
10、(p);Void recreat atDrop(struct raindrop *p)/重復(fù)產(chǎn)生雨點(diǎn)p->startX=rand()%640;/隨機(jī)產(chǎn)生的位置Xp->startY=rand()%430;/隨機(jī)產(chǎn)生的位置Yp->endY=430+rand()%50;/結(jié)束坐標(biāo)p->curX= p->startX;/每個(gè)雨點(diǎn)消失的橫坐標(biāo)p->curY= p->startY;/每個(gè)雨點(diǎn)消失的縱坐標(biāo)p->rainLineStep=8:/共分8個(gè)步驟p->rainColor=rand()%15+1;/彩色的隨機(jī)產(chǎn)生p->rainLineLent
11、h=rand()%10+10;/雨點(diǎn)大小的隨即產(chǎn)生p->status=0;p->water.x= p->startX;p->water.y= p->startY;/隨機(jī)產(chǎn)生的漣漪的位置p->water.r=p->rand()%45;/隨機(jī)產(chǎn)生漣漪的半徑p->water.curR=rand()%3;/漣漪消失的半徑p->water.rainCircleStep=rand()%3+1;Void creatRain(void)/重復(fù)雨點(diǎn)的產(chǎn)生,使之連續(xù)不斷Struct rainDrop *p1*p2;Int I;p1=p2=creatDrop()
12、;head=p1;for(i=0;inext=p2;)p1=p2;Void updateRainLineData(struct rainDrop *p)/每次下落雨點(diǎn)的數(shù)目If(p->rainLineStep%5=0)p->rainLineStep+;p->curY+= p->rainLineStep;p->startY=p->curY- p->rainLineLength;Void drawRainLine(struct rainDrop *p)/雨點(diǎn)下落的軌跡switch(p->rainColor) case 0: setcolor(RED)
13、 ; break ;case 1: setcolor(GREEN) ; break; case 2: setcolor(BLUE) ; break; case 3: setcolor(CYAN) ; break; case 4: setcolor(MAGENTA) ;break; case 5: setcolor(BROWN) ; break; case 6: setcolor(LIGHTRED) ;break; case 7: setcolor(LIGHTMAGENTA) ; break; case 8: setcolor(WHITE) ;break; case 9: setcolor(LI
14、GHTGRAY) ; break; case 10: setcolor(DARKGRAY) ; break; case 11: setcolor(LIGHTBLUE) ; break; case 12: setcolor(LIGHTGREEN) ; break; case 13: setcolor(LIGHTCYAN) ; break; case 14: setcolor(YELLOW) ;break; system("pause"); setlinestyle(0,0,1);line(p->startX,p->startY,p->curX+w,p->
15、;curY+5); /w表示終點(diǎn)坐標(biāo)相對(duì)初始點(diǎn)產(chǎn)生的偏移,使之產(chǎn)生風(fēng)的效果void clearRainLine(struct rainDrop *p)/清除雨點(diǎn)的軌跡setcolor(BLACK);line(p->startX,p->startY,p->curX+w,p->cueY+5); Void rainDropDown(struct rainDrop *p)/構(gòu)造雨點(diǎn)的下落效果/如果發(fā)生坐標(biāo)大于結(jié)束坐標(biāo),雨點(diǎn)的下落效果產(chǎn)生;If(p->curY>=p->endY)clearRainLine(p);p->status=1;elseclear
16、RainLine(p);/清除原來雨點(diǎn)的軌跡updateRainLineData(p);/產(chǎn)生新雨點(diǎn)的線路drawRainLine(p);/畫出新路線Void updateRainCircleData(struct rainDrop *p) /漣漪的消失半徑p->water.curR+=p->water.rainCircleStep;Void drawRainCircle(struct rainDrop *p) /畫出漣漪setcolor(p->rainColor);circle(p->water.x,p->water.y,p->water.curR);Vo
17、id clearRainCircle(struct rainDrop *p) /清除漣漪setcolor(BLACK);circle(p->water.x,p->water.y,p->water.curR);Void fallToWater(struct rainDrop *p) /落水動(dòng)畫if(p->water.curR>=p->water.r)clearRainCircle(p);recreatDrop(p);elseclearRainCircle(p);updateRainCircleData(p);drawRainCircle(p);Void rai
18、n(void) /下雨動(dòng)畫struct rainDrop *p;p=head;while(!kbhit()if(p=NUll)p=head;elseif(p->bottom=0)rainDropDown(p);elsefallToWater(p);dalay(downDelay);p=p->next;Void clearAll(void) /清除所有;struct rainDrop *p*pf;p=head;while(p!=NUll)pf=p;p=p->next;free(pf);closegraph(); /關(guān)閉圖像主函數(shù)void main()printf("-
19、Colorful Rain-n"); printf("請(qǐng)用戶輸入雨滴數(shù)量:");/請(qǐng)用戶輸入雨滴數(shù)量 scanf("%d",&rainDropNumber); printf("請(qǐng)用戶輸入下雨的速度:");/輸入下雨的速度 scanf("%d",&downSpeed);printf("請(qǐng)用戶輸入風(fēng)速(-3,-2,-1,0,1,2,3):");/輸入風(fēng)力,負(fù)號(hào)向左,正號(hào)向右; scanf("%d",&w); rand(); initgraphic
20、s(); setbkcolor(BLACK);/設(shè)置背景為黑色 setfillstyle(BLUE); /畫出池塘并將其填充為 藍(lán)色 bar(0, 390, 640, 480); creatRain(); rain(); clearAll();開始輸入雨點(diǎn)數(shù)量輸入雨速輸入風(fēng)向畫出雨點(diǎn)路徑會(huì)出夜幕和池塘產(chǎn)生雨點(diǎn)清除雨點(diǎn)路徑畫出水圈關(guān)閉圖形是否繼續(xù)清除水圈結(jié)束否是4 編碼調(diào)試輸入界面:雨滴數(shù)目;雨下落速度;風(fēng)向以及大小輸入:雨量:0 速度:0 風(fēng)力:0輸入:雨量:50 速度:0 風(fēng)力:0 輸入:雨量:50 速度:1 風(fēng)力:3輸入:雨量:150 速度:0 風(fēng)力:-3輸入:雨量:500 速度:0 風(fēng)力:-35 設(shè)計(jì)體會(huì)1. 本次課程設(shè)計(jì)是模擬夜幕之中的池塘降落五彩雨滴的動(dòng)態(tài)過程。在開始選擇這個(gè)題目的時(shí)候基本是憑著名字吸引,但是通過書本、網(wǎng)絡(luò)明白了本實(shí)驗(yàn)旨在演示美麗的“池塘夜雨”景色:色彩繽紛的雨點(diǎn)飄飄灑灑地從天而降, 滴滴入水有聲,濺起圈圈微瀾。調(diào)試過程中:一開始就在VC中編程,但是VC中沒有g(shù)raphics.h 文件,通過上網(wǎng)搜索終于解決了。但是之后又遇到了VC無法實(shí)現(xiàn)彩色雨的顯示,通過老師的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 三農(nóng)產(chǎn)品電商市場(chǎng)信用體系建設(shè)與監(jiān)管措施
- 文化傳播公司文化產(chǎn)品推廣與市場(chǎng)拓展策略
- 2023學(xué)校后勤管理制度范本(20篇)
- 居里夫人的故事解讀
- 做賬實(shí)操-藝術(shù)品拍賣公司賬務(wù)處理分錄實(shí)例
- 做賬實(shí)操-注塑廠賬務(wù)處理分錄實(shí)例
- 物業(yè)清潔地面護(hù)理方案
- 卷09-完形填空沖刺2023年高考英語小題限時(shí)集訓(xùn)(原卷版)
- 羧酸、羧酸的衍生物(第4課時(shí)-胺、酰胺)(習(xí)題精練)(解析版)
- 第09講-常見的天氣系統(tǒng)和天氣解讀(講義)(新教材新高考)(原卷版)
- 《金屬基增容導(dǎo)線技術(shù)條件+第2部分:鋁包殷鋼芯耐熱鋁合金絞線》
- 園藝植物栽培學(xué)智慧樹知到期末考試答案章節(jié)答案2024年浙江農(nóng)林大學(xué)
- 新部編人教版語文三年級(jí)下冊(cè)寫字表字帖
- (新版)初級(jí)教練員資格理論考試題庫(濃縮500題)
- 村委會(huì)地震演練方案及流程
- 【真題】2023年徐州市中考道德與法治試卷(含答案解析)
- 血栓彈力圖 (課件)
- 人行梯籠專項(xiàng)施工方案
- 死因監(jiān)測(cè)工作總結(jié)
- 2024年中國(guó)華融資產(chǎn)管理股份有限公司招聘筆試參考題庫含答案解析
- 邊防知識(shí)講座
評(píng)論
0/150
提交評(píng)論