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

正文內(nèi)容

基于c的掃雷游戲設(shè)計(jì)與實(shí)現(xiàn)-在線(xiàn)瀏覽

2024-09-21 12:06本頁(yè)面
  

【正文】 10) m_uNumber = 10。 CMineWnd *pMine = (CMineWnd*)AfxGetMainWnd()。// TODO: Add extra validation here CDialog::OnOK()。為“使用幫助”菜單選項(xiàng)創(chuàng)建命令消息處理函數(shù)OnMemuHelpUse(),代碼如下所示。void CMineWnd::OnMemuHelpUse() { ShellExecute(NULL,open,NULL,NULL,SW_SHOW)。顯示結(jié)果如圖6所示。如圖7和圖8所示。對(duì)IDD_DLG_NEWRECORD對(duì)話(huà)框模板類(lèi)似處理。這樣新的雷區(qū)展開(kāi)又觸發(fā)這個(gè)事件,就這樣遞歸下去,一直蔓延到不可展開(kāi)的雷區(qū)。首先定義雷方塊的數(shù)據(jù)結(jié)構(gòu),具體描述如下所示。 //所在雷區(qū)二維數(shù)組的行 UINT uCol。 //當(dāng)前狀態(tài) UINT uAttrib。 //歷史狀態(tài)} MINEWND。A 布雷隨即獲取一個(gè)狀態(tài)為非雷的點(diǎn),將它的屬性標(biāo)志為雷,重復(fù)這樣的工作,直到布下足夠的雷為止,其流程如圖9所示。void CMineWnd::LayMines(UINT row, UINT col){//埋下隨機(jī)種子 srand( (unsigned)time( NULL ) )。 for(UINT index = 0。) { //取隨即數(shù) i = rand() % m_uYNum。 if (i == row amp。 j == col) continue。//修改屬性為雷 index++。開(kāi)始獲取該區(qū)域周?chē)椎臄?shù)目numNum = 0拓展該區(qū)域修改標(biāo)志,打開(kāi)顯示該區(qū)域結(jié)束否是圖11 左擊響應(yīng)開(kāi)始在雷區(qū)雷方塊定位游戲結(jié)束勝利失敗處理顯示結(jié)束繼續(xù)處理打開(kāi)區(qū)域拓展最大的可能顯示范圍其他區(qū)域處理勝利處理否是是否否圖10 游戲流程當(dāng)鼠標(biāo)左鍵點(diǎn)擊雷區(qū)域,并且該區(qū)域不是雷方塊,需要進(jìn)行打開(kāi)以及拓展工作。鼠標(biāo)左鍵點(diǎn)擊事件的關(guān)鍵代碼如下所示。 //雷區(qū)所在的區(qū)域 CRect rcMineArea(MINE_AREA_LEFT, MINE_AREA_TOP, MINE_AREA_LEFT + m_uXNum * MINE_WIDTH, MINE_AREA_TOP + m_uYNum * MINE_HEIGHT)。 InitGame()。 UINT around = 0。 if (!m_pOldMine) { ReleaseCapture()。 } //檢測(cè)判斷當(dāng)前狀態(tài)是否為左右鼠標(biāo)同時(shí)按下 if (m_bLRBtnDown) { m_bLRBtnDown = FALSE。 if (m_uGameState == GS_WAIT) { m_uBtnState = BUTTON_NORMAL。 ReleaseCapture()。 } //假若周?chē)呀?jīng)標(biāo)識(shí)的雷=周?chē)嬲睦讛?shù),拓展 if (m_pOldMineuState != STATE_FLAG) { OpenAround(m_pOldMineuRow, m_pOldMineuCol)。 ReleaseCapture()。 } } else { //如果游戲尚未開(kāi)始,點(diǎn)擊左鍵啟動(dòng)游戲 if (m_uGameState == GS_WAIT) { if (m_uTimer) { KillTimer(ID_TIMER_EVENT)。 } m_uSpendTime = 1。 if (m_bSoundful) { sndPlaySound((LPCTSTR)LockResource(m_pSndClock), SND_MEMORY | SND_ASYNC | SND_NODEFAULT)。 //布雷 LayMines(m_pOldMineuRow, m_pOldMineuCol)。 ReleaseCapture()。 } //不是雷的時(shí)候,獲取其周?chē)睦讛?shù)目 around = GetAroundNum(m_pOldMineuRow, m_pOldMineuCol)。 else DrawDownNum(m_pOldMine, around)。 } //判斷是否為勝利 if (Victory()) { Invalidate()。 return。 case GS_VICTORY: case GS_DEAD: ReleaseCapture()。 default : break。 Invalidate()。 InvalidateRect(rcBtn)。 CWnd::OnLButtonUp(nFlags, point)。利用接口函數(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)左鍵點(diǎn)擊并釋放在雷區(qū)域rcMineArea,假若當(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)入游戲。先通過(guò)GetAroundNum()函數(shù)獲取當(dāng)前小方塊相鄰的8個(gè)位置的雷數(shù)。拓展操作的實(shí)現(xiàn)代碼如下。 UINT minRow = (row == 0) ? 0 : row 1。 UINT minCol = (col == 0) ? 0 : col 1。 UINT around = GetAroundNum(row, col)。 m_pMines[row][col].uOldState = 15 around。 //對(duì)周?chē)粋€(gè)雷都沒(méi)有的空白區(qū)域 if (around == 0) { for (i = minRow。 i++) { for (j = minCol。 j
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1