畢業(yè)設(shè)計(jì)論文--掃雷游戲設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
畢業(yè)設(shè)計(jì)論文--掃雷游戲設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
畢業(yè)設(shè)計(jì)論文--掃雷游戲設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
畢業(yè)設(shè)計(jì)論文--掃雷游戲設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
畢業(yè)設(shè)計(jì)論文--掃雷游戲設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩44頁(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、畢業(yè)設(shè)計(jì)論文-掃雷游戲設(shè)計(jì)與實(shí)現(xiàn) 1 引言掃雷最原始的版本可以追溯到1973年一款名為方塊的游戲不久之前方塊被改寫成了游戲Rlogic在Rlogic里玩家的任務(wù)是作為美國(guó)海軍陸戰(zhàn)隊(duì)隊(duì)員為指揮中心探出一條沒(méi)有地雷的平安路線如果路全被地雷堵死就算輸兩年后湯姆·安德森在Rlogic的根底上又編寫出了游戲地雷由此奠定了現(xiàn)代掃雷游戲的雛形1981年 微軟公司的羅伯特·杜爾和卡特·約翰遜兩位工程師在Windows 31系統(tǒng)上加載了該游戲掃雷游戲才正式在全世界推廣開(kāi)來(lái)11 開(kāi)發(fā)背景在計(jì)算機(jī)逐步滲入社會(huì)生活各個(gè)層面的今天計(jì)算機(jī)已經(jīng)成為了人們?nèi)粘I钪械囊痪植吭絹?lái)越多的人使用計(jì)算機(jī)

2、辦公娛樂(lè)等等掃雷游戲是Windows操作系統(tǒng)自帶的一款小游戲在過(guò)去的幾年里Windows操作系統(tǒng)歷經(jīng)數(shù)次換代更新變得越來(lái)越龐大復(fù)雜功能也越來(lái)越強(qiáng)大但是這款小游戲依然保持原來(lái)的容貌可見(jiàn)這款小游戲受到越來(lái)越多人的喜愛(ài)本次的畢業(yè)設(shè)計(jì)我將利用Visual C作為開(kāi)發(fā)工具開(kāi)發(fā)一款類似的掃雷游戲12 開(kāi)發(fā)的目的以及意義經(jīng)過(guò)四年的大學(xué)學(xué)習(xí)我對(duì)理論知識(shí)已經(jīng)有了一定的了解與認(rèn)知本次的畢業(yè)設(shè)計(jì)便是將書(shū)本上所學(xué)的理論知識(shí)與實(shí)際相結(jié)合同時(shí)也是對(duì)所學(xué)知識(shí)的一種檢查希望通過(guò)本次的畢業(yè)設(shè)計(jì)使自己在程序的開(kāi)發(fā)和設(shè)計(jì)上有新的認(rèn)識(shí)并能有所提高本次畢業(yè)設(shè)計(jì)既鍛煉了我們的實(shí)際動(dòng)手能力又在老師的指導(dǎo)下進(jìn)行了一次模擬實(shí)際產(chǎn)品的開(kāi)發(fā)對(duì)于我

3、們以后工作能力的培養(yǎng)具有重要意義2 需求分析21 功能概述掃雷游戲的游戲界面如圖1所示在這個(gè)界面中由眾多面積均等的小方塊所組成的區(qū)域稱之為雷區(qū)雷區(qū)的大小由用戶設(shè)置的游戲等級(jí)決定圖 1 初級(jí)雷區(qū)游戲開(kāi)始時(shí)系統(tǒng)會(huì)在雷區(qū)的某些小方塊中隨機(jī)布下假設(shè)干個(gè)地雷安放好地雷的小方塊稱之為雷方塊其他的稱之為非雷方塊部署完畢后系統(tǒng)會(huì)在其他非雷方塊中填充一些數(shù)字某一個(gè)具體數(shù)字表示與其緊鄰的8個(gè)方塊中有多少雷方塊玩家可以根據(jù)這些信息去判斷是否可以翻開(kāi)某些方塊并把認(rèn)為是地雷的方塊打上標(biāo)識(shí)如果某個(gè)數(shù)字方塊周圍的地雷全都標(biāo)記完可以指向該方塊并同時(shí)點(diǎn)擊鼠標(biāo)左右鍵將其周圍剩下的方塊挖開(kāi)如果編號(hào)方塊周圍地雷沒(méi)有全部標(biāo)記在同時(shí)點(diǎn)擊

