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