C++課程設(shè)計(jì)---單層工業(yè)廠房屋蓋結(jié)構(gòu)——梯形鋼屋架設(shè)計(jì)_第1頁(yè)
C++課程設(shè)計(jì)---單層工業(yè)廠房屋蓋結(jié)構(gòu)——梯形鋼屋架設(shè)計(jì)_第2頁(yè)
C++課程設(shè)計(jì)---單層工業(yè)廠房屋蓋結(jié)構(gòu)——梯形鋼屋架設(shè)計(jì)_第3頁(yè)
C++課程設(shè)計(jì)---單層工業(yè)廠房屋蓋結(jié)構(gòu)——梯形鋼屋架設(shè)計(jì)_第4頁(yè)
C++課程設(shè)計(jì)---單層工業(yè)廠房屋蓋結(jié)構(gòu)——梯形鋼屋架設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)題 目:院 系:專 業(yè):吃豆子游戲程序 數(shù)學(xué)與計(jì)算科學(xué)學(xué)院信息與計(jì)算科學(xué)指導(dǎo)老師:日 期:2014 年 12 月30日心得體會(huì):通過(guò)這次課程設(shè)計(jì),我從對(duì)MFC的陌生到能熟練運(yùn) 用基本的函數(shù),了解其編程的具體實(shí)現(xiàn)方法,我對(duì)于面象 對(duì)向編程有了更深刻的認(rèn)識(shí),通過(guò)四個(gè)人的團(tuán)隊(duì)合作,我 從主持諧調(diào)各方面工作,如聽取各方面意見,看成員整理 好的資料,到擔(dān)任代碼編寫,學(xué)會(huì)了團(tuán)隊(duì)合作的重要性, 團(tuán)隊(duì)合作在寫大的程序時(shí)比單個(gè)人完成有很大的優(yōu)點(diǎn)。我 會(huì)繼續(xù)在面向?qū)﹀杈幊躺舷鹿Ψ?,因?yàn)閷W(xué)無(wú)止境。摘要MFC是Windows編程的面向?qū)ο蠡?,是?duì)Windows函數(shù)的簡(jiǎn)單封裝, 使用MFC編程可

2、以在短時(shí)間內(nèi)編寫一個(gè)Windows程序,而不必寫大量 Windows代碼,所以我使用MFC編寫了一個(gè)吃豆子程序,該程序?qū)崿F(xiàn)了一個(gè)能 過(guò)使用方向鍵控制消除屏幕上存在的豆子的功能,當(dāng)用戶按鍵盤向上、下、 左、右鍵或每格一秒鐘,嘴的狀態(tài)發(fā)生改變,或是從一個(gè)方向張開向另一個(gè)方向, 或是山張開變成閉合狀態(tài),從而實(shí)現(xiàn)嘴一張一合前進(jìn),當(dāng)嘴所經(jīng)過(guò)位置有豆子, 豆子被消除而不再出現(xiàn),所有豆子被“吃”完時(shí),程序彈出對(duì)話框“You win,Exit?”,用戶點(diǎn)確定后可退出程序。實(shí)現(xiàn)方法:嘴的張開與閉合分別用MFC 的Pie和Ellipse函數(shù)實(shí)現(xiàn),豆子被存儲(chǔ)在一個(gè)標(biāo)記數(shù)組中,豆子被吃時(shí)數(shù)組相 應(yīng)元素標(biāo)記為零。在On

3、Draw()函數(shù)中畫出每個(gè)豆子和嘴的原始位置,在響應(yīng) 鍵盤上下左右方向虛擬鍵VK_UP、VK_DOWN、VK_LEFT、VK_RIGTH的 函數(shù)中控制豆子移動(dòng)和嘴的方向,程序開始時(shí)在響應(yīng)WM.CREATE消息的 函數(shù)中設(shè)置一個(gè)TIMER,方向鍵消息和TIMER消息統(tǒng)一山一個(gè)判斷函數(shù)處 理從而實(shí)現(xiàn)自動(dòng)前進(jìn)時(shí)的沿當(dāng)前方向前進(jìn)。關(guān)鍵字:程序設(shè)計(jì)豆子MFCAbstractMFC is a Windows-based object-oriented programming, it is a simple package of Windows Tunction , using the MFC progra

4、mming can make us write a Windows program in a short time, without having to write a lot of Windows code, so I use MFC written a eat-beans program Jn this program we can use the arrow keys to control the mouth to move to eliminating the beans on the screen, when the user presses the keyboard up, dow

5、n, left, right, or each time one second goes by, the state of the mouth changed, it change from one direction to another direction, or from an opening state to a closed state. So we can obtain a mouth moving forward with its lips keeping closing and opening, if a bean is in the way of the mouth, it

6、will be eliminated by setting its element in the mark array as zero, when all beans have bean eaten, a dialog box prompts: You win. Exit?, after the user clicks OK , the game terminates. Implementation method: We can use the MFCs Pie function to draw a open mouth, while the Ellipse function to draw