4、鼠標(biāo)左右鍵時(shí)其他隱藏或未標(biāo)記的方塊將被按下一次即閃爍一下當(dāng)玩家將所有地雷找出后其余的非雷方塊區(qū)域都已翻開(kāi)此時(shí)游戲結(jié)束在游戲過(guò)程中一旦錯(cuò)誤地翻開(kāi)了雷方塊那么立即失敗游戲結(jié)束當(dāng)玩家標(biāo)識(shí)的地雷數(shù)超過(guò)程序設(shè)定雖然翻開(kāi)了全部其余方塊游戲仍然不會(huì)結(jié)束在游戲開(kāi)始后雷區(qū)上方有兩個(gè)計(jì)數(shù)器右邊的計(jì)數(shù)器顯示用戶掃雷所花費(fèi)的總時(shí)間以秒為單位左邊的計(jì)數(shù)器顯示當(dāng)前還剩余多少個(gè)雷方塊22 功能需求分析游戲需要提供一個(gè)菜單欄上面有不同的相關(guān)選項(xiàng)如游戲的開(kāi)始難度設(shè)置退出等按功能將游戲區(qū)域分成兩個(gè)區(qū)域雷區(qū)和提示區(qū)提示區(qū)包括兩個(gè)計(jì)數(shù)器和一個(gè)按鍵操作結(jié)果圖像提示游戲過(guò)程中當(dāng)玩家用鼠標(biāo)點(diǎn)擊相應(yīng)的方塊程序就會(huì)作出相應(yīng)的鼠標(biāo)響應(yīng)事件并伴隨

5、著GDI繪圖而眾多鼠標(biāo)事件的處理都是圍繞著實(shí)現(xiàn)掃雷程序的算法而衍生的3 總體設(shè)計(jì)31 游戲框架的搭建1 工程工程的創(chuàng)立利用應(yīng)用程序向?qū)?chuàng)立一個(gè)名稱為Mine的工程工程由于不需要諸如工具欄狀態(tài)欄等功能并且掃雷游戲的框架是不允許改變窗口大小的所以在向?qū)У牡谒牟嚼锩姘阉械倪x項(xiàng)置空然后點(diǎn)擊Advanced按鈕在彈出的對(duì)話框中選中Windows Styles選項(xiàng)卡將imize box項(xiàng)置空其他均使用默認(rèn)設(shè)置2 框架的改造通過(guò)類向?qū)砑右粋€(gè)繼承于CFrameWnd的類命名為CMineWnd刪除CMineDocCMineView和CAboutDlg類將CMineWnd類代替CFrameWnd讓程序啟動(dòng)的時(shí)

6、候以此窗口為主窗口予以顯示結(jié)果如圖2所示圖2 框架的改造32 菜單的制作參考Windows自帶的掃雷游戲創(chuàng)立出游戲和幫助菜單然后通過(guò)菜單資源編輯器設(shè)定菜單的功能選項(xiàng)包括難度級(jí)別的選擇顏色和音效是否開(kāi)啟掃雷英雄榜使用手冊(cè)關(guān)于軟件的信息等具體的菜單項(xiàng)選擇項(xiàng)如圖3所示圖3 游戲菜單1 難度級(jí)別的選擇不同的難度級(jí)別有不同的雷區(qū)大小和不同的布雷數(shù)目所以通過(guò)宏定義預(yù)定義不同級(jí)別的橫向方塊數(shù)目縱向方塊數(shù)目和雷數(shù)并將該宏定義放入新建的頭文件MineDefsh中窗口除了雷區(qū)外至少還包括藍(lán)色窗口邊緣Frame_wide白色的視覺(jué)效果區(qū)line_wide3D的外殼邊框3D_line_wide雷區(qū)mine_area_

7、wide等于是還需要定義關(guān)于位置的宏變量由于難度級(jí)別的不同窗口大小也會(huì)隨之改變因此通過(guò)在CMineWnd類增加一個(gè)改變窗口大小的函數(shù)SizeWindow 去實(shí)現(xiàn)通過(guò)ClassWizard分別選擇初級(jí)中級(jí)和高級(jí)菜單資源ID為它們添加處理函數(shù)OnMenuPrimary OnMenuSecond OnMenuAdvance OnMenuAdvance 的實(shí)現(xiàn)如下另外兩個(gè)類似void CMineWndOnMenuAdvance m_uLevel LEVEL_ADVANCEm_uXNum ADVANCE_XNUMm_uYNum ADVANCE_YNUMm_uMineNum ADVANCE_MINENUM

