




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 課程設(shè)計報告書題 目 C語言的圖形編程應(yīng)用迷宮游戲 系 別 計算機工程系 專 業(yè) 計算機科學(xué)與技術(shù) 班 級 姓 名 指導(dǎo)教師 下達日期 2011 年 12 月 14 日設(shè)計時間自2011年12月 19日至2011年12月30日指導(dǎo)教師評語成績評定:指導(dǎo)教師簽字:年月日課程設(shè)計任務(wù)書一、目的和意義本課程設(shè)計是C語言程序設(shè)計課程的后繼教學(xué)環(huán)節(jié), 通過研究C語言中圖形編程技術(shù)或者聲音控制等其它方面的多媒體編程技術(shù),一方面拓展學(xué)生在這些領(lǐng)域的C語言知識,另一方面使學(xué)生在運用所學(xué)理論知識進行實踐開發(fā),更好的培養(yǎng)學(xué)生綜合學(xué)習(xí)能力和實踐能力。本次課程設(shè)計學(xué)生可以根據(jù)喜好,可以利用復(fù)雜的數(shù)據(jù)類型實現(xiàn)成績管理
2、系統(tǒng)等小型的綜合應(yīng)用程序。二、題目(可從下面題目中任選一個) 1、C語言的圖形編程應(yīng)用設(shè)計實現(xiàn)如菜單、圖形的顯示,再如動畫和小游戲。 2、簡易電子琴模擬程序的實現(xiàn)為實現(xiàn)在鍵盤模擬電子琴設(shè)計的程序。由學(xué)生自行設(shè)計并且實現(xiàn)。 3、成績管理程序?qū)W生本人設(shè)計具體方案,然后改進和編碼實現(xiàn)。三、課程設(shè)計報告書應(yīng)包括的主要內(nèi)容1、介紹概要的思路和設(shè)計方案,程序的總體功能和模塊劃分。2、 主要算法的介紹及流程圖,主要功能的實現(xiàn)手段的說明文檔。3、 對于有設(shè)想但最終未實現(xiàn)的功能的大致編程思路的闡述和設(shè)計過程中的啟發(fā)。四、進度要求1、設(shè)計時間:2011年12月19日至2011年12月25日2、編寫課程設(shè)計報告書:
3、2011年12月26日至2011年12月29日3、提交報告及答辯時間:2011年12月30日專科四、進度要求1、設(shè)計時間:2011年12月26日至2011年12月28日2、編寫課程設(shè)計報告書: 2011年12月29日3、提交報告及答辯時間:2011年12月30日目錄.程序設(shè)計目的·················3.運行環(huán)境········
4、3;···········3.程序功能······························3.程序設(shè)計內(nèi)容······
5、183;······················3.1設(shè)計界面····················3.2設(shè)計思路·····
6、················3.3流程圖······················4.4主要功能模塊·········
7、83;·····4.小結(jié)與啟發(fā)··························10.參考文獻················&
8、#183;·············11 .程序設(shè)計目的通過典型實例迷宮問題,加深對遞歸算法的理解和編制,掌握數(shù)組的運用。.運行環(huán)境主要在Windows 2000/XP操作系統(tǒng)TC下運行。.程序功能迷宮是深受大家喜愛的游戲之一,一般設(shè)計迷宮為二維平面圖,將迷宮的左上角做入口,右下角做出口,求出從入口點到出口點的一條通路,作為線性結(jié)構(gòu)的典型應(yīng)用,大多是用非遞歸方法實現(xiàn),輸出用0代表通路,1代表墻壁。而本程序生成一個美觀逼真的迷宮圖,它是隨機生成的且迷宮大小可以改變,迷
9、宮的大小為N*N,N預(yù)定義為常數(shù),修改N的值可以改變迷宮的大?。ㄖ灰怀^屏幕顯示范圍),而程序不必做修改。程序采用了兩種運行方式:一種系統(tǒng)自動運行探索,用遞歸方法實現(xiàn);一種是由人工操作探索通路,這利用了手動操作8個代表不同的方向的鍵位來實現(xiàn)。用白色表示可走的路,棕色表示墻壁不可以通過。 .程序設(shè)計內(nèi)容.1設(shè)計界面系統(tǒng)運行首先出現(xiàn)提示字符串“Please select hand(1)else auto”,詢問是選擇人工探索還是系統(tǒng)自動探索,當(dāng)用戶輸入字符1按回車鍵后出現(xiàn)一個迷宮圖,紅色矩形塊(表示探索物)出現(xiàn)在左上角,這是可以代表8個方向的字符選擇通路,遇到墻壁不能通行,按回車鍵結(jié)束探索,如果
10、這時探索物移動到右下角出口,則顯示找到通路信息,否則顯示沒找到通路信息。如圖1為人工探索通路的界面。在提示信息后,如果輸入的字符不是1,則系統(tǒng)自動查找通路,如果沒有找到通路,則顯示沒有找到通路信息。如果找到通路,則用紅色標(biāo)記走過的路徑。圖1.2設(shè)計思路程序首先要考慮迷宮的表示,這是一個二維關(guān)系圖,典型的存貯儲方式是選擇二維數(shù)組,數(shù)組元素的值只有兩種狀態(tài),所以取值為0或1,0表通路,1表示墻壁,這里取名為map。圖形的顯示就可以根據(jù)數(shù)組元素的值來確定。如果是人工探索,則根據(jù)按鍵來確定探索物的位置坐標(biāo),利用循環(huán)語句即可實現(xiàn);如果系統(tǒng)自動探索,并且在8個方向探索,則問題相對復(fù)雜,我們采用了遞歸的方法
11、實現(xiàn)。.3流程圖.4主要功能模塊共分為八個模塊:第一個模塊主函數(shù)main()的功能是:首先確定是人工還是系統(tǒng)自動探索,通過輸入字符選定。選定后調(diào)用圖形初始化函數(shù),接著調(diào)用迷宮生成函數(shù)及迷宮顯示函數(shù)。然后根據(jù)輸入的字符調(diào)用人工探索函數(shù)或自動探索函數(shù),探索完畢進行結(jié)果處理,最后關(guān)閉圖形系統(tǒng),程序結(jié)束。void main(void)/*主函數(shù)*/ int mapNN; /*迷宮數(shù)組*/ char ch; clrscr(); printf("n Please select hand(1) else auton");/*選擇探索方式*/ scanf("%c",&a
12、mp;ch); Init(); /*初始化*/ MapRand(map);/*生成迷宮*/ PrMap(map);/*顯示迷宮圖*/ if(ch='1') PeopleFind(map);/*人工探索*/ else FindWay(map,1,1);/*系統(tǒng)自動從下標(biāo)1,1的地方開始探索*/ Result();/*輸出結(jié)果*/ Close();第二個模塊初始化函數(shù)Init()的功能是:由于迷宮是在圖形方式下顯示的,所以要進行圖形初始化。由于學(xué)校提供的機子硬件所限定,圖形驅(qū)動器(gdriver)的符號常數(shù)為,圖形模式(gmode)的符號常數(shù)為,但我選擇自動檢測。void Init
13、(void)/*圖形初始化*/ int gd=DETECT,gm; initgraph(&gd,&gm,"c:tc"); 第三個模塊迷宮生成函數(shù)MapRand()的功能是: 用數(shù)組map表示一個迷宮,要隨機生成迷宮,數(shù)組元素的值利用隨機函數(shù)生成0或1的數(shù)。void MapRand(int (*map)N)/*開始的隨機迷宮圖*/ int i,j; cleardevice();/*清屏*/ randomize(); /*隨機數(shù)發(fā)生器*/ for(i=0;i<N;i+) for(j=0;j<N;j+) if(i=0|i=N-1|j=0|j=N-1)/
14、*最外面一圈為墻壁*/ mapij=1; else if(i=1&&j=1|i=N-2&&j=N-2)/*出發(fā)點與終點表示為可走的*/ mapij=0; else mapij=random(2);/*其它的隨機生成0或1*/ 第四個模塊迷宮顯示函數(shù)PrMap()的功能:根據(jù)數(shù)組map的值輸出迷宮圖,利用函數(shù)setfillstyle()設(shè)置圖形實體填充樣式bar()函數(shù)輸出矩形塊。數(shù)組元素的下標(biāo)為矩形塊的中心坐標(biāo),利用兩重循環(huán)語句可以完成迷宮圖的顯示。void PrMap(int (*map)N)/*輸出迷宮圖*/ int i,j; for(i=0;i<N;
15、i+) for(j=0;j<N;j+) if(mapij=0) setfillstyle(SOLID_FILL,WHITE);/*白色為可走的路*/ bar(100+j*15-6,50+i*15-6,100+j*15+6,50+i*15+6); else setfillstyle(SOLID_FILL,7);/*棕色為墻壁*/ bar(100+j*15-6,50+i*15-6,100+j*15+6,50+i*15+6); 第五個模塊系統(tǒng)自動FindWay()的功能:從下標(biāo)(1,1)開始探索,依次按照右下、下、右、右上、左、左下、左上的順序前進,若該方向上的值為0,則前進一步。int Fi
16、ndWay(int (*map)N,int i,int j)/*遞歸找路*/ if(i=N-2&&j=N-2)/*走到出口*/ yes=1;/*標(biāo)志為1,表示成功*/ return; mapij=1;/*走過的地方變?yōu)?*/ WayCopy(oldmap,map); /*拷貝迷宮圖*/ if(oldmapi+1j+1=0&&!yes)/*判斷右下方是否可走*/ FindWay(oldmap,i+1,j+1); if(yes)/*如果到達出口了,再把值賦給顯示路線的way數(shù)組,也正是這個原因,所以具體路線是從最后開始保存*/ waywayn0=i;waywayn+
17、1=j;return; WayCopy(oldmap,map); if(oldmapi+1j=0&&!yes)/*判斷下方是否可以走,如果標(biāo)志yes已經(jīng)是1也不用找下去了*/ FindWay(oldmap,i+1,j); if(yes)waywayn0=i;waywayn+1=j;return; WayCopy(oldmap,map); if(oldmapij+1=0&&!yes)/*判斷右方是否可以走*/ FindWay(oldmap,i,j+1); if(yes) waywayn0=i; waywayn+1=j; return; WayCopy(oldmap
18、,map); if(oldmapi-1j=0&&!yes)/*判斷上方是否可以走*/ FindWay(oldmap,i-1,j); if(yes) waywayn0=i; waywayn+1=j; return; WayCopy(oldmap,map); if(oldmapi-1j+1=0&&!yes)/*判斷右上方是否可以走*/ FindWay(oldmap,i-1,j+1); if(yes) waywayn0=i; waywayn+1=j; return; WayCopy(oldmap,map); if(oldmapi+1j-1=0&&!ye
19、s)/*判斷左下方是否可以走*/ FindWay(oldmap,i+1,j-1); if(yes) waywayn0=i; waywayn+1=j; return; WayCopy(oldmap,map); if(oldmapij-1=0&&!yes)/*判斷左方是否可以走*/ FindWay(oldmap,i,j-1); if(yes) waywayn0=i; waywayn+1=j; return; WayCopy(oldmap,map); if(oldmapi-1j-1=0&&!yes)/*判斷左上方是否可以走*/ FindWay(oldmap,i-1,j
20、-1); if(yes) waywayn0=i; waywayn+1=j; return; return;第六個模塊人工探索PeopleFind()的功能:首先輸出迷宮圖以及人工控制操作圖示,紅色探索出現(xiàn)在左上角,采用人工控制8個方向的移動,由于是8個方向,用光標(biāo)鍵只能控制4個方向,為了統(tǒng)一采用了臨近的8個字符,Q,W,E,A,D,Z,X,C代表8個方向,按了字符后,對應(yīng)方向不是墻壁,可以將紅色探索物移到相應(yīng)的位置,按回車表示結(jié)果人工操作。如果此時map數(shù)組元素的坐標(biāo)是出口,則yes的值為1,探索成功,否則值為0。由于探索物不停的移動,要在新位置顯示,并將走過的路恢復(fù)為白色通路,可以調(diào)用Dra
21、wPeople(&x,&y,n)完成.參數(shù)x和y代表所在的行坐標(biāo)和列坐標(biāo),n代表所選的方向,根據(jù)n的值,將x和y進行相應(yīng)的變化. void PeopleFind(int (*map)N)/*人工手動查找*/ int x,y; char c=0;/*接收按鍵的變量*/ x=y=1;/*人工查找的初始位置*/ setcolor(11); line(500,200,550,200); outtextxy(570,197,"d"); line(500,200,450,200); outtextxy(430,197,"a"); line(500,2
22、00,500,150); outtextxy(497,130,"w"); line(500,200,500,250); outtextxy(497,270,"x"); line(500,200,450,150); outtextxy(445,130,"q"); line(500,200,550,150); outtextxy(550,130,"e"); line(500,200,450,250); outtextxy(445,270,"z"); line(500,200,550,250); ou
23、ttextxy(550,270,"c");/*以上是畫8個方向的控制介紹*/ setcolor(YELLOW); outtextxy(430,290,"Press 'Enter' to end");/*壓回車鍵結(jié)束*/ setfillstyle(SOLID_FILL,RED); bar(100+y*15-6,50+x*15-6,100+y*15+6,50+x*15+6);/*入口位置顯示*/ while(c!=13)/*如果按下的不是回車鍵*/ c=getch();/*接收字符后開始各個方向的探索*/ if(c='w'&a
24、mp;&mapx-1y!=1)DrawPeople(&x,&y,1);/*上*/elseif(c='e'&&mapx-1y+1!=1)DrawPeople(&x,&y,2);/*右上*/elseif(c='d'&&mapxy+1!=1)DrawPeople(&x,&y,3);/*右*/elseif(c='c'&&mapx+1y+1!=1)DrawPeople(&x,&y,4);/*右下*/elseif(c='x'
25、&&mapx+1y!=1)DrawPeople(&x,&y,5);/*下*/elseif(c='z'&&mapx+1y-1!=1)DrawPeople(&x,&y,6); /*左下*/elseif(c='a'&&mapxy-1!=1)DrawPeople(&x,&y,7); /*左*/else if(c='q'&&mapx-1y-1!=1)DrawPeople(&x,&y,8); /*左上*/ setfillstyle(SOLID_FILL,WHITE); /*消去紅色探索物,恢復(fù)原迷宮圖*/ bar(100+y*15-6,50+x*15-6,100+y*15+6,50+x*15+6); if(x=N-2&&y=N-2)/*人工控制找成功的話*/ yes=1; /*如果成功標(biāo)志為1*/第七個模塊結(jié)果處理函數(shù)Res
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高考物理總復(fù)習(xí)高中物理易錯知識點匯編
- 護理質(zhì)量控制基礎(chǔ)護理
- 計算機二級MySQL寫作指導(dǎo)試題及答案
- 痤瘡激光治療臨床指南
- 醫(yī)學(xué)職業(yè)素養(yǎng)課件下載
- 護理輸血知識培訓(xùn)
- 高升專數(shù)學(xué)(文)全真模擬試題(2025年)解析版(含評分標(biāo)準(zhǔn)與技巧)
- 細節(jié)決定成敗計算機二級C++試題及答案
- 2025年江蘇省心理咨詢師職業(yè)資格考試試題及答案解析
- 廣西柳州市2024年中考二模英語試題
- 裝飾窗簾安裝內(nèi)部驗收單
- 三角掛籃施工方案剖析
- 同等學(xué)力哲學(xué)學(xué)科綜合考試大綱思考題匯總
- 2023年中醫(yī)兒科學(xué)考試題庫及答案(通用版)
- 骨科疑難病種清單(2021年版)
- 體育史-第三章-外國中古體育課件
- 閱讀肺功能課課件
- 農(nóng)村常用法律法規(guī)知識講座課件(村干部培訓(xùn))
- 人教版高中語文全五冊文言文注釋匯總1
- 電力工程電纜敷設(shè)記錄表
- 食品安全安全自查表
評論
0/150
提交評論