7、the closed mouth, all beans would be stored in a 2d array, if it exist ,we mark the corresponding element nonzero ,mouth and all beans can be drew in the OnDraw function of MFC、the mouth present direction can be changed by the direction message updated in the VK_UP, VK_DOWN. VK_LEFT, VK_RIGTHs and t

8、he self*-define TIMERS response function, after that ,we can judge the next position the mouth should go according to the direction message, thus we get a mouth moving with it*s mouth open and closing alternately.Key words: programming Eat-beans MFC引言CRC分析過(guò)程陳述程序介紹與展示程序測(cè)試結(jié)果分析與總結(jié)參考文獻(xiàn)引言在本次課程設(shè)訃中,課題組主要是想

9、通過(guò)吃豆子游戲的開發(fā),讓自身在軟 件開發(fā)的知識(shí)水平提升一個(gè)檔次,特別是對(duì)軟件開發(fā)形成一種概念,同時(shí)加 強(qiáng)培養(yǎng)團(tuán)隊(duì)合作意識(shí)。這個(gè)課設(shè)的要求是要課題組用MFC編寫一個(gè)吃豆子的 小游戲,這個(gè)游戲是用方向鍵控制一個(gè)”小怪獸”移動(dòng)并吃掉界面上的所有 的“小豆子”,隨后經(jīng)歷了一個(gè)星期的分析與討論后,課題組正式進(jìn)入課題系統(tǒng)實(shí)質(zhì)性 的開發(fā)階段。課題組把程序開發(fā)的過(guò)程分為程序分析、程序設(shè)計(jì)、程序?qū)崿F(xiàn) 和程序測(cè)試四個(gè)階段,在程序分析中,對(duì)程序進(jìn)行了可行性分析、需求分析 以及功能分析,在結(jié)束這階段的工作后轉(zhuǎn)入系統(tǒng)設(shè)計(jì)階段;在系統(tǒng)設(shè)計(jì)中, 主要是明確整個(gè)程序的界面模塊、算法實(shí)現(xiàn)、以及極限問(wèn)題等;系統(tǒng)的實(shí)現(xiàn), 歷經(jīng)一個(gè)

10、半月,主要是實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)中的所有模塊功能;最后利用了一周的 時(shí)間對(duì)程序中的各個(gè)模塊進(jìn)行了測(cè)試,最終完成系統(tǒng)的測(cè)試;在完成開發(fā)工作后,課題組的任務(wù)立刻轉(zhuǎn)向課設(shè)論文的寫作,課題組各 成員課設(shè)論文的寫作內(nèi)容原則上就是其在設(shè)計(jì)開發(fā)中所承擔(dān)的主要任務(wù),最 后總結(jié)成了本篇論本。CRC分析過(guò)程陳述CEatBeanView 類:dispose ()對(duì)TIMER發(fā)送的消息和向上,向下,向左,向右鍵來(lái)響 應(yīng)判斷的主要處理函數(shù)Draw_All_Beans()畫所有的存在的豆子Draw_One_Bean(int, int)畫一個(gè)豆子Draw_Background_Blocks畫背景網(wǎng)格Draw_Main()負(fù)責(zé)畫程序

11、運(yùn)行中個(gè)一個(gè)幀,包括畫背景,畫所有豆子,畫嘴Draw_Mouth ()畫嘴Draw_Mouth_Closing ()畫嘴關(guān)的狀態(tài)Draw_Mouth_Open()畫嘴開的狀態(tài)Draw_One_Bean0畫以(x,y)為坐標(biāo)的豆子Draw_Segment()畫一條線段Generate_All_Rand_Beans生成隨機(jī)的所有豆子用于初始化Generate_Rand_Array生成 亂序隨 機(jī)數(shù)組Generate_Rand_Positive_Integer生成最大值為max的正整數(shù)OnCreateBLCREATE消息響應(yīng)函數(shù)OnDraw用于在程序客戶區(qū)繪圖其中 dispose ()函數(shù)用得最多。

12、OnMoveleft, OnMoveright 都調(diào)用 dispose ()函數(shù)來(lái)處理消息。按鍵向上,向下,向左,向右,消息響應(yīng)函數(shù):函數(shù)功能void OnMoveleft();向左鍵的消息處理函數(shù)void OnMoveright():向右鍵的消息處理函數(shù)void OnMovedown():向下鍵的消息處理函數(shù)void OnMoveup ();向上鍵的消息處理函數(shù)void OnCreate ();W.CREATE消息處理函數(shù)void OnTimer ();W.TIMER的消息處理函數(shù)void OnTimetogo ();自定義消息WM_TIMETOGO的消息 處理函數(shù)嘴的圖形是一個(gè)圓形與一個(gè)扇

