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

正文內(nèi)容

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

2025-08-10 14:10本頁面
  

【正文】 當前各種游戲軟件層出不窮。在這類小游戲中包括益智類游戲,它以畫面精美游戲方法簡單等特點得到大家的認可。針對真種情況我用 VB 編寫了掃 雷這款小游戲。 掃雷游戲的基本功能 : 點擊鼠標左鍵于未知區(qū)域 ,如果未知區(qū)域有雷 ,游戲停止 ,顯示所有的地雷。 點擊鼠標右鍵于未知區(qū)域 ,則將其置為有雷而不管是否真的有雷。 雷區(qū)上部左側(cè)顯示總雷數(shù)減被標明有雷區(qū)域的數(shù)目。 雷區(qū)上部右側(cè)顯示掃雷的時間。 設(shè)計構(gòu)想 相信大多數(shù)使用 Windows 操作系統(tǒng)的使用者,對這款游戲都不陌生。除了游樂當中能帶給使用者快樂之外,游戲的設(shè)計內(nèi)容無形中也不斷訓(xùn)練使用者的邏輯思考能力,對于依靠高度腦力工作的現(xiàn)代人,都可以通過這個游戲,不時的檢驗一下自己,所以我們不難發(fā)現(xiàn),在各種可攜帶的電子產(chǎn)品上都有這款游戲的蹤影。 武漢理工大學(xué)《 C++》課程設(shè)計 7 在 不掀開任何藏有地雷的方塊情況下,以最快的速度找出所有的地雷。 游戲的操作方面主要以鼠標為主,當鼠標指針對準未翻開的方塊按下左鍵時即表示翻開方塊,當鼠標指針對準未翻開的方塊按下右鍵時即表示標示或疑示地雷,反復(fù)按下右鍵則方塊會以未標示→標示→疑似三者關(guān)系不斷循環(huán)。 當按下的方塊不是地雷,且周邊八個方塊也都沒有地雷時,方塊會以被翻開方塊的八個方向?qū)⒖瞻追綁K翻開。 畫面初始時,以游戲者最后一次設(shè)定的地雷區(qū)大小為范圍畫出地雷區(qū),但此時并未產(chǎn)生地雷。接著就是如何 判斷按下的方塊是非地雷時的處理,這也是整個游戲的技術(shù)核心,我們可以通過遞歸的觀念來檢查周邊的方塊是否含有地雷及是否繼續(xù)往外翻開。另 一部分是掃雷,該部分包括判斷鼠標左鍵點擊某區(qū)域該區(qū)域是否是雷,如果是雷該如何操作,如果不是雷該如何操 作,鼠標右鍵點擊某區(qū)域時如果判斷該區(qū)域是雷則加以標記,如果不是雷也加以標記,以及當鼠標雙擊某區(qū)域時,判斷與該區(qū)域相鄰的其它 8 個區(qū)域是否是雷并做一個標記。 掃雷游戲主窗體的創(chuàng)建 啟動 Visual C++ 后, 選擇新建工程 , Visual C++ 提供了用戶可能需要的各種類型的應(yīng)用程序模板。 下面介紹一下如何創(chuàng)建窗體界面 : 首先,轉(zhuǎn)換窗口到資源編程窗口,修改主對話框的 Caption 屬性為“周龍掃雷游戲程序設(shè)計”,添加 2 個 Static 控件, 1 個 Caption 改為“剩余雷數(shù)”, 1 個 Caption 改為空用來表示剩余的雷數(shù)。 添加如下代碼: void OnPaint() { CDC memdc。 (IDB_BACK)。 pDCBitBlt(0,0,600,600,amp。 } 主要是美化運行界面,如下: 武漢理工大學(xué)《 C++》課程設(shè)計 11 接下來要繪制鼠標操作區(qū)域,即游戲區(qū)域。 CPen pen(PS_SOLID,1,RGB(0,0,0))。pen)。 irow+1。 pDCLineTo(x+cx*(i),y+row*cy)。 jcol+1。 pDCLineTo(x+col*cx,y+(j)*cy)。 (1) “設(shè)置菜單“包含:開始,初級,中級,高級,音樂開,音樂關(guān),退出 其中,音樂開 包含 默認的音樂和打開本地音樂兩個子菜單項。 如下: 將菜單添加到主界面,至此主窗體基本創(chuàng)建完畢。規(guī)格不同, 需要埋的地雷數(shù)目就 不同,這就會涉及到隨機埋雷算法,最簡單的是一下兩種函數(shù)的結(jié)合: void srand(unsigned int seed)。//即利用系統(tǒng)時間作為隨機種子,因為系統(tǒng)內(nèi)置的時鐘是在時刻變化的。 (2) 掃雷游戲還要求在沒有雷的地方被點擊后就會顯示一個數(shù)字表示它周圍有幾個雷,這里分析實現(xiàn)這個功能的算法。 minefield[1][5],minefield[1][6],minefield[1][[7] minefield[2][5],minefield[2][7] minefield[3][5],minefield[3][6],minefield[3][7] 將上面的 8 個網(wǎng)格的位置關(guān)系與 minefield[2][6]進行比較,不難發(fā)現(xiàn)它們之間存在一定的數(shù)學(xué)關(guān)系,抽象看來就是 :minefield[i][j]周圍雷的個數(shù)是由如下 8 個位置處的雷的總合決定的。 根據(jù)以上的分析,設(shè)計布雷算法的代碼,添加 BuLei()函數(shù)用于隨機布雷。 srand( (unsigned)time( NULL ) )。im_Num。 k2=rand()%col。 } else { i。 } if(((k11=0)amp。(k21=0))amp。(m_NodeList[k11][k21].m_Type!=ncLEI))//左上方 { m_NodeList[k11][k21].m_Type=ncNUMBER。 } if((k11=0)amp。m_NodeList[k11][k2].m_Type!=ncLEI)//上方 { m_NodeList[k11][k2].m_Type=ncNUMBER。 } if(((k11=0)amp。(k2+1col))amp。m_NodeList[k11][k2+1].m_Type!=ncLEI)//右上方 { m_NodeList[k11][k2+1].m_Type=ncNUMBER。 } if((k21=0)amp。m_NodeList[k1][k21].m_Type!=ncLEI)//左方 { m_NodeList[k1][k21].m_Type=ncNUMBER。 } if((k2+1col)amp。m_NodeList[k1][k2+1].m_Type!=ncLEI)//右方 { m_NodeList[k1][k2+1].m_Type=ncNUMBER。 } if(((k1+1row)amp。(k21=0))amp。m_NodeList[k1+1][k21].m_Type!=ncLEI)//左下方 { m_NodeList[k1+1][k21].m_Type=ncNUMBER。 } if((k1+1row)amp。m_NodeList[k1+1][k2].m_Type!=ncLEI)//下方 { m_NodeList[k1+1][k2].m_Type=ncNUMBER。 } if(((k1+1row)amp。(k2+1col))amp。m_NodeList[k1+1][k2+1].m_Type!=ncLEI)//右下方 { m_NodeList[k1+1][k2+1].m_Type=ncNUMBER。 } } } 武漢理工大學(xué)《 C++》課程設(shè)計 16 當然,還得添加繪圖代碼用來在游戲區(qū)域顯示隨機布置的雷和周邊情況,在 OnPaint函數(shù)中添加如下代碼: void OnPaint() { for(int i=0。i++) for(int j=0。j++) { if(m_NodeList[i][j].m_Type==ncLEI) { (amp。 pDCBitBlt(m_NodeList[i][j].,m_NodeList[i][j].m_Point. ycy/2,20,20,amp。 } else { if(m_NodeList[i][j].m_Around==1) { (amp。 pDCBitBlt(m_NodeList[i][j].,m_NodeList[i][j]. ,20,20,amp。 } else if(m_NodeList[i][j].m_Around==2) { (amp。 pDCBitBlt(m_NodeList[i][j].,m_NodeList[i][j]. ,20,20,amp。 } else if(m_NodeList[i][j].m_Around==3) { 武漢理工大學(xué)《 C++》課程設(shè)計 17 (amp。 pDCBitBlt(m_NodeList[i][j].,m_NodeList[i][j]. ,20,20,amp。 } else if(m_NodeList[i][j].m_Around==4) { me (amp。 pDCBitBlt(m_NodeList[i][j].,m_NodeList[i][j]. ,20,20,amp。 } else if(m_NodeList[i][j].m_Around==5) { (amp。 pDCBitBlt(m_NodeList[i][j].,m_NodeList[i][j]. ,20,20,amp。 } else if(m_NodeList[i][j].m_Around==6) { (amp。 pDCBitBlt(m_NodeList[i][j].,m_NodeList[i][j]. ,20,20,amp。 } else if(m_NodeList[i][j].m_Around==7) { (amp。 pDCBitBlt(m_NodeList[i][j].,m_NodeList[i][j]. ,20,20,amp。 } else if(m_NodeList[i][j].m_Around==8) 武漢理工大學(xué)《 C++》課程設(shè)計 18 { (amp。 pDCBitBlt(m_NodeList[i][j].,m_NodeList[i][j]. ,20,20,amp。 } } } } 隨機布雷效果比較如下: 第一次運行:
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1