8、SetCheckedLevel InitGame Invalidate SizeWindow 2 雷區(qū)大小的自定義實(shí)現(xiàn)首先新建一個(gè)自定義雷區(qū)對(duì)話框資源 IDD_DLG_CUSTOM 然后添加高度寬度雷數(shù)三個(gè)靜態(tài)文本控件和三個(gè)對(duì)應(yīng)的 IDC_HEIGHT IDC_WIDTH IDC_NUMBER 編輯框控件最后將OK和Cancel按鈕分別改名為確定和取消結(jié)果如圖4圖4 自定義雷區(qū)接著為該對(duì)話框創(chuàng)立CDlgCustom類然后為三個(gè)編輯控件分別添加關(guān)聯(lián)變量m_uHeightm_uNumberm_uWidth最后為OK按鈕創(chuàng)立命令消息處理函數(shù)OnOK 代碼如下所示void CDlgCustomOnOK

9、 UpdateData if m_uWidth 9 m_uWidth 9if m_uWidth 30 m_uWidth 30if m_uHeight 9 m_uHeight 9if m_uHeight 24 m_uHeight 24if m_uNumber 10 m_uNumber 10if m_uNumber m_uWidth m_uHeight m_uNumber m_uWidth m_uHeight - 1CMineWnd pMine CMineWnd AfxGetMainWnd pMine- SetCustom m_uWidth m_uHeight m_uNumber TODO Add

10、 extra validation hereCDialogOnOK 3 使用幫助的實(shí)現(xiàn)由于Windows 自帶有掃雷游戲所以直接調(diào)用它的使用手為使用幫助菜單項(xiàng)選擇項(xiàng)創(chuàng)立命令消息處理函數(shù)OnMemuHelpUse 代碼如下所示顯示結(jié)果如圖5所示void CMineWndOnMemuHelpUse ShellExecute NULL"open""1txt"NULLNULLSW_SHOW 圖5 使用幫助4 以往的記錄每一次游戲破記錄那么將有關(guān)信息保存下來(lái)顯示結(jié)果如圖6所示圖6 以往記錄5 掃雷英雄榜的實(shí)現(xiàn)首先創(chuàng)立兩個(gè)對(duì)話框模板一個(gè)用作當(dāng)用戶勝利結(jié)束游戲并打破歷

11、史記錄后彈出的簽名記錄對(duì)話框模板IDD_DLG_NEWRECORD另外一個(gè)是用以顯示以往最高的游戲記錄的對(duì)話框模板IDD_DLG_HERO如圖7和圖8所示圖7 記錄對(duì)話框圖8 排行榜然后為IDD_DLG_HERO對(duì)話框模板創(chuàng)立CDlgHero類分別為編輯框控件添加關(guān)聯(lián)變量m_szBHolderm_szBRecordm_szEHolderm_szERecordm_szIHolderm_szIRecord并將Cancel按鈕的ID和標(biāo)題分別改為IDC_RESET和重新計(jì)分三個(gè)靜態(tài)文本標(biāo)題設(shè)置為初級(jí)記錄中級(jí)記錄高級(jí)記錄最后為重新計(jì)分按鈕創(chuàng)立命令消息處理函數(shù)OnReset 和其他成員函數(shù)對(duì)IDD_DL

12、G_NEWRECORD對(duì)話框模板類似處理33布雷掃雷核心算法的設(shè)計(jì)與實(shí)現(xiàn)1 算法的設(shè)計(jì)把整個(gè)雷區(qū)看成一個(gè)二維數(shù)組aij周圍的雷個(gè)數(shù)是由如下8個(gè)雷區(qū)決定的 如果超出邊界應(yīng)該再加以判斷 ai-1j-1 ai-1j ai-1j1ai aij1ai1 j-1 ai1j ai1j1在被展開(kāi)時(shí)檢查周圍的雷數(shù)是否與周圍標(biāo)示出來(lái)的雷數(shù)相等如果相等那么展開(kāi)周圍未標(biāo)示的雷區(qū)這樣新的雷區(qū)展開(kāi)又觸發(fā)這個(gè)事件就這樣遞歸下去一直蔓延到不可展開(kāi)的雷區(qū)2 核心算法的實(shí)現(xiàn)整個(gè)游戲程序包含3個(gè)階段布雷掃雷過(guò)程和結(jié)果并不是操作結(jié)果展示而是在掃雷過(guò)程中玩家通過(guò)與游戲交互后的操作結(jié)果展示首先定義雷方塊的數(shù)據(jù)結(jié)構(gòu)具體描述如下所示type

