freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)論文-基于visualc++的新版掃雷游戲設(shè)計(jì)與實(shí)現(xiàn)-全文預(yù)覽

  

【正文】 j]區(qū)域的雷方塊狀態(tài)拷貝相應(yīng)的圖像到 [i][j]雷區(qū)的特定區(qū)域 (MINEAREA_FRAME_X+16*j, MINEAREA_FRAME_Y+16*i, 16, 16, amp。 //將內(nèi)存設(shè)備與位圖資源關(guān)聯(lián) for (UINT i = 0。dc) { CDC dcMemory。 圖 13 位圖的繪制 ID 分別為 ID_BTN_COLOR、 ID_MINE_COLOR、 ID_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ù)字 )的繪圖。 default: 淮陰工學(xué)院畢業(yè)設(shè)計(jì) 說(shuō)明書 ( 論 文 ) 第 21 頁(yè) 共 28 頁(yè) break。 break。 break。 OnLRBtnDown(m_pNewMineuRow, m_pNewMineuCol)。 m_bLRBtnDown = FALSE。 鼠標(biāo)右擊事件 其流程如圖 12 所示。amp。amp。 i maxRow。 淮陰工學(xué)院畢業(yè)設(shè)計(jì) 說(shuō)明書 ( 論 文 ) 第 18 頁(yè) 共 28 頁(yè) //顯示該區(qū)域的方塊狀態(tài) m_pMines[row][col].uState = 15 around。 UINT maxRow = row + 2。如果當(dāng)前 小方塊相鄰區(qū)域的雷數(shù)為 0,則可以向 8 個(gè)方向進(jìn)行拓展,并顯示該方塊區(qū)域,直到不可拓展為止;如果當(dāng)前小方塊相鄰區(qū)域的雷數(shù)不為0,則顯示該方塊區(qū)域的相鄰雷數(shù),用作提供用戶對(duì)其他位置的信息判斷的提示。 } 在函數(shù)體的開始部分,先用 rcBtn 和 rcMineArea 兩個(gè)矩形變量存儲(chǔ)游戲的用戶提示區(qū)域位置中的笑臉圖區(qū)域以及雷區(qū)域的位置。 } else {//點(diǎn)擊非雷區(qū)域 if (m_uGameState == GS_WAIT || m_uGameState == GS_RUN) { m_uBtnState = BUTTON_NORMAL。 return。 ReleaseCapture()。 // 如果為空白區(qū)域,拓展,否則打開該區(qū)域(顯示周圍有多少雷數(shù)) if (around == 0) ExpandMines(m_pOldMineuRow, m_pOldMineuCol)。 //改變游戲狀態(tài)為 運(yùn)行 /GS_RUN m_uGameState = GS_RUN; } if (m_pOldMineuOldState == STATE_NORMAL) {//當(dāng)該雷區(qū)域?yàn)檎N醋鳂?biāo)記才打開 //如果該區(qū)域?yàn)槔?,則死亡 if (IsMine(m_pOldMineuRow, m_pOldMineuCol)) { Dead(m_pOldMineuRow, m_pOldMineuCol)。 淮陰工學(xué)院畢業(yè)設(shè)計(jì) 說(shuō)明書 ( 論 文 ) 第 15 頁(yè) 共 28 頁(yè) Invalidate()。 return。 return。 OnLRBtnUp(m_pOldMineuRow, m_pOldMineuCol)。 //根據(jù)不同的游戲狀態(tài)作處理 switch(m_uGameState) { //游戲進(jìn)行狀態(tài) case GS_WAIT: case GS_RUN: // first get the MINEWND which if pushing down m_pOldMine = GetMine(, )。 if ((point)) {// 點(diǎn)擊笑臉圖 Invalidate()。流程如圖 11 所示。 if(m_pMines[i][j].uAttrib != ATTRIB_MINE) { m_pMines[i][j].uAttrib = ATTRIB_MINE。 j = rand() % m_uXNum。 UINT i, j。 // 雷方塊結(jié)構(gòu)體 然后定義雷方塊的狀態(tài)類別和屬性類別。 //所在雷區(qū)二位數(shù)組的列 UINT uState。 ( 2) 核心算法的實(shí)現(xiàn) 整個(gè)游戲程序包含 3 個(gè)階段:布雷、掃雷過(guò)程和結(jié)果(并不是操作結(jié)果展示,而是在掃雷過(guò)程中,玩家通過(guò)與游戲交互后的操作結(jié)果展 示)。 圖 7 記錄對(duì)話框 圖 8 排行榜 然后為 IDD_DLG_HERO對(duì)話框模板創(chuàng)建 CDlgHero類 ,分別為編輯框控件添加關(guān)聯(lián)變量 m_szBHolder、 m_szBRecord、 m_szEHolder、 m_szERecord、 m_szIHolder、m_szIRecord,并將 Cancel 按鈕的 ID 和標(biāo)題分別改為 IDC_RESET 和重新計(jì)分,三個(gè)靜態(tài)文本標(biāo)題設(shè)置為初級(jí)記錄、中級(jí)記錄、高級(jí)記錄,最后為重新計(jì)分按鈕創(chuàng)建命令消息處理函數(shù) OnReset()和其他成員函數(shù)。 } 淮陰工學(xué)院畢業(yè)設(shè)計(jì) 說(shuō)明書 (論文) 第 7 頁(yè) 共 28 頁(yè) 圖 5 使用幫助 ( 4) 以往的記錄 每一次游戲破記錄則將有關(guān) 信息保存下來(lái)。 } ( 3) 使用幫助的實(shí)現(xiàn) 由于 Windows 自帶有掃雷游戲,所以直接調(diào)用它的使用手。 if (m_uNumber m_uWidth * m_uHeight) m_uNumber = m_uWidth * m_uHeight 1。 if (m_uWidth 30) m_uWidth = 30。結(jié)果如圖 4。 InitGame()。 m_uXNum = ADVANCE_XNUM。 由于難度級(jí)別的不同,窗口大小也會(huì)隨之改變,因此通過(guò)在 CMineWnd 類增加一個(gè)改變窗口大小的函數(shù) SizeWindow()去實(shí)現(xiàn)。 圖 3 游戲菜單 ( 1) 難度級(jí)別的選擇 不同的難度級(jí)別有不同的雷區(qū)大小和不同的布雷數(shù)目,所以通過(guò)宏定義預(yù)定義不同級(jí)別的橫向方塊數(shù)目、縱向方塊數(shù)目和雷數(shù)。 ( 2) 框架的改造 通過(guò)類向?qū)?加一個(gè)繼承于 CFrameWnd 的類,命名為 CMineWnd,刪除CMineDoc、 CMineView 和 CAboutDlg 類,將 CMineWnd 類代替 CFrameWnd,讓程序啟動(dòng)的時(shí)候以此窗口為主窗口予以顯示。提示區(qū)包括兩個(gè)計(jì)數(shù)器和一個(gè)按鍵操作結(jié)果圖像提示。 在游戲開始后,雷區(qū)上方有兩個(gè)計(jì)數(shù)器。 如果某個(gè)數(shù)字方塊周圍的地雷全都標(biāo)記完,可以指向該方塊并同時(shí)點(diǎn)擊鼠標(biāo)左右鍵,將其周圍剩下的方塊挖開。安放好地雷的小方塊稱之為雷方塊,其他的稱之為非雷方塊。本次畢業(yè)設(shè)計(jì)既鍛煉了我們的實(shí)際動(dòng)手能力,又在老師的指導(dǎo)下進(jìn)行了一次模擬實(shí)際產(chǎn)品的開發(fā),對(duì)于我們以后工作能力的培養(yǎng)具有重要意義。 1. 1 開發(fā)背景 在計(jì)算機(jī)逐 步滲入社會(huì)生活各個(gè)層面的今天,計(jì)算機(jī)已經(jīng)成為了人們?nèi)粘I钪械囊徊糠?,越?lái)越多的人使用計(jì)算機(jī)辦公、娛樂(lè)等等。安德森在 “Rlogic”的基礎(chǔ)上又編寫出了游戲 “地雷 ”,由此奠定了現(xiàn)代掃雷游戲的雛形。 淮陰工學(xué)院畢業(yè)設(shè)計(jì) 說(shuō)明書 (論文) 第 1 頁(yè) 共 28 頁(yè) 1 引言 掃雷最原始的版本可以追溯到 1973 年一款名為 “方塊 ”的游戲。兩年后,湯姆 約翰遜兩位工程師在 Windows 系統(tǒng)上加載了該游戲,掃雷游戲才正式在全世界推廣開來(lái)。 1. 2 開發(fā)的目的以及意義 經(jīng)過(guò)四年的大學(xué)學(xué)習(xí),我對(duì)理論知識(shí)已經(jīng)有了一定的了解與認(rèn)知,本次的畢業(yè)設(shè)計(jì) 便是將書本上所學(xué)的理論知識(shí)與實(shí)際相結(jié)合,同時(shí)也是對(duì)所學(xué)知識(shí)的一種檢查,希望通過(guò)本次的畢業(yè)設(shè)計(jì)使自己在程序的開發(fā)和設(shè)計(jì)上有新的認(rèn)識(shí)并能有所提高。 淮陰工學(xué)院畢業(yè)設(shè)計(jì) 說(shuō)明書 (論文) 第 2 頁(yè) 共 28 頁(yè) 圖 1 初級(jí)雷區(qū) 游戲開始時(shí),系統(tǒng)會(huì)在雷區(qū)的某些小方塊中隨機(jī)布下若干個(gè)地雷 。玩家可以根據(jù)這些信息去判斷是否可以打開某些方塊,并把認(rèn)為是地雷的方塊打上標(biāo)識(shí)。在游戲 過(guò)程中,一旦錯(cuò)誤地打開了雷方塊則立即失敗,游戲結(jié)束;當(dāng)玩家標(biāo)識(shí)的地雷數(shù)超過(guò)程序設(shè)定,雖然打開了全部其余方塊,游戲仍然不會(huì)結(jié)束。按功能將游戲區(qū)域分成兩個(gè)區(qū)域:雷區(qū)和提示區(qū)。由于不需要諸如工具欄、狀態(tài)欄等功能,并且掃雷游戲的框架是不允許改變窗口大小的,所以在向?qū)У牡谒牟嚼锩姘阉械倪x項(xiàng)置空,然后點(diǎn)擊 “ Advanced” 按鈕,在彈出的對(duì)話框中選中 “ Windows Styles” 選項(xiàng)卡,將 “ Maximize box” 項(xiàng)置空,其他均使用默認(rèn)設(shè)置。具體的菜單選項(xiàng)如圖 3 所示 。于是還需要定義關(guān)于位置的宏變量。 void CMineWnd::OnMenuAdvance() { m_uLevel = LEVEL_ADVANCE。 SetCheckedLevel()。 } ( 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 按鈕分別改名為 “ 確定 ” 和 “ 取消 ” 。 if (m_uWidth 9) m_uWidth = 9。 if (m_uNumber 10) m_uNumber = 10。// TODO: Add extra validation here CDialog::OnOK()。 void CMineWnd::OnMemuHelpUse() { ShellExecute(NULL,open,NULL,NULL,SW_SHOW)。如圖 7 和圖 8 所示 。這樣新的雷區(qū)展開又觸發(fā)這個(gè)事件,就這樣遞歸下去,一直蔓延到不可展開的雷區(qū)。 //所在雷區(qū)二維數(shù)組的行 UINT uCol。 //歷史狀態(tài) } MINEWND。 void CMineWnd::L
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1