資源描述:
《用vc++設計與實現(xiàn)掃雷系統(tǒng)11833》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、用VC++實現(xiàn)掃雷游戲程序學生姓名:尹一笑指導老師:顏宏文摘要:本課程設計實現(xiàn)類似于Windows操作系統(tǒng)自帶的掃雷游戲。在課程設計中,系統(tǒng)開發(fā)平臺為WindowsXP,程序設計語言采用VisualC++,程序運行平臺為Windows2000/XP。在程序設計中,把整個雷區(qū)看成一個二維數(shù)組,把雷方塊定義為具有所在雷區(qū)二維數(shù)組的行和列、當前狀態(tài)、方塊屬性、歷史狀態(tài)的結構體,采用了結構化與面向對象兩種解決問題的方法。整個游戲程序包括了布雷、掃雷過程和結果三個階段,在處理鼠標響應事件中伴隨著GDI繪圖。程序通過調(diào)試運行,實現(xiàn)了設計目標,能夠同時滿足掃雷游戲初學者和高手的需要。關鍵
2、詞:掃雷游戲程序設計VisualC++GDI繪圖1概述掃雷游戲的游戲界面如圖1.1所示。在這個界面中,由眾多面積均等的小方塊所組成的區(qū)域稱之為雷區(qū),雷區(qū)的大小由用戶設置的游戲等級決定。玩家標定未知未知區(qū)周圍雷數(shù)提示玩家標定地雷圖1.1游戲開始時,系統(tǒng)會在雷區(qū)的某些小方塊中隨機布下若干個地雷。安放好地雷的小方塊稱之為雷方塊,其他的稱之為非雷方塊。部署完畢后,系統(tǒng)會在其他非雷方塊中填充一些數(shù)字。某一個具體數(shù)字表示與其緊鄰的8個方塊中有多少雷方塊。玩家可以根據(jù)這些信息去判斷是否可以打開某些方塊,并把認為是地雷的方塊打上標識。當玩家將所有地雷找出后,其余的非雷方塊區(qū)域都已打開,此時
3、游戲結束。在游戲過程中,一旦錯誤地打開了雷方塊則立即失敗,游戲結束;當玩家標識的地雷數(shù)超過程序設定,雖然打開了全部其余方塊,游戲仍然不會結束。在游戲開始后,雷區(qū)上方有兩個計數(shù)器。右邊的計數(shù)器顯示用戶掃雷所花費的總時間,以秒為單位;左邊的計數(shù)器顯示當前還剩余多少個雷方塊。2需求分析本課程設計實現(xiàn)類似于Windows操作系統(tǒng)自帶的掃雷游戲。游戲需要提供一個菜單欄,上面有不同的相關選項,如游戲的開始、難度設置、退出等。按功能將游戲區(qū)域分成兩個區(qū)域:雷區(qū)和提示區(qū)。提示區(qū)包括兩個計數(shù)器和一個按鍵操作結果圖像提示。游戲過程中,當玩家用鼠標點擊相應的方塊,程序就會作出相應的鼠標響應事件,
4、并伴隨著GDI繪圖,而眾多鼠標事件的處理,都是圍繞著實現(xiàn)掃雷程序的算法而衍生的。3總體設計3.1游戲框架的搭建3.1.1工程項目的創(chuàng)建利用應用程序向導創(chuàng)建一個名稱為Mine的工程項目。由于不需要諸如工具欄、狀態(tài)欄等功能,并且掃雷游戲的框架是不允許改變窗口大小的,所以在向導的第四步里面把所有的選項置空,然后點擊“Advanced”按鈕,在彈出的對話框中選中“WindowsStyles”選項卡,將“Maximizebox”項置空,其他均使用默認設置。3.1.2框架的改造通過類向導添加一個繼承于CFrameWnd的類,命名為CMineWnd,刪除CMineDoc、CMineVie
5、w和CAboutDlg類,將CMineWnd類代替CFrameWnd,讓程序啟動的時候以此窗口為主窗口予以顯示。結果如圖1.2。圖1.23.2菜單的制作參考Windows自帶的掃雷游戲,創(chuàng)建出“游戲”和“幫助”菜單,然后通過菜單資源編輯器設定菜單的功能選項,包括難度級別的選擇、顏色和音效是否開啟、掃雷英雄榜、使用手冊、關于軟件的信息等。具體的菜單選項分別如圖1.3。3.2.1難度級別的選擇不同的難度級別有不同的雷區(qū)大小和不同的布雷數(shù)目,所以需要設置游戲的難度級別。其宏定義如下所示,預定義了不同級別的橫向方塊數(shù)目、縱向方塊數(shù)目和雷數(shù)。并將該宏定義放入新建的頭文件“MineDe
6、fs.h”中。#definePRIMARY_XNUM9//初級x方向的方塊區(qū)域數(shù)目#definePRIMARY_YNUM9//初級y方向的方塊區(qū)域數(shù)目#definePRIMARY_MINENUM10//初級雷的數(shù)目#defineSECONDRY_XNUM16#defineSECONDRY_YNUM16#defineSECONDRY_MINENUM40#defineADVANCE_XNUM30#defineADVANCE_YNUM16#defineADVANCE_MINENUM99窗口除了雷區(qū)外至少還包括藍色窗口邊緣Frame_wide、白色的視覺效果區(qū)line_wide、3
7、D的外殼邊框3D_line_wide、雷區(qū)mine_area_wide等。于是還需要定義關于位置的宏變量,如下所示。//窗口寬度相關定義#defineDEFAULT_FRAME_X6//窗口X方向寬#defineDEFAULT_FRAME_Y52//窗口Y方向寬#defineLINE_WIDTH_03//線邊0的寬度#defineLINE_WIDTH_12//線邊1的寬度#defineSIDE_WIDTH_06//邊0的寬度#defineSIDE_WIDTH_15//邊1的寬度#defineSHELL_S_H37/