13、def struct UINT uRow 所在雷區(qū)二維數(shù)組的行UINT uCol 所在雷區(qū)二位數(shù)組的列UINT uState 當(dāng)前狀態(tài)UINT uAttrib 方塊屬性UINT uOldState 歷史狀態(tài) MINEWND 雷方塊結(jié)構(gòu)體然后定義雷方塊的狀態(tài)類別和屬性類別A 布雷隨即獲取一個(gè)狀態(tài)為非雷的點(diǎn)將它的屬性標(biāo)志為雷重復(fù)這樣的工作直到布下足夠的雷為止其流程如圖9所示在CMineWnd類中添加游戲的布雷模塊的處理函數(shù)該函數(shù)的實(shí)現(xiàn)如下void CMineWndLayMines UINT row UINT col 埋下隨機(jī)種子srand unsigned time NULL UINT i jfo

14、r UINT index 0 index m_uMineNum 取隨即數(shù)i rand m_uYNumj rand m_uXNumif i row j col continueif m_pMinesijuAttrib ATTRIB_MINE m_pMinesijuAttrib ATTRIB_MINE修改屬性為雷index B 掃雷鼠標(biāo)左擊事件其流程如圖10所示圖10 游戲流程當(dāng)鼠標(biāo)左鍵點(diǎn)擊雷區(qū)域并且該區(qū)域不是雷方塊需要進(jìn)行翻開(kāi)以及拓展工作流程如圖11所示鼠標(biāo)左鍵點(diǎn)擊事件的關(guān)鍵代碼如下所示void CMineWndOnLButtonUp UINT nFlags CPoint point 笑臉圖按鈕

15、所在的區(qū)域CRect rcBtn m_uBtnRect1 15 m_uBtnRect2 39 雷區(qū)所在的區(qū)域CRect rcMineArea MINE_AREA_LEFT MINE_AREA_TOP MINE_AREA_LEFT m_uXNum MINE_WIDTH MINE_AREA_TOP m_uYNum MINE_HEIGHT if rcBtnPtInRect point 點(diǎn)擊笑臉圖Invalidate InitGame else if rcMineAreaPtInRect point 點(diǎn)擊雷區(qū)域CString valueUINT around 0根據(jù)不同的游戲狀態(tài)作處理switch m

16、_uGameState 游戲進(jìn)行狀態(tài)case GS_WAIT case GS_RUN first get the MINEWND which if pushing downm_pOldMine GetMine pointx pointy if m_pOldMine ReleaseCapture return 檢測(cè)判斷當(dāng)前狀態(tài)是否為左右鼠標(biāo)同時(shí)按下if m_bLRBtnDown m_bLRBtnDown FALSEOnLRBtnUp m_pOldMine- uRow m_pOldMine- uCol if m_uGameState GS_WAIT m_uBtnState BUTTON_NORMA

17、LInvalidate ReleaseCapture return 假假設(shè)周圍已經(jīng)標(biāo)識(shí)的雷周圍真正的雷數(shù)拓展if m_pOldMine- uState STATE_FLAG OpenAround m_pOldMine- uRow m_pOldMine- uCol if ErrorAroundFlag m_pOldMine- uRow m_pOldMine- uCol Dead m_pOldMine- uRow m_pOldMine- uCol ReleaseCapture return else 如果游戲尚未開(kāi)始點(diǎn)擊左鍵啟動(dòng)游戲if m_uGameState GS_WAIT if m_uTim

18、er KillTimer ID_TIMER_EVENT m_uTimer 0 m_uSpendTime 1Invalidate if m_bSoundful sndPlaySound LPCTSTR LockResource m_pSndClock SND_MEMORY SND_ASYNC SND_NODEFAULT 啟動(dòng)定時(shí)器m_uTimer SetTimer ID_TIMER_EVENT 1000 NULL 布雷LayMines m_pOldMine- uRow m_pOldMine- uCol 改變游戲狀態(tài)為"運(yùn)行GS_RUN"m_uGameState GS_RUN

19、if m_pOldMine- uOldState STATE_NORMAL 當(dāng)該雷區(qū)域?yàn)檎N醋鳂?biāo)記才翻開(kāi)如果該區(qū)域?yàn)槔啄敲此劳鰅f IsMine m_pOldMine- uRow m_pOldMine- uCol Dead m_pOldMine- uRow m_pOldMine- uCol ReleaseCapture return 不是雷的時(shí)候獲取其周圍的雷數(shù)目around GetAroundNum m_pOldMine- uRow m_pOldMine- uCol 如果為空白區(qū)域拓展否那么翻開(kāi)該區(qū)域顯示周圍有多少雷數(shù)if around 0 ExpandMines m_pOldMine-

