資源描述:
《畢業(yè)論文-基于visual c++的掃雷游戲設計》由會員上傳分享,免費在線閱讀,更多相關內容在學術論文-天天文庫。
1、青島理工大學琴島學院設計報告課題名稱:掃雷游戲設計學院:青島理工大學琴島學院專業(yè)班級:計算機科學與技術102班學號:20100301049學生:徐為指導教師:張秀國、宋傳磊青島理工大學琴島學院教務處2011年7月8日一、調研材料掃雷游戲是Windows操作系統(tǒng)自帶的一個小游戲,過去的幾年里Windows操作系統(tǒng)歷經數(shù)次換代,變得越來越龐大、復雜,但掃雷游戲在任何版本的Windows操作系統(tǒng)里卻依然保持原貌,而且?guī)缀趺總€電腦使用者都接觸過它,并且深愛著這款小游戲。掃雷游戲是比較經典的一款小游戲,實現(xiàn)它的方法很多,可以用很多算
2、法和語言實現(xiàn),如C,C++,VB,JAVA等。以VisualC++開發(fā)環(huán)境,設計并開發(fā)一款掃雷游戲,其功能類似于Windows操作系統(tǒng)自帶的掃雷游戲。VisualC++是一個功能強大的可視化開發(fā)工具。自1993年Microsoft公司推出VisualC++1.0后,隨著其新版本的不斷問世,VisualC++已成為專業(yè)程序員進行軟件開發(fā)的首選工具。它不僅是一個C++編譯器,而且是一個基于Windows操作系統(tǒng)的可視化即成開發(fā)環(huán)境。二、概要設計1.基本功能掃雷游戲游戲開始游戲選關游戲計雷游戲計時圖1程序基本功能類名成員函數(shù)功能
3、CMy2_1Viewleizero()顯示沒有雷的區(qū)域Onchuji()給變量m_RowCount、m_ColCount、leinum賦值并初始化游戲。Onzhongji()給變量m_RowCount、m_ColCount、leinum賦值并初始化游戲。Ongaoji()給變量m_RowCount、m_ColCount、leinum賦值并初始化游戲。OnLButtonDown()如果在按鈕上面,則顯示按鈕按下位圖;如果在掃雷區(qū),先把按鈕位圖改為張口位圖,再判斷按下的是否是雷,是就結束,重畫,以顯示所有的雷;否則,重畫相應格
4、子以顯示數(shù)字。OnRButtonDown()如果是雷,按右鍵時,顯示旗子,并減少一個剩下雷數(shù);如果我們認為那旗子的格子不是雷,按右鍵,顯示問號,并在剩下雷數(shù)加上1。OnLButtonUp()松開左鍵時,顯示按鈕沒有按下的位圖;再判斷,如果結束,就要顯示失敗的位圖;如果是在按鈕上松開按鈕,即表示我們已經按下了重新開始的按鈕,必須調用重新開始函數(shù)OnStart()。OnStart()初始化游戲OnTimer()記錄游戲所用時間表1類及其函數(shù)功能三、詳細設計1.添加位圖前十二幅是在雷區(qū)的,后四幅是按鈕。為了便于加載,必須各自保證
5、其連續(xù)性。另外,為什么不添加一個按鈕而用位圖呢?是因為即使我們添加了按鈕也要添加四幅位圖!位圖的ID號:按扭位圖:30*30IDB_ANNIU1、IDB_ANNIU2、IDB_ANNIU3、IDB_ANNIU4雷區(qū)位圖:14*14ID號按下圖依次為:IDB_BITMAP14。。。。。。IDB_BITMAP252.調整窗口大小在類CMainFrame中的PreCreateWindow()添加代碼:BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs){·······cs.dwExSt
6、yle=cs.dwExStyle
7、WS_EX_TOPMOST;//cs.style=WS_SYSMENU
8、WS_OVERLAPPED
9、WS_MINIMIZEBOX;//;cs.cx=440;cs.cy=400;returnTRUE;}2.畫游戲界面為了用戶框重畫的需要,當我們的游戲玩了一半后最小化,或是把部分窗口移出屏幕,或是執(zhí)行了新的應用程序覆蓋了原來的程序時,必須重畫。我們調用重畫函數(shù),它都要重新執(zhí)行OnDraw(CDC*pDC)函數(shù),那么,此時它就必須把已經顯示出來的位圖也顯示出來。而開始時雷區(qū)位圖是不可見的,并不影
10、響界面的初始化。voidCMy2_1View::OnDraw(CDC*pDC){·······CBrushmybrush1;mybrush1.CreateSolidBrush(RGB(192,192,192));CRectmyrect1(0,0,1200,800);pDC->FillRect(myrect1,&mybrush1);CBrushmybrush;mybrush.CreateSolidBrush(RGB(0,0,0));CRectmyrect(20,10,70,40);pDC->FillRect(myrect,&
11、mybrush);CRectmyrect2(325,10,375,40);pDC->FillRect(myrect2,&mybrush);CPenmypen;CPen*myoldPen;mypen.CreatePen(PS_SOLID,2,RGB(255,255,255));myoldPen=pDC->