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

正文內(nèi)容

畢業(yè)論文-基于visualc的新版掃雷游戲設(shè)計與實現(xiàn)-文庫吧資料

2025-01-22 22:38本頁面
  

【正文】 外殼模塊的繪制 首先調(diào)用 FillSolidRect()在框架的左部和頂部分別繪制 2 個小白條,這樣看起來有點立體的,然后調(diào)用 Draw3dRect()在笑臉以及計時顯示區(qū)域周圍繪上一個較小的3D 邊框,最后在雷區(qū)周圍繪上一個較大的 3D 邊框。 j++) {//根據(jù) [i][j]區(qū)域的雷方塊狀態(tài)拷貝相應的圖像到 [i][j]雷區(qū)的特定區(qū)域 (MINEAREA_FRAME_X+16*j, MINEAREA_FRAME_Y+16*i, 16, 16, amp。 i++) { for (UINT j = 0。 //將內(nèi)存設(shè)備與位圖資源關(guān)聯(lián) for (UINT i = 0。dc)。dc) { CDC dcMemory。繪制笑臉按鈕的函數(shù)實現(xiàn)類似。 圖 13 位圖的繪制 ID 分別為 ID_BTN_COLOR、 ID_MINE_COLOR、 ID_NUM_COLOR,并分別添加三個位圖類型的變量,然后調(diào)用 LoadBitmap(UINT nIDResource)函數(shù)來實現(xiàn)位圖 資源與變量的關(guān)聯(lián)并添加函數(shù) DrawButton()、 DrawMineArea()、 DrawNumber()分別實現(xiàn)笑臉按鈕、雷區(qū)、數(shù)字圖像 (計時器數(shù)字和剩余雷數(shù)數(shù)字 )的繪圖。 } } CWnd::OnRButtonDown(nFlags, point)。 default: 淮陰工學院畢業(yè)設(shè)計 說明書 ( 論 文 ) 第 21 頁 共 28 頁 break。 m_pNewMineuOldState = STATE_NORMAL。 break。 m_pNewMineuOldState = STATE_DICEY。 break。 m_pNewMineuOldState = STATE_FLAG。 OnLRBtnDown(m_pNewMineuRow, m_pNewMineuCol)。 if (!m_pNewMine) return。 m_bLRBtnDown = FALSE。 void CMineWnd::OnRButtonDown(UINT nFlags, CPoint point) { //笑臉圖按鈕所在的區(qū)域 CRect rcBtn(m_uBtnRect[1], 15, m_uBtnRect[2], 39)。 鼠標右擊事件 其流程如圖 12 所示。 ExpandMines(i, j)。amp。amp。amp。 j maxCol。 i maxRow。 // “ 打開 ” 該區(qū)域,重繪 DrawSpecialMine(row, col)。 淮陰工學院畢業(yè)設(shè)計 說明書 ( 論 文 ) 第 18 頁 共 28 頁 //顯示該區(qū)域的方塊狀態(tài) m_pMines[row][col].uState = 15 around。 UINT maxCol = col + 2。 UINT maxRow = row + 2。 void CMineWnd::ExpandMines(UINT row, UINT col) { UINT i, j。如果當前 小方塊相鄰區(qū)域的雷數(shù)為 0,則可以向 8 個方向進行拓展,并顯示該方塊區(qū)域,直到不可拓展為止;如果當前小方塊相鄰區(qū)域的雷數(shù)不為0,則顯示該方塊區(qū)域的相鄰雷數(shù),用作提供用戶對其他位置的信息判斷的提示。接著判斷點擊在小方塊的狀態(tài)是否被用于通過右鍵標記(可以標記為雷或者未知,此時游戲規(guī)則規(guī)定左鍵點擊不生效),如果未標記,該狀態(tài)為普通狀態(tài) STATE_NORMAL 時,先通過 IsMine()檢測是否點中地雷而失敗地結(jié)束游戲,如果是,則調(diào)用函數(shù) Dead()來進行失敗后的工作處理,反之對它進行打開顯示與拓展操作。 } 在函數(shù)體的開始部分,先用 rcBtn 和 rcMineArea 兩個矩形變量存儲游戲的用戶提示區(qū)域位置中的笑臉圖區(qū)域以及雷區(qū)域的位置。 淮陰工學院畢業(yè)設(shè)計 說明書 ( 論 文 ) 第 17 頁 共 28 頁 } } ReleaseCapture()。 } else {//點擊非雷區(qū)域 if (m_uGameState == GS_WAIT || m_uGameState == GS_RUN) { m_uBtnState = BUTTON_NORMAL。 } m_uBtnState = BUTTON_NORMAL。 return。 } } break。 ReleaseCapture()。 } 淮陰工學院畢業(yè)設(shè)計 說明書 ( 論 文 ) 第 16 頁 共 28 頁 else if (m_pOldMineuOldState == STATE_DICEY) { //標志為 “ ? ” 問號的時候 m_pOldMineuState = STATE_DICEY。 // 如果為空白區(qū)域,拓展,否則打開該區(qū)域(顯示周圍有多少雷數(shù)) if (around == 0) ExpandMines(m_pOldMineuRow, m_pOldMineuCol)。 return。 //改變游戲狀態(tài)為 運行 /GS_RUN m_uGameState = GS_RUN; } if (m_pOldMineuOldState == STATE_NORMAL) {//當該雷區(qū)域為正常未作標記才打開 //如果該區(qū)域為雷,則死亡 if (IsMine(m_pOldMineuRow, m_pOldMineuCol)) { Dead(m_pOldMineuRow, m_pOldMineuCol)。 } //啟動定時器 m_uTimer = SetTimer(ID_TIMER_EVENT, 1000, NULL)。 淮陰工學院畢業(yè)設(shè)計 說明書 ( 論 文 ) 第 15 頁 共 28 頁 Invalidate()。 m_uTimer = 0。 return。 } if (ErrorAroundFlag(m_pOldMineuRow, m_pOldMineuCol)) { Dead(m_pOldMineuRow, m_pOldMineuCol)。 return。 Invalidate()。 OnLRBtnUp(m_pOldMineuRow, m_pOldMineuCol)。 return。 //根據(jù)不同的游戲狀態(tài)作處理 switch(m_uGameState) { //游戲進行狀態(tài) case GS_WAIT: case GS_RUN: // first get the MINEWND which if pushing down m_pOldMine = GetMine(, )。 } else if ((point)) {//點擊雷區(qū)域 CString value。 if ((point)) {// 點擊笑臉圖 Invalidate()。 void CMineWnd::OnLButtonUp(UINT nFlags, CPoint point) { //笑臉圖按鈕所在的區(qū)域 CRect rcBtn(m_uBtnRect[1], 15, m_uBtnRect[2], 39)。流程如圖 11 所示。 } } } B 掃雷 鼠標左擊事件 其流程如圖 10 所示。 if(m_pMines[i][j].uAttrib != ATTRIB_MINE) { m_pMines[i][j].uAttrib = ATTRIB_MINE。amp。 j = rand() % m_uXNum。 index m_uMineNum。 UINT i, j。 淮陰工學院畢業(yè)設(shè)計 說明書 ( 論 文 ) 第 10 頁 共 28 頁 在 CMineWnd 類中添加游戲的布雷模塊的處理函數(shù),該函數(shù)的實現(xiàn)如下。 // 雷方塊結(jié)構(gòu)體 然后定義雷方塊的狀態(tài)類別和屬性類別。 //方塊屬性 UINT uOldState。 //所在雷區(qū)二位數(shù)組的列 UINT uState。 typedef struct { UINT uRow。 ( 2) 核心算法的實現(xiàn) 整個游戲程序包含 3 個階段:布雷、掃雷過程和結(jié)果(并不是操作結(jié)果展示,而是在掃雷過程中,玩家通過與游戲交互后的操作結(jié)果展 示)。 布雷,掃雷核心算法的設(shè)計與實現(xiàn) ( 1) 算法的設(shè)計 把整個雷區(qū)看成一個二維數(shù)組, a[i][j]周圍的雷個數(shù)是由如下 8 個雷區(qū)決定的 (如 淮陰工學院畢業(yè)設(shè)計 說明書 (論文) 第 9 頁 共 28 頁 果超出邊界,應該再加以判斷 ): a[i1][j1], a[i1][j], a[i1][j+1], a[i][], a[i][j+1], a[i+1][ j1], a[i+1][j], a[i+1][j+1], 在被展開時,檢查周圍的雷數(shù)是否與周圍標示出來的雷數(shù)相等,如果相等則展開周圍未標示的雷區(qū)。 圖 7 記錄對話框 圖 8 排行榜 然后為 IDD_DLG_HERO對話框模板創(chuàng)建 CDlgHero類 ,分別為編輯框控件添加關(guān)聯(lián)變量 m_szBHolder、 m_szBRecord、 m_szEHolder、 m_szERecord、 m_szIHolder、m_szIRecord,并將 Cancel 按鈕的 ID 和標題分別改為 IDC_RESET 和重新計分,三個靜態(tài)文本標題設(shè)置為初級記錄、中級記錄、高級記錄,最后為重新計分按鈕創(chuàng)建命令消息處理函數(shù) OnReset()和其他成員函數(shù)。 圖 6 以往記錄 淮陰工學院畢業(yè)設(shè)計 說明書 (論文) 第 8
點擊復制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1