20、uRow m_pOldMine- uCol else DrawDownNum m_pOldMine around else if m_pOldMine- uOldState STATE_DICEY 標(biāo)志為問(wèn)號(hào)的時(shí)候m_pOldMine- uState STATE_DICEY 判斷是否為勝利if Victory Invalidate ReleaseCapture return breakcase GS_VICTORYcase GS_DEADReleaseCapture returndefault break m_uBtnState BUTTON_NORMALInvalidate else 點(diǎn)擊非

21、雷區(qū)域if m_uGameState GS_WAIT m_uGameState GS_RUN m_uBtnState BUTTON_NORMALInvalidateRect rcBtn ReleaseCapture CWndOnLButtonUp nFlags point 在函數(shù)體的開(kāi)始局部先用rcBtn和rcMineArea兩個(gè)矩形變量存儲(chǔ)游戲的用戶提示區(qū)域位置中的笑臉圖區(qū)域以及雷區(qū)域的位置利用接口函數(shù)PtInRect 判斷當(dāng)前鼠標(biāo)的位置由參數(shù)point攜帶鼠標(biāo)當(dāng)前位置信息是否在這兩個(gè)區(qū)域內(nèi)如果檢測(cè)到鼠標(biāo)左鍵點(diǎn)擊并釋放在笑臉圖的按鈕區(qū)域rcBtn上那么調(diào)用初始化函數(shù)重新開(kāi)始游戲如果檢測(cè)到鼠標(biāo)

22、左鍵點(diǎn)擊并釋放在雷區(qū)域rcMineArea假假設(shè)當(dāng)前游戲狀態(tài)處于已初始化完成但尚未開(kāi)始的狀態(tài)GS_WAIT時(shí)那么翻開(kāi)計(jì)時(shí)器并且調(diào)用LayMines 函數(shù)進(jìn)行布雷然后修改游戲狀態(tài)為GS_RUN進(jìn)入游戲接著判斷點(diǎn)擊在小方塊的狀態(tài)是否被用于通過(guò)右鍵標(biāo)記可以標(biāo)記為雷或者未知此時(shí)游戲規(guī)那么規(guī)定左鍵點(diǎn)擊不生效如果未標(biāo)記該狀態(tài)為普通狀態(tài)STATE_NORMAL時(shí)先通過(guò)IsMine 檢測(cè)是否點(diǎn)中地雷而失敗地結(jié)束游戲如果是那么調(diào)用函數(shù)Dead 來(lái)進(jìn)行失敗后的工作處理反之對(duì)它進(jìn)行翻開(kāi)顯示與拓展操作先通過(guò)GetAroundNum 函數(shù)獲取當(dāng)前小方塊相鄰的8個(gè)位置的雷數(shù)如果當(dāng)前小方塊相鄰區(qū)域的雷數(shù)為0那么可以向8個(gè)方

23、向進(jìn)行拓展并顯示該方塊區(qū)域直到不可拓展為止如果當(dāng)前小方塊相鄰區(qū)域的雷數(shù)不為0那么顯示該方塊區(qū)域的相鄰雷數(shù)用作提供用戶對(duì)其他位置的信息判斷的提示拓展操作的實(shí)現(xiàn)代碼如下void CMineWndExpandMines UINT row UINT col UINT i jUINT minRow row 0 0 row - 1UINT Row row 2UINT minCol col 0 0 col - 1UINT Col col 2UINT around GetAroundNum row col 顯示該區(qū)域的方塊狀態(tài)m_pMinesrowcoluState 15 - aroundm_pMinesro

24、wcoluOldState 15 - around 翻開(kāi)該區(qū)域重繪DrawSpecialMine row col 對(duì)周圍一個(gè)雷都沒(méi)有的空白區(qū)域if around 0 for i minRow i Row i for j minCol j Col j 對(duì)于周圍可以拓展的區(qū)域進(jìn)行的規(guī)拓展if i row j col m_pMinesijuState STATE_NORMAL m_pMinesijuAttrib ATTRIB_MINE if IsInMineArea i j continueExpandMines i j 遞歸拓展操作 經(jīng)過(guò)翻開(kāi)或拓展后最后通過(guò)Victory 判斷游戲是否已經(jīng)勝利結(jié)束

