版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> C語(yǔ)言課程設(shè)計(jì)報(bào)告</b></p><p> 題目:交通模擬導(dǎo)航系統(tǒng)</p><p><b> 目 錄</b></p><p><b> 引言3</b></p><p><b> 1.1背景3</b></p&
2、gt;<p><b> 1.2參考資料3</b></p><p><b> 需求分析3</b></p><p><b> 2.1需求分析3</b></p><p><b> 2.2運(yùn)行環(huán)境3</b></p><p><b
3、> 系統(tǒng)設(shè)計(jì)3</b></p><p><b> 3.1模塊劃分3</b></p><p><b> 3.2功能簡(jiǎn)介3</b></p><p><b> 3.3時(shí)間安排3</b></p><p> 3.4程序簡(jiǎn)要流程圖3</p>
4、<p><b> 3.5核心算法3</b></p><p><b> 源代碼3</b></p><p><b> 引言</b></p><p><b> 1.1背景</b></p><p><b> 車載GPS導(dǎo)航儀:
5、</b></p><p> 隨著汽車的普及和道路的建設(shè),城際間的經(jīng)濟(jì)往來(lái)更加頻繁,活動(dòng)的區(qū)域也越來(lái)越大;為了提高生活質(zhì)量,大量的休閑活動(dòng)、探險(xiǎn)活動(dòng)的舉行使我們并不局限在自己認(rèn)識(shí)的一小塊區(qū)域中,不認(rèn)識(shí)道路,找不到目的地的情況也屢有發(fā)生,就此,車載GPS導(dǎo)航儀將會(huì)以合適的價(jià)位走入車主的世界,成為車上的基本裝備。車載GPS導(dǎo)航儀解決方案,其實(shí)是最靈活和最復(fù)雜的,車載GPS導(dǎo)航儀有很多種解決方案可以滿足車載
6、的需要。</p><p> GPS汽車導(dǎo)航是將GPS和地理信息系統(tǒng)、現(xiàn)代通訊技術(shù)綜合在一起,研制成的一種新型汽車導(dǎo)航定位設(shè)備,具備監(jiān)控、調(diào)度、報(bào)警、遙控熄火和遙控?cái)嘤?、自?dòng)存檔、系統(tǒng)自檢等功能。它可將汽車的任何動(dòng)態(tài)位置隨時(shí)準(zhǔn)確無(wú)誤地顯示在儀器的電子地圖上。導(dǎo)航儀的電子地圖自動(dòng)跟蹤顯示汽車當(dāng)前位置及周邊情況,駕駛員可隨時(shí)在導(dǎo)航儀上查詢周邊一定半徑地區(qū)內(nèi)的地理信息。</p><p> 交通
7、模擬導(dǎo)航系統(tǒng)能夠簡(jiǎn)單地模擬GPS汽車導(dǎo)航系統(tǒng)。在建立一個(gè)簡(jiǎn)單的小型化城市地圖的基礎(chǔ)上,能對(duì)該城市內(nèi)指定的車輛提供導(dǎo)航。</p><p><b> 1.2參考資料</b></p><p> 王士元. C高級(jí)實(shí)用程序設(shè)計(jì). 北京: 清華大學(xué)出版社. 1996</p><p> 周純杰,劉正林等. 標(biāo)準(zhǔn)C語(yǔ)言程序及應(yīng)用. 武漢: 華中科技大學(xué)出
8、版社. 2005</p><p> 姚遠(yuǎn). 高級(jí)C語(yǔ)言程序設(shè)計(jì)技巧與實(shí)例. 北京: 機(jī)械工業(yè)出版社, 1995</p><p> 陳清華, 朱紅. C語(yǔ)言課程設(shè)計(jì). 南京: 東南大學(xué)出版社, 2003</p><p> 潭浩強(qiáng). C語(yǔ)言程序設(shè)計(jì). 北京: 清華大學(xué)出版社, 2000</p><p> 劉振安 ,蘇仕華 . C語(yǔ)言圖形
9、設(shè)計(jì) 北京:人民郵電出版社,1995</p><p> 潘建華 ,衛(wèi)躍文. C語(yǔ)言實(shí)用軟件界面設(shè)計(jì) 西安:西安電子科大出版社,1995</p><p> 鴻健編譯. c語(yǔ)言高級(jí)程序員編程指南 北京:北京希望電腦公司公司,1991 好友指導(dǎo): 彭軍才 程攀 </p><p><b> 需求分析</b></p>&
10、lt;p><b> 2.1需求分析</b></p><p> 由于GPS技術(shù)所具有的全天候、高精度和自動(dòng)測(cè)量的特點(diǎn),作為先進(jìn)的測(cè)量手段和新的生產(chǎn)力,已經(jīng)融入了國(guó)民經(jīng)濟(jì)建設(shè)、國(guó)防建設(shè)和社會(huì)發(fā)展的各個(gè)應(yīng)用領(lǐng)域?! ?lt;/p><p> 隨著冷戰(zhàn)結(jié)束和全球經(jīng)濟(jì)的蓬勃發(fā)展,美國(guó)政府宣布2000年至2006年期間,在保證美國(guó)國(guó)家安全不受威脅的前提下,取消SA政策,GP
11、S民用信號(hào)精度在全球范圍內(nèi)得到改善,利用C/A碼進(jìn)行單點(diǎn)定位的精度由100米提高到20米,這將進(jìn)一步推動(dòng)GPS技術(shù)的應(yīng)用,提高生產(chǎn)力、作業(yè)效率、科學(xué)水平以及人們的生活質(zhì)量,刺激GPS市場(chǎng)的增長(zhǎng)。據(jù)有關(guān)專家預(yù)測(cè),在美國(guó),單單是汽車GPS導(dǎo)航系統(tǒng),2000年后的市場(chǎng)將達(dá)到30億美元,而在我國(guó),汽車導(dǎo)航的市場(chǎng)也將達(dá)到50億元人民幣??梢?jiàn),GPS技術(shù)市場(chǎng)的應(yīng)用前景非??捎^。</p><p> 我們用TC3.0編寫(xiě)的C語(yǔ)
12、言程序來(lái)模擬導(dǎo)航欄儀的各種操作過(guò)程。</p><p> GPS導(dǎo)航儀的常用功能大致有:</p><p><b> 1.地圖查詢</b></p><p> 可以在操作終端上搜索你要去的目的地位置。</p><p> 可以記錄你常要去的地方的位置信息,并保留下來(lái)。</p><p><b&
13、gt; 2.路線規(guī)劃</b></p><p> GPS導(dǎo)航系統(tǒng)會(huì)根據(jù)你設(shè)定的起始點(diǎn)和目的地,自動(dòng)規(guī)劃一條線路。</p><p> 規(guī)劃線路可以設(shè)定是否要經(jīng)過(guò)某些途徑點(diǎn)。</p><p><b> 3.自動(dòng)導(dǎo)航 </b></p><p> 語(yǔ)音導(dǎo)航:用提前向駕駛者提供路口轉(zhuǎn)向,導(dǎo)航系統(tǒng)狀況等行車信
14、息,就像一個(gè)懂路的向?qū)Ц嬖V你如何駕車去目的地一樣。導(dǎo)航中最重要的一個(gè)功能,使你無(wú)需觀看操作終端,通過(guò)語(yǔ)音提示就可以安全到達(dá)目的地。 </p><p> 畫(huà)面導(dǎo)航:在操作終端上,會(huì)顯示地圖,以及車子現(xiàn)在的位置,行車速度,目的地的距離,規(guī)劃的路線提示,路口轉(zhuǎn)向提示的行車信息。 </p><p> 因?yàn)樵贒OS環(huán)境下編程模擬,所以只模擬了部分功能,如下:</p><
15、;p> 交通模擬導(dǎo)航系統(tǒng)提供在華科校園內(nèi)導(dǎo)航的功能;</p><p> 進(jìn)入系統(tǒng)后,可選擇進(jìn)行幫助、退出或?qū)Ш剑?lt;/p><p> 選擇退出,則直接退出程序。</p><p> 選擇導(dǎo)航,則進(jìn)入導(dǎo)航界面:選擇路徑(車輛的起始點(diǎn)自動(dòng)讀取上一次所到達(dá)的目的地,選擇終點(diǎn),可以選擇必經(jīng)地),選完路線后系統(tǒng)將會(huì)在地圖上用粗線標(biāo)出路線圖,選擇導(dǎo)航開(kāi)始,進(jìn)入模擬導(dǎo)航
16、模式,用鍵盤控制小車的運(yùn)動(dòng)。過(guò)程中現(xiàn)實(shí)路程和時(shí)間;</p><p> 周邊查詢:選擇位置,就可以顯示出附近的建筑;</p><p> 幫助,則進(jìn)入幫助界面,幫助如何使用導(dǎo)航系統(tǒng);</p><p><b> 直接退出;</b></p><p> 系統(tǒng)會(huì)提前對(duì)即將經(jīng)過(guò)的紅綠燈進(jìn)行提醒</p><p
17、> ?。ㄒ陨蠟槌跗谠O(shè)計(jì)思路)</p><p><b> 2.2運(yùn)行環(huán)境 </b></p><p> 交通模擬導(dǎo)航系統(tǒng)是對(duì)GPS汽車導(dǎo)航系統(tǒng)的模擬,系統(tǒng)的開(kāi)發(fā)基于C語(yǔ)言, 其設(shè)計(jì)環(huán)境要求,是在DOS環(huán)境下用C語(yǔ)言編程實(shí)現(xiàn),使用TC或BC開(kāi)發(fā)軟件,因此,交通模擬導(dǎo)航系統(tǒng)能夠在絕大多數(shù)計(jì)算機(jī)系統(tǒng)上運(yùn)行,包括常見(jiàn)的windows XP操作系統(tǒng)及windows 7 3
18、2位機(jī)上運(yùn)行,但是由于BC在64位的windows 7下無(wú)法運(yùn)行,且BC或TC在windows 7下不能較好地解決全屏問(wèn)題,因而,推薦在windows XP的環(huán)境下測(cè)試運(yùn)行此交通模擬導(dǎo)航系統(tǒng)。</p><p><b> 系統(tǒng)設(shè)計(jì)</b></p><p><b> 3.1模塊劃分</b></p><p> 圖形界面模塊
19、:主要包括動(dòng)畫(huà),主界面,菜單和地圖,標(biāo)出導(dǎo)航路線。</p><p> 鼠標(biāo)模塊:包括鼠標(biāo)的圖形,鼠標(biāo)狀態(tài)。</p><p> 漢字模塊:漢字輸出。</p><p> 控制模塊:控制小車運(yùn)動(dòng),分為自動(dòng)和手動(dòng)。</p><p> 算法模塊:計(jì)算最優(yōu)路徑,地杰斯特拉算法。</p><p> 文件模塊:保存小車的位置
20、路徑等信息。</p><p><b> 菜單模塊:顯示菜單</b></p><p><b> 主界面功能實(shí)現(xiàn)模塊</b></p><p><b> 3.2功能簡(jiǎn)介</b></p><p> 開(kāi)場(chǎng)動(dòng)畫(huà),顯示“交通模擬導(dǎo)航系統(tǒng) 歡迎使用”,附帶開(kāi)場(chǎng)動(dòng)畫(huà);</p>
21、;<p> 按任意鍵,進(jìn)入主界面,菜單欄顯示“所在地”,“終點(diǎn)選擇”,“導(dǎo)航開(kāi)始”,“查詢”,“幫助”,“退出”選項(xiàng);</p><p> 點(diǎn)擊幫助,進(jìn)入文字說(shuō)明界面,雙擊鼠標(biāo),回到主界面;</p><p> 點(diǎn)擊退出,則退出程序;</p><p> 點(diǎn)擊“查詢”,列出可選地點(diǎn),選擇地點(diǎn)后則顯示選擇地點(diǎn)的信息;</p><p&
22、gt; 點(diǎn)擊“終點(diǎn)選擇”,選擇終點(diǎn),確定終點(diǎn)選擇;</p><p> 點(diǎn)擊導(dǎo)航開(kāi)始,可以選擇手動(dòng)或者自動(dòng)模式,確定模式則進(jìn)入導(dǎo)航界面</p><p> 進(jìn)入導(dǎo)航界面,手動(dòng)控制小車速度、方向、暫停和退出,左邊菜單顯示時(shí)間、速度、距離、下一站和轉(zhuǎn)向等信息</p><p> 如果是自動(dòng)模式,則小車自動(dòng)沿著最優(yōu)路線達(dá)到終點(diǎn)</p><p>
23、 達(dá)目的地,選擇繼續(xù)或者退出導(dǎo)航。</p><p> 回到這界面可以再次選擇終點(diǎn)重新導(dǎo)航。</p><p><b> 3.3時(shí)間安排</b></p><p> 3.4程序簡(jiǎn)要流程圖</p><p><b> N</b></p><p><b> Y<
24、/b></p><p><b> 3.5核心算法</b></p><p><b> //迪格拉斯算法</b></p><p> void shortest_path(int beginPointNum,int finishPointNum,double distance[N][N],int n,int path
25、[16])</p><p><b> {</b></p><p> POINTSTATE state[N];//定義點(diǎn)的狀態(tài)</p><p><b> int i,k;</b></p><p> double min;//最短距離</p><p> for(
26、i=0;i<n;i++)//初始化所有點(diǎn)的狀態(tài)</p><p><b> {</b></p><p> state[i].pre=-1;//前驅(qū)都先為-1</p><p> state[i].len=INFINITY;</p><p> state[i].label=0;//0表示沒(méi)有確定,1表
27、示已經(jīng)求出最短路徑</p><p><b> }</b></p><p> state[beginPointNum].len=0;</p><p> state[beginPointNum].label=1;</p><p> k=beginPointNum;</p><p><b&
28、gt; do</b></p><p><b> {</b></p><p> for(i=0;i<n;i++)//全部點(diǎn)測(cè)試</p><p><b> {</b></p><p> if(distance[k][i]!=0&&state[i].label
29、==0) //選出不是點(diǎn)k本身,且還沒(méi)有確定距離的點(diǎn)i</p><p><b> {</b></p><p> if(state[k].len+distance[k][i]<state[i].len)//如果點(diǎn)i和點(diǎn)k相鄰</p><p><b> {</b></p><p> s
30、tate[i].len=state[k].len+distance[k][i];//點(diǎn)i的len為點(diǎn)k的len加點(diǎn)i和點(diǎn)k的距離</p><p> state[i].pre=k;//點(diǎn)i的前驅(qū)為點(diǎn)k</p><p><b> }</b></p><p><b> }</b></p><p&g
31、t;<b> }</b></p><p><b> k=-1;</b></p><p> min=INFINITY;</p><p> for(i=0;i<n;i++)//全部檢測(cè)</p><p><b> {</b></p><p>
32、 if(state[i].label==0&&state[i].len<min)//選出前面改變了len,但是還沒(méi)有計(jì)算最短距離的點(diǎn)i,</p><p><b> {</b></p><p> k=i;//求出所有這些點(diǎn)的len最短的點(diǎn)i,i傳給k</p><p> min=state[i].len;<
33、;/p><p><b> }</b></p><p><b> }</b></p><p> state[k].label=1;//點(diǎn)i和點(diǎn)k相同,且確定k(i)點(diǎn)已經(jīng)求出最短距離</p><p> }while(k!=finishPointNum);//再次以點(diǎn)i為點(diǎn)k,開(kāi)始尋找,加
34、入,擴(kuò)充,直到k點(diǎn)為終點(diǎn)</p><p><b> i=0;</b></p><p> k=finishPointNum;</p><p><b> do</b></p><p><b> {</b></p><p> path[i++]=k;
35、 //path逆序(終點(diǎn)到起點(diǎn))存儲(chǔ)各點(diǎn),</p><p> k=state[k].pre;</p><p> }while(k>=0);</p><p> path[i]=-1;//為了后面方便判斷,最后存儲(chǔ)-1;</p><p><b> } </b></p><p>
36、<b> 源代碼</b></p><p> /*********************************head.h**************************************/</p><p> #include <graphics.h></p><p> #include <conio.h&
37、gt;</p><p> #include <stdio.h></p><p> #include <string.h></p><p> #include <dos.h> </p><p> #include <stdlib.h></p><p> #incl
38、ude <io.h></p><p> #include <fcntl.h></p><p> #include <time.h></p><p> #include <math.h></p><p> #include <bios.h></p><p&g
39、t; #include <mem.h></p><p> #define key_LEFT 0x4b00</p><p> #define key_RIGHT 0x4d00</p><p> #define key_DOWN 0x5000</p><p> #define key_UP 0x4800&l
40、t;/p><p> #define key_ESC 0x011b</p><p> #define key_ENTER 0x1c0d</p><p> #define key_A 0x1e61</p><p> #define key_S 0x1f73</p><p> #define
41、 key_D 0x2064</p><p> #define key_W 0x1177</p><p> #define key_SPACE 0x3920</p><p> #define PI 3.1415</p><p> #define N 32</p><p&g
42、t; #define INFINITY 3000</p><p> #define SPEED1</p><p> //pcx圖片顯示的定義</p><p> #define SCREEN_HEIGHT 200</p><p> #define SCREEN_WIDTH 320</p><p> #
43、define PALETTE_MASK 0x3c6</p><p> #define PALETTE_REGISTER_RD 0x3c7</p><p> #define PALETTE_REGISTER_WR 0x3c8</p><p> #define PALETTE_DATA 0x3c9</p><p> #define VGA
44、256 0x13</p><p> #define TEXT_MODE 0x03</p><p> typedef struct RGB_color_typ</p><p><b> {</b></p><p> unsigned char red;</p><p> unsigned
45、char green;</p><p> unsigned char blue;</p><p> }RGB_color,*RGB_color_ptr;</p><p> //定義畫(huà)地圖的結(jié)構(gòu)體</p><p> typedef struct POINT</p><p><b> { </b&
46、gt;</p><p><b> double x;</b></p><p><b> double y;</b></p><p><b> int num;</b></p><p> char *notes;</p><p><b>
47、 }POINT;</b></p><p> typedef struct BUILDING </p><p><b> {</b></p><p><b> double x;</b></p><p><b> double y;</b></
48、p><p><b> int dx;</b></p><p><b> int num;</b></p><p> char *name;</p><p> char *notes; </p><p> }BUILDING;</p><p>
49、typedef struct CAR</p><p><b> {</b></p><p> double speed;</p><p> double angle; //小車轉(zhuǎn)過(guò)的角度</p><p><b> }CAR;</b></p><p>
50、 typedef struct ROAD </p><p><b> {</b></p><p> double x1;</p><p> double y1; </p><p> double x2;</p><p> double y2; </p><
51、;p><b> }ROAD;</b></p><p> typedef struct TREE //定義畫(huà)樹(shù)的結(jié)構(gòu)體</p><p><b> { </b></p><p><b> double x;</b></p><p><b>
52、 double y;</b></p><p> double dx;</p><p> double dist;</p><p><b> int num;</b></p><p> char fangxiang;</p><p><b> }TREE;</
53、b></p><p> typedef struct HOUSE</p><p><b> {</b></p><p><b> double x;</b></p><p><b> double y;</b></p><p><b&
54、gt; int dx;</b></p><p> int color;</p><p><b> }HOUSE;</b></p><p> typedef struct POINTSTATE</p><p><b> {</b></p><p><
55、b> int pre;</b></p><p><b> int len;</b></p><p> int label;</p><p> }POINTSTATE;</p><p><b> //chinese</b></p><p> voi
56、d out_hz(int x, int y,char *s,int flag,int part,int color);</p><p><b> //mouse</b></p><p> void cursor(int x, int y);</p><p> int initmouse(int xmi, int xma, int ymi
57、, int yma);</p><p> int readmouse(int *mx, int *my,int *mbutt);</p><p> void newmouse(int *mx, int*my, int*mbutt);</p><p><b> //menu</b></p><p> void m
58、enu_main();</p><p> void menu_up();</p><p> void menu_up_1();</p><p> void auto_menu_left(double myCarSpeed,double *dist,int path[16],POINT allPoint[32],int *path_i,int *flagPath
59、,int *flagOk);</p><p> void menu_left(double myCarSpeed,double *dist,int path[16],POINT allPoint[32],int *path_i,int *flagPath,int *flagOk);</p><p> void help_page();</p><p> voi
60、d zhong_dian(int *pFinishBuilding);</p><p> void zhong_dian_show();</p><p> void cha_xun();</p><p> void cha_xun_show();</p><p> void cha_xun_information(int i );&l
61、t;/p><p> void if_start(int *flagStart,int *pFinishBuilding);</p><p> void mode_select(int *pflagAuto);</p><p> void shan_shuo(int color,int time,int num);</p><p><b
62、> //map</b></p><p> void init_allPoint(POINT allPoint[32]);</p><p> void init_buildings(BUILDING buildings[15]);</p><p> void draw_buildings_1(BUILDING *p,double xMapSp
63、eed,double yMapSpeed);</p><p> void draw_buildings_2(BUILDING *p,double xMapSpeed,double yMapSpeed);</p><p> void draw_buildings_3(BUILDING *p,double xMapSpeed,double yMapSpeed);</p>&l
64、t;p> void init_road(ROAD allRoad[17]);</p><p> void draw_road_shuzhi(ROAD *p,double xMapSpeed,double yMapSpeed);</p><p> void draw_road_shiping(ROAD *p,double xMapSpeed,double yMapSpeed);&
65、lt;/p><p> void init_tree(TREE allTree[13]);</p><p> void draw_tree_y(TREE *p,double xMapSpeed,double yMapSpeed);</p><p> void draw_tree_x(TREE *p,double xMapSpeed,double yMapSpeed)
66、;</p><p> void init_house(HOUSE houses[30]);</p><p> void draw_house(HOUSE *p,double xMapSpeed,double yMapSpeed);</p><p> void draw_car(CAR *cp);</p><p> void zhuan
67、_dong(double ang, int *body, int *win, int *head, int *rear, int *L_h_light,int *L_r_light, int *R_h_light,int *R_r_light,int x, int y);</p><p> void draw_star(int x,int y,int color,int i);</p><
68、p> void map_2();</p><p> void draw_map_1(double xMapSpeed,double yMapSpeed,BUILDING buildings[15],ROAD allRoad[17],TREE allTree[13],</p><p> HOUSE houses[30]);</p><p><b>
69、; //gps</b></p><p> void GPS();</p><p> void init_again(int *flagStart,int *finishBuildingNum,int *flagAuto);</p><p> void gps_main(int *finishBuildingNum,int flagAtuo);&l
70、t;/p><p> void mouse_select(int *flagStart, int *pFinishBuilding,int *pflagAuto);</p><p> void contral_car_map(CAR *cp,int *flagExit);</p><p> void auto_contral_1(int *flagExit);<
71、;/p><p> void auto_contral_2(CAR *cp,int path[16],POINT allPoint[32],int *path_i,int *flagPath,BUILDING buildings[15],ROAD allRoad[17],TREE allTree[13],HOUSE houses[30]);</p><p> void if_zhongdia
72、n();</p><p> void jisuan_dist(double distance[N][N],int path[16],double *dist);</p><p> void if_exit(int *flagExit);</p><p> void if_ok(int finishPointNum,POINT allPoint[32],int
73、*flagOk);</p><p> void xy_change(POINT allPoint[32],BUILDING buildings[15],ROAD allRoad[17],TREE allTree[13],HOUSE houses[30],double xMap,double yMap);</p><p> void xy_change_house(HOUSE *p,do
74、uble xMap,double yMap);</p><p> void xy_change_point(POINT *p,double xMap,double yMap);</p><p> void xy_change_buildings(BUILDING *b,double xMap,double yMap);</p><p> void xy_cha
75、nge_road_shuzhi(ROAD *p,double xMap,double yMap);</p><p> void xy_change_road_shiping(ROAD *p,double xMap,double yMap);</p><p> void xy_change_tree(TREE *t,double xMap,double yMap);</p>
76、<p> void point_change_save(POINT allPoint[32],double xMapSpeed,double yMapSpeed);</p><p> //init_start_end</p><p> void init_350();</p><p> void init_480();</p>&
77、lt;p> void start_page();</p><p> void start_cartoon();</p><p> void end_page();</p><p> void Set_Palette_Register(int index,RGB_color_ptr color);</p><p> void P
78、CX_Load_Screen(char *filename,int enable_palette);</p><p> void Set_Video_Mode(int mode);</p><p> void pcx(char *pcx);</p><p> void pcx_1(char *pcx);</p><p> void
79、picture_show_1(int x,int y,int mousekey);</p><p> void picture_show_2(int i);</p><p> void show_time();</p><p><b> //record</b></p><p> void save_fini
80、sh_building(int finish_building);</p><p> void get_begin_building(int *p_begin_building);</p><p> void show_record();</p><p> //dijkstra</p><p> void init_point_dis
81、tance(double distance[N][N],POINT allPoint[32]);</p><p> void init_distance_1(double distance[N][N]);</p><p> void init_distance_2(POINT point_1,POINT point_2,double distance[N][N]);</p>
82、<p> void shortest_path(int beginPointNum,int finishPointNum,double distance[N][N],int n,int path[16]);</p><p> void draw_shortest_path(int path[16],POINT allPoint[32]);</p><p> void d
83、raw_path(int i,int j,POINT allPoint[32]);</p><p> /*********************************main.cpp************************************/</p><p> #include "Head.h"</p><p> void
84、 main()</p><p><b> {</b></p><p> init_480();</p><p> start_page();</p><p><b> //主界面</b></p><p> menu_main();</p><p
85、><b> //導(dǎo)航界面</b></p><p><b> GPS();</b></p><p><b> }</b></p><p> /**********************init_start_end.cpp*********************************
86、*****/</p><p> #include "Head.h"</p><p> //640*350界面初始化</p><p> void init_350()</p><p><b> {</b></p><p> int graphdriver=VGA;&l
87、t;/p><p> int graphmode=1;</p><p> initgraph(&graphdriver,&graphmode,"D:\\BORLANDC\\BGI");</p><p><b> }</b></p><p> //640*480界面初始化</p
88、><p> void init_480()</p><p><b> {</b></p><p> int graphdriver=DETECT;</p><p> int graphmode;</p><p> initgraph(&graphdriver,&graphmo
89、de,"D:\\BORLANDC\\BGI");</p><p><b> }</b></p><p><b> //開(kāi)場(chǎng)模塊</b></p><p> void start_page()</p><p><b> {</b></p>
90、<p> start_cartoon();</p><p> //pcx_1("D:\\BORLANDC\\B\\pcx\\1.pcx");</p><p> // delay(4000); </p><p><b> }</b></p><p><b> //開(kāi)
91、場(chǎng)動(dòng)畫(huà)</b></p><p> void start_cartoon()</p><p><b> {</b></p><p> int x1,y1;</p><p><b> int j=2;</b></p><p><b> int r=
92、0;</b></p><p><b> double i;</b></p><p> out_hz(240,80,"歡迎進(jìn)入",3,50,YELLOW);</p><p> out_hz(100,180,"交通模擬導(dǎo)航系統(tǒng)",3,60,YELLOW);</p><p&
93、gt; out_hz(170,280,"自動(dòng)化六班",1,30,YELLOW);</p><p> out_hz(330,280,"彭軍才",1,30,YELLOW);</p><p> out_hz(430,280,"程攀",1,30,YELLOW);</p><p> out_hz(270,34
94、0,"請(qǐng)按任意鍵進(jìn)入",1,30,YELLOW);</p><p><b> //顯示動(dòng)畫(huà)</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> for(i=0;i<310;i=i+
95、1,r++)</p><p><b> {</b></p><p> if(bioskey(1))</p><p><b> {</b></p><p><b> break;</b></p><p><b> }</b>
96、</p><p> x1=(int)r*cos(i);</p><p> y1=(int)r*sin(i);</p><p> putpixel(320+x1,240+y1,j);</p><p> putpixel(320+x1+1,240+y1,j);</p><p><b> delay(7)
97、;</b></p><p><b> if(j==14)</b></p><p><b> {</b></p><p><b> j=1;</b></p><p><b> }</b></p><p><
98、b> }</b></p><p><b> j++;</b></p><p> for(i=309;i>=0;i--,r--)</p><p><b> {</b></p><p> if(bioskey(1))</p><p><b&
99、gt; {</b></p><p><b> break;</b></p><p><b> }</b></p><p> x1=(int)r*cos(i);</p><p> y1=(int)r*sin(i);</p><p> putpixel(3
100、20+x1,240+y1,j);</p><p> putpixel(320+x1+1,240+y1,j);</p><p><b> delay(2);</b></p><p><b> if(j==14)</b></p><p><b> {</b></p&g
101、t;<p><b> j=1;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> j++;</b></p><p> if(bioskey(1))</p>
102、<p><b> {</b></p><p><b> break;</b></p><p><b> } </b></p><p><b> }</b></p><p><b> getch();</b>
103、</p><p><b> }</b></p><p><b> //結(jié)束動(dòng)畫(huà)</b></p><p> void end_page()</p><p><b> {</b></p><p><b> int i;</b>
104、</p><p> int r=220;</p><p><b> int x,y;</b></p><p> int x1,y1,x2,y2;</p><p> int x0=320;</p><p> int y0=250;</p><p> clearde
105、vice();</p><p> setbkcolor(BLACK);</p><p> setcolor(BLUE);</p><p> for(i=0;i<=120;i=i+3)</p><p><b> {</b></p><p> arc(x0,y0+r,30+i,30+i
106、+3,r);</p><p><b> }</b></p><p> x1=(int)(x0-0.866*r)-5;</p><p> y1=(int)(y0-0.5*r)+11;</p><p> for(i=0;i<=120;i=i+3)</p><p><b> {
107、</b></p><p> arc(x1,y1,-90+i,-90+i+3,r);</p><p><b> }</b></p><p> x2=(int)(x0+0.866*r)-11;</p><p> y2=(int)(y0-0.5*r);</p><p> for(i
108、=0;i<=120;i=i+3)</p><p><b> {</b></p><p> arc(x2,y2,150+i,150+i+3,r);</p><p><b> }</b></p><p> out_hz(200-22,80,"謝",3,25,YELLOW
109、);</p><p> out_hz(400-22,80,"謝",3,25,YELLOW);</p><p> delay(200);</p><p> out_hz(200-22,180,"使",3,25,YELLOW);</p><p> out_hz(400-22,180,"用&
110、quot;,3,25,YELLOW);</p><p> out_hz(400-22,180,"用",3,25,YELLOW);</p><p> out_hz(350,400,"自動(dòng)化六班",0,20,YELLOW);</p><p> out_hz(480,400,"彭軍才",0,20,YELLO
111、W);</p><p> out_hz(550,400,"程攀",0,20,YELLOW);</p><p> setcolor(YELLOW);</p><p> x=(int)(x0-0.866*r)-5;</p><p> y=(int)(y0-0.5*r)+11;</p><p>
112、 for(i=0;i<=120;i=i+3)</p><p><b> {</b></p><p> if(bioskey(1))</p><p><b> {</b></p><p><b> break;</b></p><p><
113、;b> }</b></p><p> arc(x,y,-90+i,-90+i+3,r);</p><p> delay(30);</p><p><b> }</b></p><p> x=(int)(x0+0.866*r)-11;</p><p> y=(int)(
114、y0-0.5*r);</p><p> for(i=0;i<=120;i=i+3)</p><p><b> {</b></p><p> if(bioskey(1))</p><p><b> {</b></p><p><b> break;&l
115、t;/b></p><p><b> }</b></p><p> arc(x,y,150+i,150+i+3,r);</p><p> delay(30);</p><p><b> }</b></p><p> for(i=0;i<=120;)&l
116、t;/p><p><b> {</b></p><p> if(bioskey(1))</p><p><b> {</b></p><p><b> break;</b></p><p><b> }</b></p&g
117、t;<p> arc(x0,y0+r,30+i,30+i+3,r);</p><p><b> i=i+3;</b></p><p> delay(30);</p><p><b> }</b></p><p> delay(200);</p><p>
118、;<b> }</b></p><p><b> //pcx圖片顯示</b></p><p> void Set_Palette_Register(int index,RGB_color_ptr color)</p><p><b> {</b></p><p> o
119、utp(PALETTE_MASK,0xff);</p><p> outp(PALETTE_REGISTER_WR,index);</p><p> outp(PALETTE_DATA,color->red);</p><p> outp(PALETTE_DATA,color->green);</p><p> outp(
120、PALETTE_DATA,color->blue);</p><p><b> }</b></p><p> void PCX_Load_Screen(char *filename,int enable_palette)</p><p><b> {</b></p><p> // t
121、his function loads a pcx file into a picture structure, the actual image</p><p> // data for the pcx file is decompressed and expanded into a secondary buffer</p><p> // within the picture str
122、ucture, the separate images can be grabbed from this</p><p> // buffer later. also the header and palette are loaded</p><p><b> FILE *fp;</b></p><p> unsigned char f
123、ar *video_buffer=(char far *)0xA0000000L;</p><p> int num_bytes,index;</p><p> unsigned int count;</p><p> unsigned char data;</p><p> RGB_color *palette;</p>
124、<p> palette=(RGB_color *)malloc(256*sizeof(RGB_color));</p><p> if(palette!=NULL)</p><p><b> {</b></p><p> if((fp = fopen(filename,"rb"))!=NULL)<
125、;/p><p><b> {</b></p><p> fseek(fp,128L,SEEK_SET);</p><p> // load the data and decompress into buffer</p><p><b> count=0;</b></p><p
126、> while(count<=(unsigned int)SCREEN_WIDTH * SCREEN_HEIGHT)</p><p><b> {</b></p><p> // get the first piece of data</p><p> data = getc(fp);</p><p>
127、; // is this a rle?</p><p> if (data>=192 && data<=255)</p><p><b> {</b></p><p> // how many bytes in run?</p><p> num_bytes = data-192;&
128、lt;/p><p> // get the actual data for the run</p><p> data = getc(fp);</p><p> // replicate data in buffer num_bytes times</p><p> while(num_bytes-->0)</p>
129、<p><b> {</b></p><p> // image->buffer[count++] = data;</p><p> video_buffer[count++]=data;</p><p> } // end while</p><p> } // end
130、 if rle</p><p><b> else</b></p><p><b> {</b></p><p> // actual data, just copy it into buffer at next location</p><p> //image->buffer[co
131、unt++] = data;</p><p> video_buffer[count++]=data;</p><p> } // end else not rle</p><p> } // end while</p><p> for (index=0; index<256; index++)</p><
132、p><b> {</b></p><p> // get the red component</p><p> palette[index].red = (getc(fp) >> 2);</p><p> // get the green component</p><p> palett
133、e[index].green = (getc(fp) >> 2);</p><p> // get the blue component</p><p> palette[index].blue = (getc(fp) >> 2);</p><p> } // end for index</p><p> f
134、close(fp);</p><p><b> fp=NULL;</b></p><p> // change the palette to newly loaded palette if commanded to do so</p><p> if (enable_palette)</p><p><b&g
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 校園導(dǎo)航系統(tǒng)課程設(shè)計(jì)
- 《校園導(dǎo)航系統(tǒng)》課程設(shè)計(jì)報(bào)告
- 校園導(dǎo)航系統(tǒng)課程設(shè)計(jì)報(bào)告
- 算法課程設(shè)計(jì)--校園導(dǎo)航系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)導(dǎo)航系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)導(dǎo)航系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-自動(dòng)提款模擬系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)---海空作戰(zhàn)模擬系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-校園導(dǎo)航系統(tǒng)
- 校園導(dǎo)航系統(tǒng)---算法及分析課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--校園導(dǎo)航系統(tǒng)
- 校園導(dǎo)航系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 校園導(dǎo)航系統(tǒng)---算法與分析課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--校園導(dǎo)航系統(tǒng)
- 校園導(dǎo)航系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 圖形模擬時(shí)鐘c語(yǔ)言課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告—機(jī)房機(jī)位預(yù)約模擬系統(tǒng)
- 【課程設(shè)計(jì)】c語(yǔ)言課程設(shè)計(jì)
- c語(yǔ)言程序課程設(shè)計(jì)--模擬螞蟻覓食
- c語(yǔ)言課程設(shè)計(jì)-處理機(jī)低級(jí)調(diào)度模擬系統(tǒng)
評(píng)論
0/150
提交評(píng)論