版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C語言課程設(shè)計(jì)機(jī)場起飛降落調(diào)度仿真系統(tǒng)
課程設(shè)計(jì)報告控制科學(xué)與工程系控實(shí)!001班組員:陳明U201013648樊旭U201013717目錄一.導(dǎo)言.任務(wù)背景.編寫目的二.功能操作.歡迎界面.菜單界面.飛機(jī)場操作界面.退出界面三.重點(diǎn)程序分析四.流程圖五.任務(wù)分エ一,編程心得七.參考資料ハ.源代碼一.導(dǎo)言.任務(wù)背景航空公司每天都要擬訂第二天的航班計(jì)劃,簡言之,就是安排飛機(jī)飛哪里,用哪架飛機(jī)執(zhí)行航班任務(wù),簽派要綜合機(jī)務(wù)和市場部提供的信息,安排好計(jì)劃,并通過電報的形式發(fā)送到各地航務(wù)代辦,否則第二天航班無法執(zhí)行每個航班起飛之前,要拿到計(jì)算機(jī)飛行計(jì)劃,相關(guān)機(jī)場天氣報告,天氣預(yù)報圖,高空風(fēng)溫圖,航行通告,航行資料,這些都要簽派來提供。 飛機(jī)起飛后,要對飛機(jī)全程進(jìn)行監(jiān)控。飛機(jī)出現(xiàn)的任何不正常情況,簽派都要協(xié)助機(jī)組進(jìn)行處理,保證飛機(jī)安全落地天氣不好,飛機(jī)故障,流量控制等等,只要造成了預(yù)定計(jì)劃不能正常執(zhí)行,簽派就要綜合各保障部門提供的情況,對航班計(jì)劃進(jìn)行及時調(diào)整,既要保障公司效益也要盡量減少航班延誤當(dāng)然了,每天下班的前提是公司所有航班都結(jié)束了,第二天計(jì)劃都搞定了才行。所謂下班只是理論上的,半夜有飛機(jī)過來備降,或者有其它情況,還得隨時上崗,因?yàn)楫吘顾枪纠镂ā獋€24小時都值班的單位。.編寫目的通過對機(jī)場飛機(jī)的起飛降落及其調(diào)度的分析,建立了對于飛機(jī)場相關(guān)信息規(guī)律分析的函數(shù)模型,并給出基于二維動畫界面的調(diào)度的c語言程序,實(shí)現(xiàn)機(jī)場飛機(jī)的起飛降落及其調(diào)度的全過程模擬。此次C語言課程設(shè)計(jì)是本專業(yè)的第一次課程設(shè)計(jì),具有重要的意義:通過上個學(xué)期對C語言的學(xué)習(xí),對C語言編程有了初步的了解,獲得了一定的基礎(chǔ)但是非常缺乏實(shí)際的編程經(jīng)驗(yàn),無法從質(zhì)上對自己的編程技巧有一個很大的提高,這次的課程設(shè)計(jì)給我們提供了一個非常好的鍛煉機(jī)會。通過二個人的分工合作,在實(shí)際中運(yùn)用和訓(xùn)練程序設(shè)計(jì)的模塊化和工程化思想和技術(shù),努力掌握C語言精髓;同時提高自己的交流與團(tuán)隊(duì)合作的能力.為以后的更專業(yè)更復(fù)雜的課程設(shè)計(jì)和實(shí)踐活動打好基礎(chǔ)。二.功能介紹.歡迎界面/*52.cpp中函數(shù)調(diào)用?/externvoidShowHz(inttop,unsignedcharbytel.unsignedcharbyte2,intcolor);〃這是漢字庫初始化函數(shù)externvoidouthzxy(intx,inty,char*str,intcolor);〃在圖形界面中(x,y)坐標(biāo)處用顏色color顯示漢字,也可顯示字符串externvoidShowBigHz(inttop,unsignedcharbytel.unsignedcharbyte2,intcolor);externvoidoutbighzxy(inty.char*str,intcolor);〃由于寫漢字,大小有16*16,24*24點(diǎn)陣,所以有兩種版本/*53.cpp中函數(shù)調(diào)用?/externvoidcb(); //2后面背景初始化效果externvoidwelcomeO;//3 畫出歡迎字體externintfunction6();//2背后條形框架externvoidloadingO;/Z這是登陸延遲voidButton(intcoIori,intcolor2,intx,inty,char*str,intlen)〃イ匕按鈕intEXIT(intx,inty)〃按鈕效果顯示效果intfunction6()〃綜合函數(shù)〃完成歡迎界面〃完成按鈕操作voidzuyuanOvoidshuomingO/Z這兩的函數(shù)分別畫不同背景的下拉框.菜單界面/*54.cpp中函數(shù)調(diào)用*/externvoidbkg();〃菜單界面的主要背景函數(shù)/* 菜單選項(xiàng)單機(jī)之后的框架背景externvoidfilebkl0;/Z菜單的框架背景externvoidfilebk2();/Z選擇的框架背景externvoidfilebk3();/Z幫助的框架背景/* 每個菜單頭分別對應(yīng)的子菜單 */externvoidfile1();/Z菜單的打開情況子菜單externvoidfile2();/Z選擇的打開情況子菜單externvoidfile3();/Z幫助的說明子函數(shù)/* 花被選中后某選項(xiàng)紅色背景*/externintch1(intx,inty,intc);externvoidfilebk21();//flynum的框架背景externvoidfile21();〃飛機(jī)數(shù)flynum的打開情況子菜單/* 等待用戶輸入的光標(biāo) */externvoidsign(inta,intb);/★ 在指定位置輸出ー個字符串 */externvoidshowinput(intx,inty.charch[]);/* 顯示輸入的字符 */externvoidprint(intx,inty.charstr[]);/*55.cpp中函數(shù)調(diào)用?/externvoidkeyoperation();〃這是菜單界面的主要操作函數(shù),通過按鍵完成/*56.cpp中函數(shù)調(diào)用?/externvoidflynum();〃飛機(jī)數(shù)目輸入函數(shù)externvoidflycome〇;〃飛來飛機(jī)數(shù)目輸入函數(shù)externvoidfト。0();〃飛走飛機(jī)數(shù)目榆入函數(shù)externvoidjinrucaozuo();〃開始介入飛機(jī)調(diào)度界面進(jìn)行操作externvoidreallyexit();〃菜單界面退出函數(shù)/* 特別返回值函數(shù)externvoidf1();//flynum()中的函數(shù),得到所需的飛機(jī)飛來飛走數(shù)目的函數(shù)externintcome,go;〃外部參照的數(shù)值externvoidf2(intqw,intwq);〃畫出與機(jī)場stop對應(yīng)的八個矩形,在有用的地方寫上數(shù)字externintpanduan(charcc);〃判斷字符是否在1至8之間externchara1[8],b1[8];〃用來外部參照的字符數(shù)組externinta2[8],b2[8];〃用來外部參照的整形數(shù)組.飛機(jī)場操作界面voiddrawingO;畫機(jī)場調(diào)用的總函數(shù)voidsun();畫機(jī)場界面(包括太陽天空等)voidstop();畫機(jī)場界面(包括跑道,停車位,控制樓等)voidflip(structflyplane,intalpha,int(*tihuan)[8][2],intm);起飛降落時畫飛機(jī)的函數(shù)被voidflying和voidjiangluo調(diào)用,定位追蹤飛機(jī)坐標(biāo)參數(shù)voiddrawysh(structflyplane,intalpha);畫靜態(tài)飛機(jī)的函數(shù),飛機(jī)起飛和降落到機(jī)場時調(diào)用voidflying(structflyplane[],intms,int(*tihuan)[8][2J,intm,void*buffer,void*buffers[2]);飛機(jī)起飛的函數(shù)voidjiangluo(structflyplane[],intms,int(*tihuan)[8J[2],intm,void*buffer,void"buffers⑵);飛機(jī)降落的函數(shù)voiddengdai(int(*tihuan)[8][2],intdd,intang,intbbs[][2],void*buffers[2]);當(dāng)機(jī)場無停機(jī)位時,調(diào)用使其在空中等待voidxiaoshi(int(*tihuan)[8][2],structflyplane[],intms,intm);當(dāng)飛機(jī)起飛到空中之后,逐步向前縮小,產(chǎn)生飛機(jī)遠(yuǎn)去的效果voiddraws(int(*tihuan)[8][2],intk,intm);被voidxiaoshi調(diào)用,用來接收voidxiaoshi產(chǎn)生的飛機(jī)坐標(biāo)變換并畫出逐漸向前縮小的飛機(jī)voidflips(intalpha,int(*tihuan)[8][2],intbbs[][2],intdd);被voiddengdai調(diào)用,畫出天空中運(yùn)行的飛機(jī)voiddrawyshs(int(*tihuan)[8][2],intalpha,intbbs[][2],intdd);被voiddengdai調(diào)用,當(dāng)飛機(jī)到達(dá)預(yù)計(jì)位置時畫出飛機(jī)voidhunhe(structflyplane[],intms,int(*tihuan)[8][2J,void*buffer,void*buffers[2],intbbs[J[2],intdd,structflyplanee[J);當(dāng)天空中有等待飛機(jī),再按起飛時,被調(diào)用,讓兩架飛機(jī)同時起飛和降落;(以下含ppp的與起飛有關(guān),含pppp和ppppp的與降落有關(guān),功能類似)voidpppO(int*xycO,int(*tihuan)[8][2],int*aaa,int*qq,intab);被voidhunhe調(diào)用,用來判斷飛機(jī)運(yùn)行的狀態(tài)(飛直線或是轉(zhuǎn)彎)voidppp1(int*xycO,int*ps,int*aaa);voidppp2(int*xycO,int(*tihuan)[8][2],int*aaa,int*qq);voidppp3(int*xycO,int*ps,int*aaa);voidppp4(int*xycO,int(*tihuan)[8][2],int*aaa,int*qq);voidppp5(int*xycO,int*ps,int*aaa);voidppp6(int*xycO,int(*tihuan)[8][2],int*aaa,int*qq);voidppp7(int*xycO,int*ps,int*aaa);voidppp8(int*xycO,int(*tihuan)[8][2],int*aaa,int*qq);voidppp9(int*xycO,int*ps,int*aaa);voidppplO(int*xycO,int(*tihuan)[8][2],int*aaa,int*qq);voidpppll(int*xycO,int*ps,int*aaa);voidppp12(int*xycO,int(*tihuan)[8][2],int*aaa,int*qq,int*pd,int*k);voidppppO(int*xycO,int(*tihuan)[8]l2],int*bbb,int*qq);voidppppl(int*xycO,int*ps,int*bbb);voidpppp2(int*xycO,int(*tihuan)[8][2],int*bbb,int*qq);voidpppp3(int*xycO,int*ps,int*bbb);voidpppp4(int*xycO,int(*tihuan)[8][2],int*bbb,int*qq);voidpppp5(int*xycO,int*ps,int*bbb);voidpppp6(int*xycO,int(*tihuan)[8][2],int*bbb,int*qq);voidpppp7(int*xycO,int*ps,int*bbb,intms);voidpppp8(int*xycO,int(*tihuan)[8][2],int*bbb,int*qq);voidpppp9(int*xycO,int*ps,int*bbb);voidpppplO(int*xycO,int(*tihuan)[8][2],int*bbb,int*qq,intab);voidppppll(int*xycO,int*ps,int*bbb);voidppppl2(int*xycO,int(*tihuan)[8][2],int*bbb,int*qq,intac);voidppppl3(int*xycO,int*ps,int*bbb);voidppppl4(int*xycO,int(*tihuan)[8][2],int*bbb,int*qq,intab,structflyplanee[],intms,int*q);(因?yàn)榻德鋾r選擇停機(jī)位有兩種情況,與pppp區(qū)分)voidpppppl5(int*xycO,int(*tihuan)[8][2],int*bbb,int*qq,intac);voidppppp!6(int*xycO,int*ps,int*bbb);voidpppppl7(int*xycO,int(*tihuan)[8][2],int*bbb,int*qq,structflyplanee[],intms,int*q);4.退出界面三.重點(diǎn)程序分析voidkeyoperation0//這是菜單界面的主要操作函數(shù),通過按鍵完成(//0bintx,y;//xy為坐標(biāo)charc,;/Z成為輸入的字符x=100;y=100;bg; /〃圖形初始化11: //esc退出返回出cvp;bkgO;while(1) //(while(1) //(if(kbhitO)11 〃2b(c=getch();if(c=Esc)break;elseif(c==6)彈出菜單?//Z第一連接(//1filebklO;y=chl(100,160,RED);的位置?/filelO;zong01/? 如果用戶按鍵*〃/zong/?如果為ESC鍵,則退出程序?//?如果為"CTRL+F"組合犍,則/?首先將選項(xiàng)條標(biāo)記在第一個選項(xiàng)/?然后繪制菜單?/while(c!=CR)Illc=getch(); /?等待用戶按鍵?/if(c==Esc) /?如果為ESC鍵,則回到初始界面的狀態(tài)?/goto11; // 如何讓while函數(shù)退出,條件雖然是c=crオ推出,用go操作else(II3if(c==up){ /?當(dāng)按up鍵時?/if(y!=160)(y-=30; /?否則,將選項(xiàng)條的坐標(biāo)y值減30,并重新畫選項(xiàng)條和菜單?/filebklO;y=chl(100,y,RED);filelO;)/?如果當(dāng)前選項(xiàng)條已在最頂項(xiàng),則不做處理?/if(c=down)/?當(dāng)按down鍵時,處理情況與上類似?/if(y1=190)(y+=30;filebklO;y=chl(100,y,RED);filel();)}} /*else*/} //whileif(y==160)(maini0;)elseif(y==190)(reallyexit0;gotoqaaa;
elseif(c==6) elseif(c==7)if(c==6) elseif(c==7)出菜單?///第2連接(//1filebk20;y=chl(200,160,RED);的位置?/file2O;//12:while(c!=CR)(111c=getch();if(c==Esc)狀態(tài)?//?如果為"CTRL+G"組合鍵,則彈/?首先將選項(xiàng)條標(biāo)記在第一個選項(xiàng)/?然后繪制菜單?//?等待用戶按鍵?/elsegoto11;/?如果為ESCelsegoto11;/?否則分別進(jìn)行按鍵處理*/if(c==up){ /?當(dāng)按up鍵時?/if(y!=160)(y-=30; /?否則,將選項(xiàng)條的坐標(biāo)y值減30,并重新畫選項(xiàng)條和菜單?/filebk2O;y=chl(200,y,RED);file2O;) /?如果當(dāng)前選項(xiàng)條已在最頂項(xiàng),則不做處理?/)if(c=down){ /?當(dāng)按down鍵時,處理情況與上類似?/if(y!=220)(y+=30;filebk2();y=chl(200,y,RED);)} /*else*/〃3} //while//2if(y==160)(flynumO;}if(y==190)(flycome0;)if(y==220)(flygoO;)elseif(c==7) */ //1elseif(c==8) /?如果為"CTRL+H"組合鍵,則彈出菜單?//Z第一連接(//1filebk30;y=chl(300,160,RED); /?首先將選項(xiàng)條標(biāo)記在第一個選項(xiàng)的位置?/file3O; /?然后繪制菜單?/while(c!=CR)(//2c=getch(); /?等待用戶按健?/if(c==Esc) /?如果為ESC鍵,則回到初始界面的狀態(tài)?/goto11; // 如何讓while函數(shù)退出,條件雖然是c=crオ推出,用go操作else//3if(c==up){ /?當(dāng)按up鍵時?/if(y!=160)(y-30; /?否則,將選項(xiàng)條的坐標(biāo)y值減30,并重新畫選項(xiàng)條和菜單?/filebk3O;y=chl(300,y,RED);file3O;)/?如果當(dāng)前選項(xiàng)條已在最頂項(xiàng),則不做處理?/)if(c==down){ /*當(dāng)按down鍵時,處理情況與上類似*/if(y!=190)y+=30;filebk3();
y=chl(300,y,RED);file3();)}} /*else*/} //whileif(y==160)(zuyuan();}elseif(y==190)(shuoming();}} /* elseif(c==6) */ //1)/* if(kbhit0) */ //2e)/*-while⑴/*-while⑴*///zong01//leqaaa://getchO;closegraph0;)說明:1.進(jìn)入菜單界面以后,由于菜單有三處可操作,有control+fcontrol+gcontrol+h分別控制,control+f分為兩處,ー個是開始ー個是退出,退出直接關(guān)掉函數(shù),開始時進(jìn)入機(jī)場飛機(jī)起降調(diào)度函數(shù)。2control+h是版主函數(shù)的菜單欄,打開以后,可以查閱組員信息及其相關(guān)的按鍵操作引導(dǎo),其中分為上下兩部分,第一個是介紹鍵盤操作按鍵的相關(guān)說明,用來幫助操作者熟悉菜單界面的按鍵,通過按鍵的熟悉,可以做到了熟于胸。3.control+g是重點(diǎn),在這一菜單欄目下,需要輸入飛機(jī)飛來的以及飛走的數(shù)目,因?yàn)轱w機(jī)場調(diào)度是非常有規(guī)律的,必須提前制定好ー個科學(xué)合理的周密計(jì)劃,比如有3架飛機(jī)飛過來,調(diào)度員在明確任務(wù)以后,即知道有三家飛機(jī)即將飛過來,這樣可以庭前做好準(zhǔn)備,可以順利完成任務(wù)。所以飛機(jī)飛來以及飛走的數(shù)目非常重要,這里用come,g。兩個int型整型變量保存,當(dāng)調(diào)度員得到這兩個參數(shù)以后,可以在預(yù)先是極好的選擇菜單欄中選擇(飛來)(飛走)兩個模塊分別輸入,按下回車鍵以后,會在菜單界面顯示與飛機(jī)場停飛機(jī)位置對應(yīng)的8個stop矩形框,例如原來要有4架飛機(jī)飛走,ー開始的時候,讓四架飛機(jī)停在ハ個飛機(jī)停機(jī)位不能沒有規(guī)律,這時候,在菜單界面下,(飛走)模塊中8個stop鍵入4個數(shù)字,在1到8之間,比如輸入1,5,7,8,?即在1,5,7,8四個停機(jī)位置寫上數(shù)字,表示在這四個位置,會有飛機(jī)起飛,與此同時,通過外部參照,將信息傳遞,在進(jìn)入飛機(jī)場附近起飛降落及其調(diào)度的界面中,1,5,7,8號stop就會停上飛機(jī)當(dāng)come及go等相關(guān)參數(shù)輸入完畢以后,即可進(jìn)入操作對幾個重要流程過程分析:1.0起飛:CaseFl: caozuo(&jiluf, sss,bbs,tihuan,dd,plane,planee,pp,buffer,buffers,0);下面是調(diào)用的函數(shù)(caozuo0){sss=0;作為判斷是否運(yùn)行flying(單純起飛)jikif++;對起飛飛機(jī)數(shù)目累加if(pp[O]==l)判斷〇號停機(jī)位是否有飛機(jī),無則不運(yùn)行(chioce=0;起飛需要的參數(shù),與路徑有關(guān)if(dd[O]!=Olldd[l]!=l)是否空中與選定停機(jī)位都有飛機(jī),有則運(yùn)行drawysh(planee[〇],〇);消除掉畫的靜態(tài)飛機(jī)if(dd[O]==l&&dd[1]!=2)判斷空中等待的飛機(jī)情況(ー架還是兩架)ch=l5ー個與voiddengdai和hunhe用關(guān)的參數(shù)if(dd[l]==2&&dd[0]!=l)ch=2;if(dd[0]==l&&dd[l]==2)ch=l;hunhe(plane,chioce,tihuan,buffer,buffers,bbs,ch,planee);同時起飛和降落的函數(shù)pp[O]=l;停機(jī)位有飛機(jī)if(dd[0]=l&&dd[l]!=2)dd[O]=O;還原未調(diào)用前的數(shù)據(jù)if(dd[l]==2&&dd[0]!=l)dd[l]=l;還原未調(diào)用前的數(shù)據(jù)if(dd[0]==l&&dd[l]==2)dd[OJ=O;還原未調(diào)用前的數(shù)據(jù)sss=l;運(yùn)行該函數(shù)后,使其不能接著運(yùn)行相面的單純起飛函數(shù)if(sss=O)意味著同時起飛降落沒有運(yùn)行if(dd[O]==O&&ddロ]==1)天空中無等待飛機(jī)(pp[0]=0;該停機(jī)位無飛機(jī)了chioce=0;與路徑有關(guān)的參數(shù)drawysh(planee[〇],〇);消除掉先前畫的靜態(tài)飛機(jī)flying(plane,chioce,tihuan,0,buffer,buffers);起飛困數(shù)xiaoshi(tihuan,plane,chioce,〇);產(chǎn)生遠(yuǎn)去效果)break;2.0降落:caseF9:jiluj++;對降落的的飛機(jī)數(shù)目累加j=0;初始化判斷機(jī)場飛機(jī)數(shù)目for(i=0;i<8;i++)if(pp[i]==1)
j++;機(jī)空中等待數(shù)(坐標(biāo))機(jī)空中等待數(shù)(坐標(biāo))飛機(jī)(if(dd⑼==0)空中1號等待位置無等待飛(dengdai(tihuan,ddlO],ang,bbs,buffers);dd[0]=l ;ー個與空中飛行有關(guān)的參break;}if(dd[l]==l)空中2號等待位置無等待(空中等待dd[l]=2;空中等待dd[l]=2;ー個與空中飛行有關(guān)的參數(shù)(坐標(biāo))break;)break;)if(j<8)意味著有空余的停機(jī)位,可以降落(按從小到大的順序選擇停車位for(i=7;i>=0;i-)|if(pp[i]==O)(chioce=i;))pp[chioce]=I;與坐標(biāo)有關(guān)的參數(shù)jiangluo(plane,chioce,tihuan,1,buffer,buffers);降落函數(shù)drawysh(planee[chioce],〇);畫靜態(tài)的飛機(jī))if(dd[0]==l&&dd[l]==2&&j==8)如果無空余停機(jī)位,空中等待也飽和則無法運(yùn)行break;break;3.0轉(zhuǎn)彎與直線運(yùn)行for(;ang<0;ang=(ang+1)%360)控制轉(zhuǎn)彎角度(flip(plane[ms],ang,tihuan,m);調(diào)用畫飛機(jī)函數(shù)delay(lO);flip(plane[ms],ang,tihuan,m);擦掉所畫的}while(tihuan[m]⑹[〇]<380)運(yùn)行距離控制(flip(plane[ms],ang,tihuan,m);iH|セ機(jī)delay(lO);flip(plane[ms],ang,tihuan,m);擦飛機(jī)改變ー個重要的基準(zhǔn)坐標(biāo)(plane[ms].xyc[0],plane[ms].xyc[1])x=x+cos(ang*PI/l80.0);y=y+sin(ang*PI/l80.0);xl=81+ab*100+x;y1=405+5〇?ac+y;plane[ms].xyc[O]=xl;plane[ms].xyc[1]=y1;4.0同時起飛降落其一都直線飛行(1,1)while(k==0llq==0)if(xyc0[0]==l&&xyc0[l]==l)都飛直線(if(pd==l)起飛是否結(jié)束tlip(plane[ms],angl,tihuan,O);畫起飛飛機(jī)flips(ang2,tihuan,bbs,dd-l);畫降落飛機(jī)delay(lO);if(pd==l)flip(plane[ms],ang1,tihuan,0);擦起飛飛機(jī)flips(ang2,tihuan,bbs,dd-l);擦降落飛機(jī)坐標(biāo)變換起飛基準(zhǔn)坐標(biāo)變換xl=xl+cos(ang1*PI/180.0);y1=yl+sin(angl*P1/180.0);x2=81+ab*100+xl;y2=405+5〇?ac+yl;plane[msj.xyc[0J=x2;plane[msj.xyc[l]=y2;降落基準(zhǔn)坐標(biāo)變換x3=x3+cos(ang2*PI/l80.0);y3=y3+sin(ang2*PI/l80.0);x4=220+(dd-l)*130+x3;y4=30+(dd-l)*50+y3;bbs[dd-l][0]=x4;bbs[dd-l][l]=y4;)其二都轉(zhuǎn)彎if(xyc0[0]==0&&xyc0[l]==0)(angl+=a;起飛角度變換ang2+=b;降落角度變換flip(plane[ms],angl,tihuan,0);flips(ang2,tihuan,bbs,dd-1);delay(15);flip(plane[ms],angl,tihuan,0);flips(ang2,tihuan,bbs,dd-1);}其三一個轉(zhuǎn)彎ー個飛直線if(xyc0[0]==0&&xyc0[1]==1)angl+=a;起飛角度變換flip(plane[ms],angl,tihuan,O);flips(ang2,tihuan,bbs,dd-1);delay(lO);flip(plane[ms],ang1,tihuan,O);flips(ang2,tihuan,bbs,dd-1);降落基準(zhǔn)坐標(biāo)變換x3=x3+cos(ang2*PI/l80.0);y3=y3+sin(ang2*P2180.〇);x4=220+(dd-l)*130+x3;y4=30+(dd-1)*50+y3;bbs[dd-l][0J=x4;bbs[dd-l][l]=y4;}5.0同時起飛和降落中的控制原理在ppp,pppp,ppppp被調(diào)用后,有它們來判斷,下面舉ー個例子voidppp4(int*xycO,int(*tihuan)[8][2],int*aaa,int*qq)(if(tihuan[〇]⑹[〇]>10)運(yùn)動狀態(tài)判斷xycO[O]=l;是則繼續(xù)執(zhí)行(可能會在執(zhí)行兩個不同的代碼,但不會用影響)elsexycO[O]=O;換飛機(jī)運(yùn)動狀態(tài)aaal4J=0;意味著這個判斷語句以后將不再執(zhí)行aaa[5]=l;執(zhí)行下個判斷語句*qq=l;改變角度的參數(shù),決定是左轉(zhuǎn)還是右轉(zhuǎn))}重要數(shù)據(jù)結(jié)構(gòu):1.0飛機(jī)參數(shù)structfly{intxyc[2];(基準(zhǔn)坐標(biāo))intplanes[8][2];(飛機(jī)各個坐標(biāo)的相對值)};定義了兩組structflyplane[10]={{{81,405},{{5,-3},{-5,-3},{-9,-9},{-9,9},{-5,3},{5,3},(7,0},{5,-3}}),{{81,455},{{5,-3},{-5,-3},{-9,-9},{-9,9},{-5,3},{5,3},{7,0},{5,-3}}},{{181,405},{{5,-3},{-5,-3},{-9,-9},{-9,9},{-5,3},{5,3},{7,0},{5,-3}}},{{181,455},{{5,-3},{-5,-3},{-9,-9},{-9,9},{-5,3},{5,3},{7,0},{5,-3}}},{{281,405},{{5,-3},{-5,-3},{-9,-9},{-9,9},{-5,3},{5,3},{7,0},{5,-3}}},{{281,455},{{5,-3},{-5,-3},{-9,-9},{-9,9},{-5,3},{5,3},{7,0},{5,-3}}},{{381,405},{{5,-3},{-5,-3},{-9,-9},{-9,9},{-5,3},{5,3},{7,0},{5,-3}}},{{381,455},{{5,-3},{-5,-3},{-9,-9},{-9,9},{-5,3},{5,3},{7,0},{5,-3}}),{{500,50},{{5,-3},{-5,-3},{-9,-9},{-9,9},{-5,3},{5,3},{7,0},{5,-3}}}};這些是對運(yùn)動飛機(jī)設(shè)定的,這些數(shù)據(jù)中后面的planes是始終不變;變的是xycロU,并通過改變它傳遞到voidflip等函數(shù)中,voidflip需要依此來畫出飛機(jī);另外一個結(jié)構(gòu)planee是針對畫靜態(tài)飛機(jī)的,voidyuansh函數(shù)中調(diào)用的重要數(shù)據(jù)2.0三維數(shù)組tihuantihuan會被voidflip和voidflips調(diào)用,并在這些函數(shù)中追蹤飛機(jī)此時的位置坐標(biāo),接著反饋到voidflying和voidjiangluo及voidhunhe和voiddengdai中:這是控制飛機(jī)飛行狀態(tài)的重要參數(shù),例如,當(dāng)tihuan[〇][6][〇]<150時,起飛飛機(jī)直飛(或滑行)直到tihuan[〇][6][〇]>=150(tihuan[〇]ロロ是針對起飛的,tuhuanロ]ロロ是針對降落的,tihuan[3]ロロ是針對等待的,tihuan[2]ロロ是等待時的不變坐標(biāo))voidflips函數(shù)中沒有planes數(shù)據(jù),而是用tihuan[2]ロロ代替的。3.0關(guān)于角度的的ang,ang!和ang2其中ang參與降落和起飛角度空中,每次調(diào)用voidflying和voidjiangluo時,ang初始化為零。ang1和ang2在同時起飛和降落中用到,angl是針對起飛,ang2是針對降落,同樣每次調(diào)用voidhunhe時它們將被初始化。4.0關(guān)于如何選擇停機(jī)位和從哪個停機(jī)位起飛的choice這個數(shù)據(jù)在main函數(shù)中調(diào)用voidflying,voidjiangluo及voidhunhe之前將由所選擇的按鍵來決定(傳遞時是用的ms)。5.0同時起飛降落中用來判斷的數(shù)據(jù)aaa口和bbb[]初始化時它們都是aaa[0]=l,bbb[0]=l,其他的都為零,它們的運(yùn)用這里介紹一下。在voidhunhe函數(shù)的循環(huán)中飛機(jī)運(yùn)行一個單位后,調(diào)用如下只寫了一個:if(aaa[0]==l)pppO(xycO,tihuan,aaa,&a,ab);在ppp函數(shù)中判斷xyc0[]的值并反饋。6.0還有其他的ー些數(shù)據(jù)將在源代碼中說明。算法分析:1.0:關(guān)于動畫開始時聽同學(xué)的意見,先畫飛機(jī),然后用背景色再畫掩蓋,但由于飛行界面顏色不ー,難以做到:再后來想了用getimage和putimage來實(shí)現(xiàn),但是飛行時效果太差,飛機(jī)不停閃爍,達(dá)不到要求;最后我們選用setwritemode(l)這ー異或模式來畫飛機(jī)和擦飛機(jī),這樣飛行效果比較好,同時也便于控制(只是不停畫飛機(jī)和擦飛機(jī));但是這也有一個問題,由于是用異或模式畫飛機(jī)時飛機(jī)的顏色可能會改變,所以對飛機(jī)的顏色有所要求才能達(dá)到好的效果;而且,當(dāng)不運(yùn)行時飛機(jī)就消失了,所以需要畫靜態(tài)飛機(jī),例如,當(dāng)飛機(jī)降落后,到達(dá)停機(jī)位時需要接著畫一個飛機(jī)(靜態(tài)),不管怎樣,這是我們想到的相對較好的動畫算法,當(dāng)然,因?yàn)槲覀儫o法參照以前學(xué)長的程序,所以可能有很多不完善之處。2.0關(guān)于飛行降落的路徑設(shè)定(動畫路徑)單純的起飛降落路徑比較簡單,只需兩種路徑,起飛大類和降落大類,用ー類的可以通過參數(shù)choice(ms)來實(shí)現(xiàn)。而對于同時起飛和降落來說就比較復(fù)雜了,必須把起飛和降落放在同一循環(huán)中,傳遞choice(ms)就難以實(shí)現(xiàn),起飛和降落的步調(diào)經(jīng)常改變,ー個飛行路徑就要一個函數(shù),由于有8個停機(jī)位,這樣的話就沒有什么意義了,況且在這個動畫中兼顧起飛和降落,一個路徑設(shè)置就比單純的起飛和降落麻煩得多??紤]到以上問題,經(jīng)過仔細(xì)考慮后,我們換了一種路徑設(shè)置算法:同時起飛和降落時,一共有四種狀態(tài),即:1.0起飛飛機(jī)和降落飛機(jī)都飛(滑行)直線;2.0兩者都轉(zhuǎn)彎;3.0起飛飛機(jī)直飛(滑行)降落飛機(jī)轉(zhuǎn)彎;4.0起飛飛機(jī)轉(zhuǎn)彎和降落飛機(jī)直飛。設(shè)定數(shù)組xyc⑵,xyc[0]針對起飛飛機(jī),xyc[l]針對降落飛機(jī),它們可取兩個值(0或1),〇代表轉(zhuǎn)彎,1代表直飛或滑行。這樣在混合運(yùn)動循環(huán)中加一組判斷語句(ppp,pppp和ppppp)用來判斷飛機(jī)的狀態(tài)以及及時改變飛機(jī)運(yùn)行狀態(tài),同時對ー些參數(shù)變換使之能夠較好的達(dá)到多重動畫目的且互不影響。7.0再看一下程序運(yùn)行的效果.進(jìn)入操作函數(shù)后的機(jī)場界面2,飛機(jī)起飛降落的仿真情形3,同時起降的情形四,流程圖退出五,任務(wù)分エ陳明:50.cpp52.cpp53.cpp54.cpp55.cpp56.cpp51.h樊旭:gchOl.cppgch02.cpp gch03.cpp gch04.cppgch05.cppgch06.cpp gch07.cpp gch08.cpp六,編程心得這是我們第一次做這種幾千行的程序,肯定會存在很多的不足之處。下面,我就列舉出幾點(diǎn):首先,我們還有很多小的bug沒有解決,雖然這些bug不是特意去做針對性的測試也是很難看出來的。但是我們的程序在功能這個方面確實(shí)還存在比較多的漏洞。有的雖然解決起來不難,但是由于牽涉的地方比較多,解決起來比較復(fù)雜,比如說要在多個函數(shù)里面增加數(shù)據(jù)。加上時間上的限制,我們也就沒有對這些小bug給予重點(diǎn)處理了。其次,是算法上的問題。我們的機(jī)場飛機(jī)起飛降落算法純粹是我們兩人商量出來的結(jié)果,沒有借鑒任何現(xiàn)成的控制算法。所以看起來顯得有些幼稚,很多的地方都是可以優(yōu)化的。這種優(yōu)化可以從兩個方面來看。ー個方面是算法的實(shí)現(xiàn)效果。我們的這個控制算法對各個飛機(jī)制還做不到一切盡在掌控之中,有時候偶爾會出現(xiàn)一些“空中事故”。另外一個方面是算法的效率問題,我們覺得這一部分控制算法的效率太低,時間復(fù)雜度比較高,應(yīng)該有很大的優(yōu)化空間。還有就是程序模塊化設(shè)計(jì)這個方面的問題,我們存在的一個很大的不足就是在很多時候我們編寫程序都是走一步算ー步,沒有一個詳細(xì)的設(shè)計(jì)提綱。以致于后面做出來的程序缺乏條理性,很多控制量糾結(jié)在ー起。雖然后來經(jīng)過大動干戈的修改在這ー方面改進(jìn)了不少,但是還是有很多的函數(shù)達(dá)不到較高的復(fù)用性,程序的可移植性并不強(qiáng)。通過這10周的C語言課程設(shè)計(jì),我們鞏固上學(xué)期所學(xué)的C語言的基本知識。由于我們在學(xué)習(xí)c語言的過程中掌握的只是很基本的東西,所以在課程設(shè)計(jì)過程中遇到了不少的困難.程序要求在圖形界面下完成,然而根據(jù)以前所學(xué)的內(nèi)容,我們可以說是對圖形生成和處理等都一無所知。不僅如此,我們所編的程序多達(dá)幾千行,對我們而言,這是一個巨大的工程,它牽涉到C語言編程知識的許多不同領(lǐng)域,所以此項(xiàng)任務(wù)困難重重。我們必須通過自學(xué)來掌握c語言編程的技巧及軟件開發(fā)的基本的方法。我們的項(xiàng)目是機(jī)場飛機(jī)起飛降落及其調(diào)度,它涉及到圖形的繪制和動畫的實(shí)現(xiàn),作為ー個可供使用的程序,它必須還要有操作界面,因此程序者需要有界面的圖形設(shè)計(jì)和鍵盤的應(yīng)用的相關(guān)知識。如此ー來,光是學(xué)習(xí)相關(guān)知識就是一個極為繁重的任務(wù)。不過,我們是雙人開發(fā),對于程序我們進(jìn)行了分工處理,所以我們只需學(xué)習(xí)自己任務(wù)所需的知識即可,然后再在編程過程中以實(shí)際操作為例將自己所學(xué)授于隊(duì)友,這樣大大節(jié)省了編寫程序前的知識儲備時間,并且通過知識交流來彌補(bǔ)自己的不足,同時也培養(yǎng)了團(tuán)隊(duì)協(xié)作精神。在進(jìn)行編寫時所學(xué)要學(xué)習(xí)的雖然只有圖形與動畫,但是其中數(shù)據(jù)繁多,且各類數(shù)據(jù)之間又聯(lián)系緊密。因此在編寫過程中稍有不慎就會發(fā)生錯誤,我們對于程序的調(diào)試也往往是在這部分進(jìn)行。程序的調(diào)試過程是很費(fèi)時間和精力的,有時候程序出現(xiàn)的BUG只是數(shù)據(jù)的數(shù)值或關(guān)系沒處理好,只要作出相應(yīng)的調(diào)動即可。有時程序出現(xiàn)的BUG卻需要添加函數(shù)甚至是刪除已寫好的函數(shù)。此外,我們也要感謝我們的老師,課程設(shè)計(jì)過程中,當(dāng)我們遇到問題解決起來有困難時,老師們和助教們都耐心的給我們解答,讓我們獲益匪淺。通過課程設(shè)計(jì),我們學(xué)到了不少東西,不僅是c語言的知識,方法,技巧,更多的是我們在學(xué)習(xí)過程中掌握的一些學(xué)習(xí)的技巧,手段和方法。正如有個學(xué)長曾經(jīng)說過的一句話:“經(jīng)歷了C語言課程設(shè)計(jì)以后,你會發(fā)現(xiàn)你的C語言編程能力以到達(dá)ー個以前完全不能相比的高度”。課程設(shè)計(jì)雖然結(jié)束了,但是它給我們帶來好處是很多的,影響是很遠(yuǎn)的,我們感覺到,只有認(rèn)真的完成這樣的任務(wù),オ會在實(shí)踐中有所提高,因此,我們應(yīng)該在以后的學(xué)習(xí)中更加重視動手能力,學(xué)會在動手中發(fā)揮自己的想像,與所學(xué)的東西結(jié)合,學(xué)會創(chuàng)新,這個オ是我們大學(xué)學(xué)習(xí)的真正目的所在。七.參考資料王士元.C高級實(shí)用程序設(shè)計(jì).北京:清華大學(xué)出版社.1996周純杰,劉正林,何頂新等.標(biāo)準(zhǔn)C語言程序及應(yīng)用.武漢:華中科技大學(xué)出版社.2005譚浩強(qiáng).C語言程序設(shè)計(jì).北京:清華大學(xué)出版社,2000ハ,源代碼//51.H頭文件#include<dos.h>#include<graphics.h>#include<stdlib.h>#include<bios.h>defineEsc27defineEnter13definebl11defineup72definedown80defineLEFT75defineRIGHT77defineALT_F33defineSPACE32defineCTRL-H8defineCR13defineig(gd,gm)initgraph(&gd,&gm,"c:\\TC30\\BGI");definebgintgd-DETECT,gm;detectgraph(4gd,ftgm);ig(gd,gm);defineegclosegraph0;defineghgetchO;definesc(x)setcolor(x);definests(a,b,c)settextstyle(a,b,c);definesfs(a,b)setfillstyle(a,b);defineoxy(a,b,s)outtextxy(a,b,s);defineret(a,b,n,m)rectangle(a,b,n,m);definetbg(i)textbackground(i);definecrclrscr0;definetc(i)textcolor(i);definew(q,w,e,r)window(q,w,e,r);definemt(q,w,e,r,t,y)movetext(q,w,e,r,t,y);definept(a,s,d,f,g)puttext(a,s,d,f,g);
definegt(a,s,d,f,g)gettext(a,s,d,f,g);definetm(i)textmode(i);definecvpclearviewport0;definesbc(x)setbkcolor(x);definefo(i,a,b)for(i-a;i<-b;i++)definemmvoidmain0defined(n)delay(n);definebkbreak;#defineHZKU"c:Wtc30\\BIN\\hzkl6"/?52.cpp中函數(shù)調(diào)用?/charbyte2,intcharbyte2,intexternvoidShowHz(intleft,inttop,unsignedcharbytel,unsignedcolor);charbyte2,intcharbyte2,intexternvoidouthzxy(intx,inty,char*str,intcolor);externvoidShowBigHz(intleft,inttop,unsignedcharbytel,unsignedcolor);externvoidoutbighzxy(intx,inty,char*str,intcolor);/?53.cpp中函數(shù)調(diào)用?/externvoidcbO;externvoidwelcome0;externintfunction60;externvoidloading0;externvoidtimeshow0;externintww;/?54.cpp中函數(shù)調(diào)用?/externvoidbkg0;externvoidfilebkl0;externvoidfilebk20;externvoidfilebk30;externvoidfilel0;externvoidfile20;externvoidfile30;externintchi(intx,inty,intc);externvoidfilebk210;externvoidfile210;externvoidsign(inta,intb);externvoidshowinput(intx,inty,charch[]);externvoidprint(intx,inty,charstr[]);/?55.cpp中函數(shù)調(diào)用?/externvoidkeyoperationO;/?56.cpp中函數(shù)調(diào)用?/externvoidbegin0;externvoidflynum0;externvoidflycome0;externvoidflygoO;externvoidjinrucaozuoO;externvoidreallyexit0;externvoidzuyuan0;externvoidshuoming0;externvoidprint(intx,inty,charstr[]);externvoidstructer(intx,inty,charc[]);externvoidfl0;externintcome,go;externvoidf2(intqw,intwq);externintpanduan(charcc);externcharal[8],bl[8];externinta2[8],b2[8];/?57.cpp中函數(shù)調(diào)用?/externvoidmaini0;externvoiddrawing0;externvoidsunO;//voidmohu(inttihuan[][2]);structfly(intxyc[2];intplanes[8][2];);externvoidflip(structflyplane,intalpha,int(?tihuan)[8][2],intm);externvoiddrawysh(structflyplane,intalpha);externvoidflying(structflyplane[],intms,int(?tihuan)[8][2],intm,void?buffer);externvoidjiangluo(structflyplane[]9intms,int(-tihuan)[8][2],intm,void?buffer);externvoiddengdai(structflyplane[],int(*tihuan)[8][2],intm,void^buffer);externvoidstopO;externvoidxiaoshi(int(-tihuan)⑻[2],structflyplane[],intms,intm);externvoiddraws(int(*tihuan)[8][2],inta,structflyplane[],intk,intm);externvoidflips(intalpha,int(*tihuan)[8][2],intm,int?bbs);externvoiddrawyshs(int(?tihuan)[8][2],intalpha,int?bbs);#include<stdio.h>#include<dos.h>#include<time.h>#include<graphics.h>#includeくconio.h>#include<stdlib.h>#includeくmath.h>#include<bios.h>#include"51.Hwmm(bg;inti;if(function60=l)keyoperationO;〃gh;//eg;cvp;printf("%4d%4d\n",come,go);intii;fo(ii,0,7){printf("%4dw,al[ii]);)printf(w\n");fo(ii,0,7)(printf("%4d",a2[ii]);}printf("\nw);fo(ii,0,7)(printf(,,%4d",bl[ii]);)printf("\n");fo(ii,0,7)printf(wS4dH,b2[ii]);}printf("\n");)/Z漢字書寫函數(shù) 鼠標(biāo)函數(shù)#include<stdio.h>#include<dos.h>#include<time.h>#include<graphics.h>#include<conio.h>#include<stdlib.h>#include<math.h>#include<bios.h>#include"51.HwexternvoidShowHz(intleft,inttop,unsignedcharbytel,unsigned charbyte2,intcolor);externvoidouthzxy(intx,inty,char?str,intcolor);externvoidShowBigHz(intleft,inttop,unsignedcharbytel,unsignedcharbyte2,intcolor);externvoidShowBigHz(intleft,inttop,unsignedcharbytel,unsignedcharbyte2,intcolor);externintread(int*xnew,int*ynew);externvoidcursor(intx,inty);externintinit(intxmi,intxma,intymi,intyma);externvoiddraw-mouse(int*xold,int*yold,int?mbutt);voidShowHz(intleft,inttop,unsignedcharbytel,unsignedcharbyte2,intcolor)(FILE?hzk;unsignedcharbuf[32];unsignedcharmark;longp;inti,j,y;intquma,weima;hzk-fopen(HZKU,"rb");if((hzk-NULD)(outtextxy(10,10,"Cannotopenhzkfile!Pressanykeytoquit...");exit(1);}if((bytel>=0xal&&bytel<=0xfe)&&(byte2>?0xalft&byte2<=0xfe))(quma-bytel-OxaO;weima-byte2-0xa0;p-(quma-1)?94+weima-l;p*=32;fseek(hzk,(long)p,SEEK-SET);fread(buf,sizeof(unsignedchar),32,hzk);fclose(hzk);for(i-0,ytop;i<31;i+-2,y++){for(mark-0x80,j?0;mark>0;mark-mark?l,j++)(if((buf[i]&mark)!=0)putpixel(left+j,y,color);if((buf[i+1]ftmark)!=0)putpixel(left+j+8,y,color);)))fclose(hzk);}voidouthzxy(intx,inty,char?str,intcolor)(intoldcolor;oldcolor-getcolor0;setcolor(color);while(*str)(if(((unsignedchar)*str>-0xa1&&(unsignedchar)?str<-0xfe)&&((unsignedchar)?(str+1)>-0xal&&(unsignedchar)?(str+1)<-0xfe))(ShowHz(x,y,?str,?(str+1),color);str+-2;x+?16+2;moveto(x,y);)else(charenstr[2];moveto(x,y);?enstr-?str;?(enstr+1)■‘、〇’;settextstyle(O,0,1);outtextxy(x,y+4,enstr);x+=8+l;str++;})setcolor(oldcolor);)voidShowBigHz(intleft,inttop,unsignedcharbytel,unsignedcharbyte2,intcolor)FILE?hzk;unsignedcharbuf[32];unsignedcharmark;longp;inti,j,y;intquma,weima;hzk?fopen(HZKU,"rb");if((hzk-NULL))(outtextxy(10,10,"Cannotopenhzkfile!Pressanykeytoquit...");exit⑴;)if((bytel>=0xal&&bytelく=0xfe)&&(byte2>=0xal&&byte2く=0xfe))(quma-bytel-OxaO;weima-byte2-0xa0;p-(quma-1)?94+weima-l;P??32;fseek(hzk,(long)p,SEEK-SET);fread(buf,sizeof(unsignedchar),32,hzk);fclose(hzk);for(i-0,y-top;i<31;i+-2,y+-2)(for(mark-0x80,j-0;mark>0;mark?mark?l,j+-2)(if((buf[i]&mark)!-0)(putpixel(left+j,y,color);putpixel(left+j,y+1,color);putpixel(left+j+1,y,color);putpixel(left+j+1,y+1,color);}if((buf[i+l]&mark)!-0)(putpixel(left+j+16,y,color);putpixel(left+j+16,y+1,color);putpixel(left+j+16+1,y,color);putpixel(left+j+16+1,y+1,color);})))fclose(hzk);)voidoutbighzxy(intx,inty,char*str,intcolor)(intoldcolor;oldcolor-getcolor0;setcolor(color);while(*str)(if(((unsignedchar)*str>=0xa1&&(unsignedchar)?str<=0xfe)&&((unsignedchar)?(str+1)>-0xal&&(unsignedchar)?(str+1)<-0xfe))(ShowBigHz(x,y,?str,?(str+1),color);str+-2;x+?32+4;moveto(x,y);)else(charenstr[2];moveto(x,y);?enstr=*str;?(enstr+1)■'、〇';settextstyle(0,0,2);outtextxy(x,y+4,enstr);X+-16+2;str++;)}setcolor(oldcolor);}intread(int?xnew,int*ynew)(unionREGSregs;intstatus;regs.x.ax-3;int86(51,ftregs,Aregs);?xnew=regs.x.ex;?ynew=regs.x.dx;status-regs.x.bx;returnstatus;}voidcursor(intx,inty)setcolor(15);line(x,y,x+5,y+15);line(x,y,x+15,y+5);line(x+5,y+15,x+15,y+5);line(x+11,y+9,x+17,y+15);line(x+9,y+11,x+15,y+17);line(x+17,y+15,x+15,y+17);)intinit(intxmi,intxma,intymi,intyma)(unionREGSregs;intretcode;regs.x.ax-0;int86(51,Aregs,Gregs);retcode=regs?x.ax;if(retcode-0)return0;regs.x.ax-7;regs.x.cx-xmi;regs.x.dx=xma;int86(51,Aregs,Aregs);regs.x.ax-8;regs.x.cx-ymi;regs.x.dx-yma;int86(51,Aregs,Aregs);returnretcode;)voiddraw-mouse(int?xold,int?yold,int?mbutt)(intx-old-*xold,y?old-*yold;intx_new,y.new;?mbutt=read(Ax.old,Ay.old);?mbutt=read(Ax-new,Ay_new);setwritemode(XOR-PUT);cursor(x-old,y-old);delay(100);cursor(x.new,y_new);*xold=x-new;?yold?y-new;)/Z開始?xì)g迎界面#include<stdio.h>#include<dos.h>#include<time.h>
#include<graphics.h>#include<conio.h>#include<stdlib.h>#includeくmath.h>#include<bios.h>#includen51.H"externvoidcbO;externvoidwelcome0;externintfunction60;externvoidloading0;externvoidtimeshowO;externintww;externintEXIT(intx,inty);externvoidButton(intcolorl,intcolor!,intx,inty,char?str,intlen);externvoidinterface0;externvoidzuyuan0;externvoidshuomingO;voidcbO(sfs(l,DARKGRAY);bar(1,1,639,voidcbO(sfs(l,DARKGRAY);bar(1,1,639,479);//2后面背景初始化效果〃整體覆蓋voidwelcome0//3 畫出歡迎字體inti;sts(1,0,8);fo(i,0,100)cbO;inti;sts(1,0,8);fo(i,0,100)cbO;outbighzxy(100+i,90,noutbighzxy(300-i,150,"outbighzxy(300-i,210,nd(30);}}歡迎光臨機(jī)場飛機(jī)起降調(diào)度",WHITE);//“歡迎光臨”水平移動",WHITE);/Z左右分別進(jìn)入",WHITE);voidinterface0voidinterface0//2 〃背后條形框架inti,j;inti,j;sc(CYAN);fo(i,0,59)lined,0,i,500);line((getmaxxO-i),0,(getmaxxO-i),500);)sc(YELLOW);for(i=60,ア〇;iく=85;i++,j++)(lined,j,1,500);line((getmaxxO-i),0,(getmaxxO-i),500);)sc(WHITE);ret(200,110,400,230);line(200,150,400,150);line(200,190,400,190);voidloadingO //8{ 〃這是登陸延遲inti,j,1;interface0;setfillstyled,0);bar(200,110,400,230);settextstyle(0,0,1);outtextxy(250,207,"loading");fo(l,0,5)(sc(15);ret(237+15*1,225,244+15*1,235);j++;if(jX40-0)(setfillstyle(l,RED);bar(237+15*1,225,244+15*1,235);11;}setfillstyle(l,DARKGRAY);bar(0,0,getmaxx0,j);bar(0,480,getmaxx0,480-j);delay(20);)delay(20);clearviewport0;)charstr[10];voidButton(intcolorl,intcolor2,intx,inty,char*str,intlen){ 〃化按鈕inti;charch[10];setcolor(colorl);for(i-0;i<3;i++){line(x-len*2-i,y-len-i,x+len?2+i,y-len-i);line(x+len*2+i,y-len-i,x+len?2+i,y+len-i);)setcolor(color2);for(i-0;i<2;i++)(line(x-len?2+i,y-len,x-len*2+i,y+len);line(x-len,2,y+len-i,x+len*2,y+len-i);}setcolor(15);outhzxy(x-7,y-7,str,WHITE);)/? 用戶按鍵退出效果函數(shù) ,ノintEXIT(intx,inty)( 〃按鈕效果顯示intflag-0;charch; //exit與button的x,y必須一致Button(15,3,x,y,"go",11);
whiled)if(kbhitO)(ch-getchO;if(ch-Esc)(break;)elseif(ch-13)Button(15,3,x,y,ngo",13);delay(10);Button(15,3,x,y,"go",11);flag-1;gotoqq;)))qq:returnflag; 〃按下后返回值1〃綜合函數(shù)〃完成歡迎界面〃完成按鈕操作〃綜合函數(shù)〃完成歡迎界面〃完成按鈕操作(intgdriver,gmode;charch;detectgraph(Igdriver,Agmode);initgraph(Agdriver,Agmode,"c:\tc\tc");bg;intww;setbkcolor(0);clearviewport0;welcome0; //??””?“?????????????”?????????????you//inti=EXIT(300,380);//?????????????????????????????????????you//if(i-1)〃/?如果用戶接回車鍵車/??????????"?”?????????????????""?you//ww-1;cvp; //擦去無用的原來的歡迎界面loading0; /Z登陸函數(shù)returnww; 〃返回值ww/?原來在56.cpp中,調(diào)過來方便Button函數(shù)調(diào)用?/voidzuyuan0(bkgO; //畫背景這下拉框sfs(1,6);bar(190,200,400,380);outhzxy(200,220/機(jī)場飛機(jī)起飛降落調(diào)度”,WHITE);outhzxy(300,250,“小組成員",WHITE);outhzxy(200,280,”陳明U201013648",WHITE);outhzxy(200,310」樊旭U201013717",WHITE);inta?b;charch;Button(15,3,300,350,"關(guān)*,11); /Z花開關(guān)while(l){ 〃控制開關(guān)退出if(kbhit0)(ch=getchO;if(ch-Esc)(gotoqw;)elseif(ch=zyz11ch==,YO(Button(15,3,300,350,"關(guān)'13);delay(100);Button(15,3,300,350,"關(guān)",11);gotoqw;)}qw:keyoperationO;/?原來在56.cpp中,調(diào)過來方便Button函數(shù)調(diào)用*/voidshuoming0bkgO; //畫背景這下拉框sfs(1,6);bar(190,200,400,380);outhzxy(250,220,“菜單ctrl+F",WHITE);outhzxy(250,250,"選項(xiàng)ctrl+G",WHITE);outhzxy(250,280,"幫助ctr1+H",WHITE);inta,b;charch;Button(15,3,300,350「關(guān),11); /Z花開關(guān)while(l){ 〃控制開關(guān)退出if(kbhit0)ch=getchO;if(ch-Esc)(gotoqw;)elseif(ch—'y'11c
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度民營醫(yī)院員工安全生產(chǎn)教育與責(zé)任合同4篇
- 二零二五年度嬰幼兒奶粉進(jìn)口清關(guān)及倉儲物流服務(wù)合同
- 二零二五年度民法典物權(quán)編在遺產(chǎn)繼承中的法律咨詢合同4篇
- 2025年度個人農(nóng)業(yè)生產(chǎn)經(jīng)營質(zhì)押擔(dān)保貸款合同3篇
- 課題申報參考:面向國家重大戰(zhàn)略需求的博士生項(xiàng)目制培養(yǎng)模式研究
- 課題申報參考:馬來西亞華人音樂之存續(xù)與中華文化認(rèn)同建構(gòu)
- 二零二五年度木工行業(yè)安全生產(chǎn)責(zé)任保險合同
- 2025年度個人與公司租賃合同稅費(fèi)承擔(dān)協(xié)議4篇
- 2025版門禁控制系統(tǒng)研發(fā)與定制服務(wù)合同4篇
- 2025年度個人股權(quán)贈與與受贈合同范本4篇
- JBT 14588-2023 激光加工鏡頭 (正式版)
- 2024年四川省成都市樹德實(shí)驗(yàn)中學(xué)物理八年級下冊期末質(zhì)量檢測試題含解析
- 九型人格與領(lǐng)導(dǎo)力講義
- 廉潔應(yīng)征承諾書
- 2023年四川省成都市中考物理試卷真題(含答案)
- 泵車述職報告
- 2024年山西文旅集團(tuán)招聘筆試參考題庫含答案解析
- 恢復(fù)中華人民共和國國籍申請表
- 管理期貨的趨勢跟蹤策略 尋找危機(jī)阿爾法
- 瀝青化學(xué)分析試驗(yàn)作業(yè)指導(dǎo)書
- 腦出血的護(hù)理課件腦出血護(hù)理查房PPT
評論
0/150
提交評論