13、形交替顯示,圓形表示嘴閉合的情況,扇形表 示嘴張開的形狀;繪制圓形和扇形的函數(shù)為CDC類的成員函數(shù)Ellipse和Pie:豆子可以存儲(chǔ)在一個(gè)數(shù)組中,數(shù)組的數(shù)據(jù)是每個(gè)豆子圓心的坐標(biāo);在OnDrawO 函數(shù)中畫出每個(gè)豆子和嘴的原始位置,鍵盤上下左右方向鍵的虛擬鍵碼分別為 VK_UP、VK_DOWN VK_LEFT、VK_RIGTH,在程序開始時(shí)的 W_CREATE 的響應(yīng)函數(shù) 中設(shè)置一個(gè)TIMER,在CView的派生類中對(duì)方向鍵和TIMER消息用統(tǒng)一函數(shù)處理, dispose中處理為:若是TIMER消息則嘴前進(jìn)方向與當(dāng)前方向一致再處理前進(jìn), 若是方向消息則嘴前進(jìn)方向?yàn)榉较蜴I所指方向。1.3功能說(shuō)明

14、一、UML類圖數(shù)據(jù)、分析此程序的設(shè)計(jì)按面向?qū)ο蟮姆椒ㄟM(jìn)行,系統(tǒng)具有良好的界面;必要的交互信 息;簡(jiǎn)約美觀的效果。使用人員能快捷簡(jiǎn)單地進(jìn)行操作。本游戲?qū)崿F(xiàn)了一個(gè)能過(guò) 使用方向鍵控制消除屏幕上存在的物體(即所謂嘴)來(lái)到達(dá)另一個(gè)地方來(lái)消除另 一地方存在的物體即所謂豆子,嘴有張合狀態(tài),張開時(shí)可以有四個(gè)方向的張開, 類似一個(gè)大嘴巴。閉合時(shí)就是一個(gè)圓形。嘴若是接受方向消息時(shí),方向消息與當(dāng) 前方向不一致,則嘴在轉(zhuǎn)向過(guò)后保持開的狀態(tài)。當(dāng)所有豆子被吃完后,彈出對(duì)對(duì) 話框顯示:“You win, Exit?”,用戶寫確定后可退背景畫法實(shí)現(xiàn)先實(shí)現(xiàn)畫一條線段的函數(shù)void CEatBeanView::Draw_Seg

15、ment(int pax, int pay, int pbx, int pby)CDC *pDC = GetDC();pDCMoveTo(blpaxpay); pDC-LineTo(blpbxpby);,再畫橫向和縱向的各從1到length+1和width+1的線段,從而實(shí)現(xiàn)畫背景網(wǎng)絡(luò):/*畫背景網(wǎng)格#/void CEatBeanView::Draw_Background_Blocks() CDC*pDC = GetDCO;for (i=l; i length + 2; i+)Draw_Segment(i, 1, i, width+1);for (i = 1; i SelectStockObj

16、ect(LTGRAY.BRUSH): switch(Current_Direction) /*查 看 當(dāng) 前嘴 的 方 向 */ case u : /*方向向上的情況*/pDC-Pie(bx, by, bx+l, by+l,bx+l, by+l, bx, by+l);break;case 1 :/*方向向左的情況*/pDC-Pie(bx, by, bx+l, by+l,bx, by+l, bx, by);break;case d : /*方向向下的情況*/pDC-Pie(bx, by, bx+l, by+l,bx, by, bx+l, by);break;case , r :/*方向向右的情況

17、*/pDC-Pie(bx, by, bx+l, by+l, bx+l, by, bx+l, by+ll) ;break;2、畫嘴巴的實(shí)現(xiàn)畫嘴巴的關(guān)閉可以用Ellipse函數(shù).void CEatBeanView::Draw_Mouth_Closing(int x, int y)CDC*pDC = GetDC();CBrush *p;p = (CBrush*)PDC-SelectStockObject(LTGRAY_BRUSH); pDC-Ellipse(bx, by, bx+1, by+1);3、畫豆子的實(shí)現(xiàn)畫一個(gè)豆子的實(shí)現(xiàn):void CEatBeanView::Draw_One_Bedn(in

18、t x, int y)CDC*pDC 二 GetDC();CBrush *p;p = (CBrush*)pDC-SelectStockObject(LTGRAY_BRUSH): pDC-Ellipse( bx, by, bx+l, by+l);畫所有豆子:void CEatBeanView::Draw_All_Beans()for (i = 1; i length + 1: i+)for (j = 1; j = 1 & pre_position.x = 1 & pre_position.y = width)是則判斷下一點(diǎn)是否有豆子,if(Beans_Arraypre_position.xpre

19、_position.y=l)nbeans-;將下一點(diǎn)的豆子所在標(biāo)記數(shù)組元素標(biāo)記置零,Beans_Arraypre_position.xpre_position.y = 0;設(shè)置下一點(diǎn)到達(dá)區(qū)域:prefect, bottom = bpre_position.y;pre_rect.top = bpre_position.y+1 ;pre_rect.left = bpre_position.x;pre_rect.right = bpre_position.x+1 ;再設(shè)置嘴位置為下一點(diǎn)預(yù)到達(dá)位置(因確定不越界):Mouth_Position = pre_position;當(dāng)方向消息不是當(dāng)前消息就僅改變嘴方向,并令嘴一直開著,這樣使得嘴轉(zhuǎn)向 后不會(huì)由開變成關(guān)。Current_Direction = Direction_Message; /*僅改變方向 *

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論