版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、石家莊經(jīng)濟學(xué)院 本科生課程設(shè)計報告書題 目 池塘夜降彩色雨系統(tǒng) 姓名 學(xué)號 學(xué) 院 信息工程學(xué)院 專業(yè) 計算機方向 指導(dǎo)教師 完成日期: 2012-07-04池塘夜降彩色雨系統(tǒng)1 需求分析設(shè)計一個程序,演示美麗的“池塘夜雨”景色:色彩繽紛的雨點飄飄灑灑地從天而降, 滴滴入水有聲,濺起圈圈微瀾。 具體要求:(1) 雨點在空中的出現(xiàn)位置、雨點大小、降落過程的可見程度、入水位置、顏色、最大水圈等,都是隨機確定的 ;(2) 多個雨點按照各自的隨機參數(shù)和存在狀態(tài),同時演示在屏幕上??梢赃m當(dāng)調(diào)整控制雨點密度、大小、漣漪和狀態(tài)變化的時間間隔等參數(shù)。該系統(tǒng)實現(xiàn)了池塘的夜晚,下起了五彩的雨點的自然現(xiàn)象。2 概要
2、設(shè)計該系統(tǒng)旨在描繪一幅池塘夜雨的動態(tài)圖,因此應(yīng)該關(guān)注每一滴雨點:(1) 每個雨點的存在周期可分為三個階段:從天而降、入水有聲和入水漣漪,需要一個記錄存儲其相關(guān)參數(shù)、當(dāng)前狀態(tài)和下一狀態(tài)的更新時刻。(2) 雨點下降的可見程度應(yīng)是斷斷續(xù)續(xù)、依稀可見;入水漣漪應(yīng)是由里至外逐漸擴大和消失的。(3) 每個雨點發(fā)生時,生成其記錄,并預(yù)置下一個雨點的發(fā)生時間。(4) 用一個適當(dāng)?shù)慕Y(jié)構(gòu)管理當(dāng)前存在的雨點,使系統(tǒng)能利用它按時更新每個雨點的狀態(tài),一旦有雨點的水圈全部消失,就從結(jié)構(gòu)中刪去。根據(jù)以上的分析,可以將整個系統(tǒng)的數(shù)據(jù)類型定義如下 ADT graphList 數(shù)據(jù)對象: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)造雨點drawRainLine(struct rainDrop *p)初始條件:雨點已經(jīng)產(chǎn)生操作結(jié)果;畫雨點下落路線creatRain(void) 初始條件:雨點已經(jīng)產(chǎn)生操作結(jié)果;產(chǎn)生雨連續(xù)下落的效果setwinddirection(struct rai
4、nDrop *p)初始條件:雨點已經(jīng)開始下落操作結(jié)果:風(fēng)向的設(shè)置(無風(fēng),東風(fēng),西風(fēng)updateRainLineData(struct rainDrop *p)初始條件:雨點已經(jīng)產(chǎn)生操作結(jié)果;雨點的下落過程更改updateRainCircleData and floatradius(struct rainDrop *p)初始條件:雨點已經(jīng)出現(xiàn)且落在湖面上操作結(jié)果;水圈漣漪的設(shè)計rainDropDown(struct rainDrop *p)初始條件:雨點下落到湖面操作結(jié)果;使雨點在落到湖面上消失drawRainCircle(struct rainDrop *p)初始條件: 水圈漣漪已存在操作結(jié)果
5、;水圈漣漪的畫出clearRainLine(struct rainDrop *p)初始條件:雨點已經(jīng)出現(xiàn)且已經(jīng)畫出了一段痕跡操作結(jié)果;清除雨點的滑落路線 clearRainCircle(struct rainDrop *p)初始條件:水圈漣漪已存在操作結(jié)果;清除水圈漣漪clearAll(void)操作結(jié)果:清除所有ADT graphList程序的主要模塊包括四個部分:(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 詳細設(shè)計Struct rainCircle/定義水圈的相關(guān)數(shù)據(jù)/橫坐標、縱坐標、路線步驟、水圈半徑int x;/橫坐標int y;/縱坐標int cutR;/水圈初始半徑int r;/水圈變化后的半徑int rainCircleStep;/水圈產(chǎn)生的步驟Struct raindrop/定義雨點下落的過程的數(shù)據(jù)int startX;/開始的橫坐標int startY;/開始的縱坐標int endY;/結(jié)束的縱坐標int curX;/每個雨點消失的橫坐標int curY;/ 每個雨點
7、消失的縱坐標int rainColor;/雨點的的顏色int rainLineStep;/雨點下落的路徑int rainLineLength;/雨點的長度int status;/判斷是否到達湖面struct rainCircle water;/產(chǎn)生漣漪struct raindrop *next;/指向下一顆雨點Void initgraphics(void) /圖形函數(shù)的初始化int gmodegdiver;gdriver=DETECT;initgraph(&gdriver,&gmode,”D:TC”)/其中g(shù)driver和gmode分別表示圖形驅(qū)動器和模式,“D:TC”是指的圖
8、形驅(qū)動程序所在的目錄路徑Struct raindrop *creatDrop(void)/雨點開始產(chǎn)生時的隨機設(shè)置Struct raindrop *p;P=(struct raindrop *)molloc(LEN);p->startX=rand()%640;/隨機產(chǎn)生的位置Xp->startY=rand()%430;/隨機產(chǎn)生的位置Yp->endY=430+rand()%50;/結(jié)束坐標p->curX= p->startX;/每個雨點消失的橫坐標p->curY= p->startY;/每個雨點消失的縱坐標p->rainLineStep=8:/共
9、分8個步驟p->rainColor=rand()%15+1;/彩色的隨機產(chǎn)生p->rainLineLenth=rand()%10+10;/雨點大小的隨即產(chǎn)生p->status=0;p->water.x= p->startX;p->water.y= p->startY;/隨機產(chǎn)生的漣漪的位置p->water.r=p->rand()%45;/隨機產(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)生雨點p->startX=rand()%640;/隨機產(chǎn)生的位置Xp->startY=rand()%430;/隨機產(chǎn)生的位置Yp->endY=430+rand()%50;/結(jié)束坐標p->curX= p->startX;/每個雨點消失的橫坐標p->curY= p->startY;/每個雨點消失的縱坐標p->rainLineStep=8:/共分8個步驟p->rainColor=rand()%15+1;/彩色的隨機產(chǎn)生p->rainLineLent
11、h=rand()%10+10;/雨點大小的隨即產(chǎn)生p->status=0;p->water.x= p->startX;p->water.y= p->startY;/隨機產(chǎn)生的漣漪的位置p->water.r=p->rand()%45;/隨機產(chǎn)生漣漪的半徑p->water.curR=rand()%3;/漣漪消失的半徑p->water.rainCircleStep=rand()%3+1;Void creatRain(void)/重復(fù)雨點的產(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)/每次下落雨點的數(shù)目If(p->rainLineStep%5=0)p->rainLineStep+;p->curY+= p->rainLineStep;p->startY=p->curY- p->rainLineLength;Void drawRainLine(struct rainDrop *p)/雨點下落的軌跡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表示終點坐標相對初始點產(chǎn)生的偏移,使之產(chǎn)生風(fēng)的效果void clearRainLine(struct rainDrop *p)/清除雨點的軌跡setcolor(BLACK);line(p->startX,p->startY,p->curX+w,p->cueY+5); Void rainDropDown(struct rainDrop *p)/構(gòu)造雨點的下落效果/如果發(fā)生坐標大于結(jié)束坐標,雨點的下落效果產(chǎn)生;If(p->curY>=p->endY)clearRainLine(p);p->status=1;elseclear
16、RainLine(p);/清除原來雨點的軌跡updateRainLineData(p);/產(chǎ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) /落水動畫if(p->water.curR>=p->water.r)clearRainCircle(p);recreatDrop(p);elseclearRainCircle(p);updateRainCircleData(p);drawRainCircle(p);Void rai
18、n(void) /下雨動畫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("請用戶輸入雨滴數(shù)量:");/請用戶輸入雨滴數(shù)量 scanf("%d",&rainDropNumber); printf("請用戶輸入下雨的速度:");/輸入下雨的速度 scanf("%d",&downSpeed);printf("請用戶輸入風(fēng)速(-3,-2,-1,0,1,2,3):");/輸入風(fēng)力,負號向左,正號向右; scanf("%d",&w); rand(); initgraphic
20、s(); setbkcolor(BLACK);/設(shè)置背景為黑色 setfillstyle(BLUE); /畫出池塘并將其填充為 藍色 bar(0, 390, 640, 480); creatRain(); rain(); clearAll();開始輸入雨點數(shù)量輸入雨速輸入風(fēng)向畫出雨點路徑會出夜幕和池塘產(chǎ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è)計體會1. 本次課程設(shè)計是模擬夜幕之中的池塘降落五彩雨滴的動態(tài)過程。在開始選擇這個題目的時候基本是憑著名字吸引,但是通過書本、網(wǎng)絡(luò)明白了本實驗旨在演示美麗的“池塘夜雨”景色:色彩繽紛的雨點飄飄灑灑地從天而降, 滴滴入水有聲,濺起圈圈微瀾。調(diào)試過程中:一開始就在VC中編程,但是VC中沒有g(shù)raphics.h 文件,通過上網(wǎng)搜索終于解決了。但是之后又遇到了VC無法實現(xiàn)彩色雨的顯示,通過老師的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度井蓋專利技術(shù)許可與轉(zhuǎn)讓合同3篇
- 2025年度新型建材鋼管租賃服務(wù)合同
- 二零二五年度家電產(chǎn)品銷售合同協(xié)議范本3篇
- 2025年度二手房屋買賣居間服務(wù)合同范本全新升級版
- 2025年度預(yù)制構(gòu)件裝配式建筑項目風(fēng)險評估與保險合同
- 二零二五年度跑步賽事場地設(shè)施租賃合同4篇
- 二零二五年度古建筑修繕泥工班組專業(yè)施工合同4篇
- 2025版民爆物品裝卸作業(yè)應(yīng)急救援預(yù)案合同3篇
- 2025年墻體改梁與裝配式建筑技術(shù)應(yīng)用合同3篇
- 2025版二零二五年度商鋪租賃合同租賃物保險條款3篇
- 礦物加工工程基礎(chǔ)知識單選題100道及答案解析
- 2024年同等學(xué)力申碩英語考試真題
- 世說新語原文及翻譯-副本
- 消除“艾梅乙”醫(yī)療歧視-從我做起
- 非遺文化走進數(shù)字展廳+大數(shù)據(jù)與互聯(lián)網(wǎng)系創(chuàng)業(yè)計劃書
- 2024山西省文化旅游投資控股集團有限公司招聘筆試參考題庫附帶答案詳解
- 科普知識進社區(qū)活動總結(jié)與反思
- 加油站廉潔培訓(xùn)課件
- 現(xiàn)金日記賬模板(帶公式)
- 消化內(nèi)科??票O(jiān)測指標匯總分析
- 深圳市物業(yè)專項維修資金管理系統(tǒng)操作手冊(電子票據(jù))
評論
0/150
提交評論