25、如果是那么作勝利處理鼠標(biāo)右擊事件其流程如圖12所示圖12 右擊事件其實(shí)現(xiàn)代碼如下所示void CMineWndOnRButtonDown UINT nFlags CPoint point 笑臉圖按鈕所在的區(qū)域CRect rcBtn m_uBtnRect1 15 m_uBtnRect2 39 雷區(qū)所在的區(qū)域CRect rcMineArea MINE_AREA_LEFT MINE_AREA_TOP MINE_AREA_LEFT m_uXNum MINE_WIDTH MINE_AREA_TOP m_uYNum MINE_HEIGHT m_bLRBtnDown FALSEif rcMineAreaPt

26、InRect point 點(diǎn)擊雷區(qū)域if m_uGameState GS_WAIT m_uGameState GS_RUN m_pNewMine GetMine pointx pointy if m_pNewMine return檢測(cè)判斷當(dāng)前狀態(tài)是否為左右鼠標(biāo)同時(shí)按下if nFlags MK_LBUTTON MK_RBUTTON m_bLRBtnDown TRUEOnLRBtnDown m_pNewMine- uRow m_pNewMine- uCol else switch m_pNewMine- uState 普通狀態(tài)case STATE_NORMALm_pNewMine- uState

27、STATE_FLAGm_pNewMine- uOldState STATE_FLAGm_nLeaveNum-break標(biāo)記狀態(tài)case STATE_FLAGm_pNewMine- uState STATE_DICEYm_pNewMine- uOldState STATE_DICEYm_nLeaveNumbreak未知狀態(tài)case STATE_DICEYm_pNewMine- uState STATE_NORMALm_pNewMine- uOldState STATE_NORMALbreakdefault break Invalidate CWndOnRButtonDown nFlags poi

28、nt 34 繪圖界面的設(shè)計(jì)1雷區(qū)笑臉模塊的繪制添加三個(gè)位圖資源如圖13所示圖13 位圖的繪制ID分別為ID_BTN_COLORID_MINE_COLORID_NUM_COLOR并分別添加三個(gè)位圖類型的變量然后調(diào)用LoadBitmap UINT nIDResource 函數(shù)來(lái)實(shí)現(xiàn)位圖資源與變量的關(guān)聯(lián)并添加函數(shù)DrawButton DrawMineArea DrawNumber 分別實(shí)現(xiàn)笑臉按鈕雷區(qū)數(shù)字圖像 計(jì)時(shí)器數(shù)字和剩余雷數(shù)數(shù)字 的繪圖繪制雷區(qū)的函數(shù)DrawMineArea 的實(shí)現(xiàn)代碼如下繪制笑臉按鈕的函數(shù)實(shí)現(xiàn)類似void CMineWndDrawMineArea CPaintDC dc CD

29、C dcMemory 用作內(nèi)存設(shè)備 源設(shè)備dcMemoryCreateCompatibleDC dc 使得這個(gè)設(shè)備與dc兼容 dc是目標(biāo)設(shè)備dcMemorySelectObject m_bmpMine 將內(nèi)存設(shè)備與位圖資源關(guān)聯(lián)for UINT i 0 i m_uYNum i for UINT j 0 j m_uXNum j 根據(jù)ij區(qū)域的雷方塊狀態(tài)拷貝相應(yīng)的圖像到ij雷區(qū)的特定區(qū)域dcStretchBlt MINEAREA_FRAME_X16j MINEAREA_FRAME_Y16i 16 16 dcMemory 0 16m_pMinesijuState 16 16 SRCCOPY 23D效果

30、外殼模塊的繪制首先調(diào)用FillSolidRect 在框架的左部和頂局部別繪制2個(gè)小白條這樣看起來(lái)有點(diǎn)立體的然后調(diào)用Draw3dRect 在笑臉以及計(jì)時(shí)顯示區(qū)域周圍繪上一個(gè)較小的3D邊框最后在雷區(qū)周圍繪上一個(gè)較大的3D邊框3D效果外殼繪制結(jié)果顯示如圖163 數(shù)字模塊的繪制數(shù)字圖像的繪制不是由鼠標(biāo)事件觸發(fā)的而是由系統(tǒng)時(shí)間觸發(fā)的首先在CMineWnd類中添加定時(shí)器標(biāo)識(shí)的成員變量m_uTimer和一個(gè)記錄游戲開(kāi)始直到目前所花費(fèi)的時(shí)間的成員變量m_uSpendTime接著在游戲的開(kāi)始函數(shù)布下時(shí)間種子時(shí)間間隔為1000us然后選擇到預(yù)定時(shí)間間隔后發(fā)送Windows命令消息函數(shù)WM_TIMER接著在CMin

