版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> C語言課程設(shè)計報告</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運行環(huán)境3</b></p><p><b
3、> 系統(tǒng)設(shè)計3</b></p><p><b> 3.1模塊劃分3</b></p><p><b> 3.2功能簡介3</b></p><p><b> 3.3時間安排3</b></p><p> 3.4程序簡要流程圖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)濟往來更加頻繁,活動的區(qū)域也越來越大;為了提高生活質(zhì)量,大量的休閑活動、探險活動的舉行使我們并不局限在自己認(rèn)識的一小塊區(qū)域中,不認(rèn)識道路,找不到目的地的情況也屢有發(fā)生,就此,車載GPS導(dǎo)航儀將會以合適的價位走入車主的世界,成為車上的基本裝備。車載GPS導(dǎo)航儀解決方案,其實是最靈活和最復(fù)雜的,車載GPS導(dǎo)航儀有很多種解決方案可以滿足車載
6、的需要。</p><p> GPS汽車導(dǎo)航是將GPS和地理信息系統(tǒng)、現(xiàn)代通訊技術(shù)綜合在一起,研制成的一種新型汽車導(dǎo)航定位設(shè)備,具備監(jiān)控、調(diào)度、報警、遙控熄火和遙控斷油、自動存檔、系統(tǒng)自檢等功能。它可將汽車的任何動態(tài)位置隨時準(zhǔn)確無誤地顯示在儀器的電子地圖上。導(dǎo)航儀的電子地圖自動跟蹤顯示汽車當(dāng)前位置及周邊情況,駕駛員可隨時在導(dǎo)航儀上查詢周邊一定半徑地區(qū)內(nèi)的地理信息。</p><p> 交通
7、模擬導(dǎo)航系統(tǒng)能夠簡單地模擬GPS汽車導(dǎo)航系統(tǒng)。在建立一個簡單的小型化城市地圖的基礎(chǔ)上,能對該城市內(nèi)指定的車輛提供導(dǎo)航。</p><p><b> 1.2參考資料</b></p><p> 王士元. C高級實用程序設(shè)計. 北京: 清華大學(xué)出版社. 1996</p><p> 周純杰,劉正林等. 標(biāo)準(zhǔn)C語言程序及應(yīng)用. 武漢: 華中科技大學(xué)出
8、版社. 2005</p><p> 姚遠(yuǎn). 高級C語言程序設(shè)計技巧與實例. 北京: 機械工業(yè)出版社, 1995</p><p> 陳清華, 朱紅. C語言課程設(shè)計. 南京: 東南大學(xué)出版社, 2003</p><p> 潭浩強. C語言程序設(shè)計. 北京: 清華大學(xué)出版社, 2000</p><p> 劉振安 ,蘇仕華 . C語言圖形
9、設(shè)計 北京:人民郵電出版社,1995</p><p> 潘建華 ,衛(wèi)躍文. C語言實用軟件界面設(shè)計 西安:西安電子科大出版社,1995</p><p> 鴻健編譯. c語言高級程序員編程指南 北京:北京希望電腦公司公司,1991 好友指導(dǎo): 彭軍才 程攀 </p><p><b> 需求分析</b></p>&
10、lt;p><b> 2.1需求分析</b></p><p> 由于GPS技術(shù)所具有的全天候、高精度和自動測量的特點,作為先進的測量手段和新的生產(chǎn)力,已經(jīng)融入了國民經(jīng)濟建設(shè)、國防建設(shè)和社會發(fā)展的各個應(yīng)用領(lǐng)域。 </p><p> 隨著冷戰(zhàn)結(jié)束和全球經(jīng)濟的蓬勃發(fā)展,美國政府宣布2000年至2006年期間,在保證美國國家安全不受威脅的前提下,取消SA政策,GP
11、S民用信號精度在全球范圍內(nèi)得到改善,利用C/A碼進行單點定位的精度由100米提高到20米,這將進一步推動GPS技術(shù)的應(yīng)用,提高生產(chǎn)力、作業(yè)效率、科學(xué)水平以及人們的生活質(zhì)量,刺激GPS市場的增長。據(jù)有關(guān)專家預(yù)測,在美國,單單是汽車GPS導(dǎo)航系統(tǒng),2000年后的市場將達(dá)到30億美元,而在我國,汽車導(dǎo)航的市場也將達(dá)到50億元人民幣。可見,GPS技術(shù)市場的應(yīng)用前景非??捎^。</p><p> 我們用TC3.0編寫的C語
12、言程序來模擬導(dǎo)航欄儀的各種操作過程。</p><p> GPS導(dǎo)航儀的常用功能大致有:</p><p><b> 1.地圖查詢</b></p><p> 可以在操作終端上搜索你要去的目的地位置。</p><p> 可以記錄你常要去的地方的位置信息,并保留下來。</p><p><b&
13、gt; 2.路線規(guī)劃</b></p><p> GPS導(dǎo)航系統(tǒng)會根據(jù)你設(shè)定的起始點和目的地,自動規(guī)劃一條線路。</p><p> 規(guī)劃線路可以設(shè)定是否要經(jīng)過某些途徑點。</p><p><b> 3.自動導(dǎo)航 </b></p><p> 語音導(dǎo)航:用提前向駕駛者提供路口轉(zhuǎn)向,導(dǎo)航系統(tǒng)狀況等行車信
14、息,就像一個懂路的向?qū)Ц嬖V你如何駕車去目的地一樣。導(dǎo)航中最重要的一個功能,使你無需觀看操作終端,通過語音提示就可以安全到達(dá)目的地。 </p><p> 畫面導(dǎo)航:在操作終端上,會顯示地圖,以及車子現(xiàn)在的位置,行車速度,目的地的距離,規(guī)劃的路線提示,路口轉(zhuǎn)向提示的行車信息。 </p><p> 因為在DOS環(huán)境下編程模擬,所以只模擬了部分功能,如下:</p><
15、;p> 交通模擬導(dǎo)航系統(tǒng)提供在華科校園內(nèi)導(dǎo)航的功能;</p><p> 進入系統(tǒng)后,可選擇進行幫助、退出或?qū)Ш剑?lt;/p><p> 選擇退出,則直接退出程序。</p><p> 選擇導(dǎo)航,則進入導(dǎo)航界面:選擇路徑(車輛的起始點自動讀取上一次所到達(dá)的目的地,選擇終點,可以選擇必經(jīng)地),選完路線后系統(tǒng)將會在地圖上用粗線標(biāo)出路線圖,選擇導(dǎo)航開始,進入模擬導(dǎo)航
16、模式,用鍵盤控制小車的運動。過程中現(xiàn)實路程和時間;</p><p> 周邊查詢:選擇位置,就可以顯示出附近的建筑;</p><p> 幫助,則進入幫助界面,幫助如何使用導(dǎo)航系統(tǒng);</p><p><b> 直接退出;</b></p><p> 系統(tǒng)會提前對即將經(jīng)過的紅綠燈進行提醒</p><p
17、> (以上為初期設(shè)計思路)</p><p><b> 2.2運行環(huán)境 </b></p><p> 交通模擬導(dǎo)航系統(tǒng)是對GPS汽車導(dǎo)航系統(tǒng)的模擬,系統(tǒng)的開發(fā)基于C語言, 其設(shè)計環(huán)境要求,是在DOS環(huán)境下用C語言編程實現(xiàn),使用TC或BC開發(fā)軟件,因此,交通模擬導(dǎo)航系統(tǒng)能夠在絕大多數(shù)計算機系統(tǒng)上運行,包括常見的windows XP操作系統(tǒng)及windows 7 3
18、2位機上運行,但是由于BC在64位的windows 7下無法運行,且BC或TC在windows 7下不能較好地解決全屏問題,因而,推薦在windows XP的環(huán)境下測試運行此交通模擬導(dǎo)航系統(tǒng)。</p><p><b> 系統(tǒng)設(shè)計</b></p><p><b> 3.1模塊劃分</b></p><p> 圖形界面模塊
19、:主要包括動畫,主界面,菜單和地圖,標(biāo)出導(dǎo)航路線。</p><p> 鼠標(biāo)模塊:包括鼠標(biāo)的圖形,鼠標(biāo)狀態(tài)。</p><p> 漢字模塊:漢字輸出。</p><p> 控制模塊:控制小車運動,分為自動和手動。</p><p> 算法模塊:計算最優(yōu)路徑,地杰斯特拉算法。</p><p> 文件模塊:保存小車的位置
20、路徑等信息。</p><p><b> 菜單模塊:顯示菜單</b></p><p><b> 主界面功能實現(xiàn)模塊</b></p><p><b> 3.2功能簡介</b></p><p> 開場動畫,顯示“交通模擬導(dǎo)航系統(tǒng) 歡迎使用”,附帶開場動畫;</p>
21、;<p> 按任意鍵,進入主界面,菜單欄顯示“所在地”,“終點選擇”,“導(dǎo)航開始”,“查詢”,“幫助”,“退出”選項;</p><p> 點擊幫助,進入文字說明界面,雙擊鼠標(biāo),回到主界面;</p><p> 點擊退出,則退出程序;</p><p> 點擊“查詢”,列出可選地點,選擇地點后則顯示選擇地點的信息;</p><p&
22、gt; 點擊“終點選擇”,選擇終點,確定終點選擇;</p><p> 點擊導(dǎo)航開始,可以選擇手動或者自動模式,確定模式則進入導(dǎo)航界面</p><p> 進入導(dǎo)航界面,手動控制小車速度、方向、暫停和退出,左邊菜單顯示時間、速度、距離、下一站和轉(zhuǎn)向等信息</p><p> 如果是自動模式,則小車自動沿著最優(yōu)路線達(dá)到終點</p><p>
23、 達(dá)目的地,選擇繼續(xù)或者退出導(dǎo)航。</p><p> 回到這界面可以再次選擇終點重新導(dǎo)航。</p><p><b> 3.3時間安排</b></p><p> 3.4程序簡要流程圖</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];//定義點的狀態(tài)</p><p><b> int i,k;</b></p><p> double min;//最短距離</p><p> for(
26、i=0;i<n;i++)//初始化所有點的狀態(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表示沒有確定,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++)//全部點測試</p><p><b> {</b></p><p> if(distance[k][i]!=0&&state[i].label
29、==0) //選出不是點k本身,且還沒有確定距離的點i</p><p><b> {</b></p><p> if(state[k].len+distance[k][i]<state[i].len)//如果點i和點k相鄰</p><p><b> {</b></p><p> s
30、tate[i].len=state[k].len+distance[k][i];//點i的len為點k的len加點i和點k的距離</p><p> state[i].pre=k;//點i的前驅(qū)為點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++)//全部檢測</p><p><b> {</b></p><p>
32、 if(state[i].label==0&&state[i].len<min)//選出前面改變了len,但是還沒有計算最短距離的點i,</p><p><b> {</b></p><p> k=i;//求出所有這些點的len最短的點i,i傳給k</p><p> min=state[i].len;<
33、;/p><p><b> }</b></p><p><b> }</b></p><p> state[k].label=1;//點i和點k相同,且確定k(i)點已經(jīng)求出最短距離</p><p> }while(k!=finishPointNum);//再次以點i為點k,開始尋找,加
34、入,擴充,直到k點為終點</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逆序(終點到起點)存儲各點,</p><p> k=state[k].pre;</p><p> }while(k>=0);</p><p> path[i]=-1;//為了后面方便判斷,最后存儲-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> //定義畫地圖的結(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)過的角度</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 //定義畫樹的結(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> //開場模塊</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> //開
91、場動畫</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,"歡迎進入",3,50,YELLOW);</p><p> out_hz(100,180,"交通模擬導(dǎo)航系統(tǒng)",3,60,YELLOW);</p><p&
93、gt; out_hz(170,280,"自動化六班",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,"請按任意鍵進入",1,30,YELLOW);</p><p><b> //顯示動畫</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é)束動畫</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,"自動化六班",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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 校園導(dǎo)航系統(tǒng)課程設(shè)計
- 《校園導(dǎo)航系統(tǒng)》課程設(shè)計報告
- 校園導(dǎo)航系統(tǒng)課程設(shè)計報告
- 算法課程設(shè)計--校園導(dǎo)航系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計導(dǎo)航系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計導(dǎo)航系統(tǒng)
- c語言課程設(shè)計-自動提款模擬系統(tǒng)
- c語言課程設(shè)計---??兆鲬?zhàn)模擬系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-校園導(dǎo)航系統(tǒng)
- 校園導(dǎo)航系統(tǒng)---算法及分析課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--校園導(dǎo)航系統(tǒng)
- 校園導(dǎo)航系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 校園導(dǎo)航系統(tǒng)---算法與分析課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--校園導(dǎo)航系統(tǒng)
- 校園導(dǎo)航系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 圖形模擬時鐘c語言課程設(shè)計
- c語言課程設(shè)計報告—機房機位預(yù)約模擬系統(tǒng)
- 【課程設(shè)計】c語言課程設(shè)計
- c語言程序課程設(shè)計--模擬螞蟻覓食
- c語言課程設(shè)計-處理機低級調(diào)度模擬系統(tǒng)
評論
0/150
提交評論