31、eWnd類中找到對(duì)應(yīng)的消息WM_TIMER并為其添加重寫函數(shù)OnTimer 該函數(shù)首先判斷這次的WM_TIMER命令是否為所布下的時(shí)間種子到時(shí)而產(chǎn)生的如果是那么讓使用的時(shí)間變量m_uSpendTime自增然后通知系統(tǒng)重繪圖像雷區(qū)笑臉按鈕3D效果外殼和數(shù)字圖像的繪制都是在OnPaint 函數(shù)中實(shí)現(xiàn)的其函數(shù)代碼如下所示void CMineWndOnPaint CPaintDC dc this 創(chuàng)立一個(gè)CPaintDC類型的用以屏幕顯示的dc設(shè)備 參數(shù)是指向當(dāng)前框架窗口CDC dcMemory 內(nèi)存設(shè)備CBitmap bitmap創(chuàng)立臨時(shí)的位圖資源if dcIsPrinting 判斷不是使用打印機(jī)來(lái)

32、進(jìn)行繪制工作 使內(nèi)存設(shè)備與dc設(shè)備兼容if dcMemoryCreateCompatibleDC dc 使得bitmap與實(shí)際顯示的dc設(shè)備兼容if bitmapCreateCompatibleBitmap dcm_rcClientrightm_rcClientbottom 內(nèi)存設(shè)備選擇物件位圖dcMemorySelectObject bitmap 繪制背景框dcMemoryFillRect m_rcClient m_brsBG DrawButton CPaintDC dcMemory 笑臉按鈕繪圖DrawNumber CPaintDC dcMemory 數(shù)字圖像繪圖DrawShell CPa

33、intDC dcMemory 3D效果外殼繪圖DrawMineArea CPaintDC dcMemory 雷區(qū)繪圖 將內(nèi)存設(shè)備的內(nèi)容拷貝到實(shí)際屏幕顯示的設(shè)備dcBitBlt m_rcClientleft m_rcClienttop m_rcClientright m_rcClientbottom dcMemory 0 0 SRCCOPY bitmapDeleteObject 4 異常處理繪圖過(guò)程大多放在OnDraw 或OnPaint 函數(shù)中OnDraw 在進(jìn)行屏幕顯示時(shí)是由OnPaint 進(jìn)行調(diào)用的當(dāng)窗口因?yàn)槟撤N原因需要重繪時(shí)總是先用背景色將顯示區(qū)去除然后才調(diào)用OnPaint 而背景色往往與

34、繪圖內(nèi)容反差很大這樣在短時(shí)間內(nèi)背景色和顯示圖形的交替出現(xiàn)使得顯示窗口看起來(lái)會(huì)閃對(duì)此可以使用內(nèi)存設(shè)備環(huán)境來(lái)解決用戶可以把要顯示的圖形先在內(nèi)存中繪制好然后再一次性的將內(nèi)存中的圖形一個(gè)點(diǎn)一個(gè)點(diǎn)的覆蓋到屏幕上去在內(nèi)存中繪圖時(shí)內(nèi)存中的圖像數(shù)據(jù)只作標(biāo)識(shí)而沒(méi)有顯示效果當(dāng)貼到屏幕上時(shí)由于內(nèi)存中最終的圖形與屏幕上顯示圖形差異很小所以看起來(lái)就不會(huì)閃了結(jié) 論畢業(yè)設(shè)計(jì)是本科學(xué)習(xí)階段一次非常難得的理論與實(shí)際相結(jié)合的時(shí)機(jī)通過(guò)這次比擬完整的一個(gè)游戲的開(kāi)發(fā)我擺脫了單純的理論學(xué)習(xí)狀態(tài)和實(shí)際設(shè)計(jì)的結(jié)合鍛煉了我的綜合運(yùn)用所學(xué)的專業(yè)根底知識(shí)解決問(wèn)題的能力同時(shí)也提高我查閱文獻(xiàn)資料對(duì)程序整體的把握等其他能力與水平而且通過(guò)對(duì)整體的掌控對(duì)局

35、部的取舍以及對(duì)細(xì)節(jié)的斟酌處理都使我的能力得到了鍛煉經(jīng)驗(yàn)得到了豐富這些都我們都希望通過(guò)畢業(yè)設(shè)計(jì)所能到達(dá)的目標(biāo)在畢業(yè)設(shè)計(jì)過(guò)程中在導(dǎo)師王老師的帶著下不斷地對(duì)源程序進(jìn)行改良與完善增加了一些以往掃雷游戲所沒(méi)有的功能并且在編寫的過(guò)程中各種組件的運(yùn)用各種算法的應(yīng)用各種控件的利用我都是隨著畢業(yè)設(shè)計(jì)的不斷深入而不斷熟悉并逐步掌握的和老師以及同學(xué)們的溝通交流跟使我對(duì)程序整體的規(guī)劃與設(shè)計(jì)有了新的認(rèn)識(shí)也對(duì)自己提出了新的要求提高是有限的但也是全面的正是這次設(shè)計(jì)讓我積累了許多實(shí)際經(jīng)驗(yàn)也必然會(huì)讓我在未來(lái)的工作學(xué)習(xí)中表現(xiàn)出更高的應(yīng)變能力和理解能力順利如期的完本錢次畢業(yè)設(shè)計(jì)給了我很大的信心但是也讓我看到了自己許多的缺乏學(xué)習(xí)其實(shí)

36、就是一個(gè)不斷完善的過(guò)程正視自己的缺乏之處在以后的工作和學(xué)習(xí)中不斷的彌補(bǔ)這些缺乏之處在以后的工作中也要保持同樣的態(tài)度不斷完善自己致 謝經(jīng)過(guò)幾個(gè)月的不懈努力我的畢業(yè)設(shè)計(jì)終于完成了在這里首先要感謝的就是我的指導(dǎo)老師王留洋在這次的畢業(yè)設(shè)計(jì)過(guò)程中從醞釀選題撰寫到定稿我遇到了許許多多的問(wèn)題有許許多多的地方需要改善王老師總是耐心的幫我分析并憑借他多年的工作經(jīng)驗(yàn)給我提供合理的解決方案讓我更好地完成掃雷游戲的編寫在此要向我的指導(dǎo)老師王留洋老師表示最誠(chéng)摯的敬意和最衷心的感謝同時(shí)我也要感謝大學(xué)期間所有教導(dǎo)過(guò)我的老師們是他們傳授給我方方面面的知識(shí)拓寬了我的知識(shí)面培養(yǎng)了我的功底對(duì)畢業(yè)設(shè)計(jì)的完成不無(wú)裨益我還要感謝和自己生

37、活在一起的同學(xué)們并不是所有的問(wèn)題都得麻煩王老師在有些問(wèn)題上同學(xué)給了我很大的幫助另外還要感謝計(jì)算機(jī)工程學(xué)院所提供的優(yōu)良的實(shí)驗(yàn)環(huán)境讓我很好的鍛煉了自己的實(shí)踐能力最后我還要感謝班主任這四年來(lái)對(duì)我的關(guān)心和培養(yǎng)對(duì)我的學(xué)習(xí)和成長(zhǎng)有著極為積極的作用還有感謝陪伴了我的同學(xué)們他們不僅在畢業(yè)設(shè)計(jì)上而且在生活上給了我很大的幫助正是由于有了他們的鼓勵(lì)和幫助我才能在遇到困難的時(shí)候堅(jiān)持下來(lái)在此衷心的感謝他們參 考 文 獻(xiàn)吳乃玲C程序設(shè)計(jì)北京人民郵電出版社2021鄺玲輝 應(yīng)用系統(tǒng)開(kāi)發(fā)北京人民郵電出版社2007羅齊物流系統(tǒng)功能與構(gòu)建戰(zhàn)略分析上海 200433 2003年第10期夏邦貴郭勝等Sql Server數(shù)據(jù)庫(kù)開(kāi)發(fā)入門與

38、范例解析北京機(jī)械工業(yè)出版社2004com清華大學(xué)出版社2004甘仞初 信息系統(tǒng)開(kāi)發(fā)北京經(jīng)濟(jì)科學(xué)出版社2000com電子工業(yè)出版社2005 com高等教育出版社1999com經(jīng)濟(jì)科學(xué)出版社200210 com經(jīng)濟(jì)科學(xué)出版社1996葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕

39、襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇

40、芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅

41、膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂

42、肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀

43、肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇

44、羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅

45、袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂

46、艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿

47、膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄

48、膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞

49、肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆

50、羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇

51、羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄

52、羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁

53、節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿袈羋膁蚈羀肁蒀蚇蝕襖莆蚇螂肀莂蚆羅袂羋蚅蚄膈膄蚄螇羈蒂蚃衿嗉莈螞羈罿芄螁蟻膄膀螁螃羇葿螀裊膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃螞肂莈蒂螄羋芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羈莀蒈羃膇芆蕆蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃蠆羆艿薃袁節(jié)膅薂羄肅蒃薁蚃芀荿薀螆肅芅蕿

溫馨提示

  • 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ù)網(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)論