




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.課 程 設(shè) 計(jì) 報(bào) 告 課程名稱:面向?qū)ο蟪绦蛟O(shè)計(jì)C+ 設(shè)計(jì)題目: 掃雷 專(zhuān) 業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 姓 名: 學(xué) 號(hào): 指導(dǎo)教師:李 曉 虹 2016 年 1 月 7 日1、 系統(tǒng)需求分析 隨著世界經(jīng)濟(jì)的長(zhǎng)足發(fā)展和計(jì)算機(jī)技術(shù)的日益成熟,計(jì)算機(jī)被應(yīng)用到人類(lèi)活動(dòng)的各個(gè)領(lǐng)域,各種應(yīng)用軟件也相繼問(wèn)世,這其中有相當(dāng)一部分是游戲軟件。使用游戲軟件自然是為了滿足人們對(duì)娛樂(lè)性的要求,而有些軟件大都采用3D設(shè)計(jì)對(duì)系統(tǒng)配置的要求較高。 在眾多游戲軟件中,也不乏一些小游戲的身影,它們對(duì)系統(tǒng)的配置要求較低。能夠滿足人們對(duì)娛樂(lè)性的需求,是人們?cè)谕瓿晒ぷ鲓蕵?lè)時(shí)候的最好選擇。在各種操作系統(tǒng)中都附帶了一些小的游戲,而這些游
2、戲也成為電腦用戶軟件中不可或缺的一部分。 掃雷游戲是比較經(jīng)典的一款小游戲,過(guò)去的幾年里Windows操作系統(tǒng)歷經(jīng)數(shù)次換代,變得越來(lái)越龐大、復(fù)雜,但這個(gè)可愛(ài)的小游戲在任何版本的Windows操作系統(tǒng)里去卻依然保持著原貌。但幾乎每個(gè)電腦使用者都接觸過(guò)它,并且深?lèi)?ài)著這款小游戲。作為本系統(tǒng)的開(kāi)發(fā)工具,Microsoft Visual C+ 6.0成為首選。它具有可視化的編程界面、詳細(xì)的提示、以及完善的幫助文檔,使得軟件開(kāi)發(fā)人員感到無(wú)比的親切感。2、 總體設(shè)計(jì)2.1 設(shè)計(jì)思路 在設(shè)計(jì)之前,我們先來(lái)了解這款游戲的規(guī)則:在不打開(kāi)任何藏有地雷的格子情況下,以最快的速度找出所有的地雷。如果在打開(kāi)格子的過(guò)程中,不
3、小心翻開(kāi)(踩到)藏有地雷的格子,則宣告失敗(游戲結(jié)束),惟有將所有不含地雷的格子打開(kāi),游戲才算成功。游戲的操作方面主要以鼠標(biāo)為主,當(dāng)鼠標(biāo)指針對(duì)準(zhǔn)未翻開(kāi)的格子按下左鍵時(shí)即表示翻開(kāi)格子,當(dāng)鼠標(biāo)指針對(duì)準(zhǔn)未翻開(kāi)的方塊按下右鍵時(shí)即表示標(biāo)示或疑示地雷,反復(fù)按下右鍵則格子會(huì)以未標(biāo)示標(biāo)示疑似三者關(guān)系不斷循環(huán)。游戲者可以通過(guò)地雷區(qū)內(nèi)的數(shù)字提示了解以數(shù)字為中心的其周邊八個(gè)格子內(nèi)所含的地雷數(shù),假若翻開(kāi)的格子顯示數(shù)字“3”,則表示以其為中心的周邊格子內(nèi)藏有3個(gè)地雷。當(dāng)按下的格子不是地雷,且周邊八個(gè)格子也都沒(méi)有地雷時(shí),格子會(huì)以被翻開(kāi)格子的八個(gè)方向?qū)⒖瞻赘褡臃_(kāi)。2.2模塊功能介紹游戲總共七個(gè)類(lèi),其中以下四個(gè)類(lèi)為主要。1
4、、 主界面對(duì)話框類(lèi):主要負(fù)責(zé)主菜單及各個(gè)窗口類(lèi)對(duì)象的創(chuàng)建和調(diào)用等處理。2、 掃雷窗口類(lèi):主要負(fù)責(zé)接收玩家鼠標(biāo)輸入的打開(kāi)格子位置、格子變換、花費(fèi)時(shí)間及地雷格子的顯示等處理。3、 幫組對(duì)話框類(lèi):主要負(fù)責(zé)幫助提示的顯示及其它顯示功能。4、 掃雷視圖類(lèi):主要負(fù)責(zé)顯示掃雷界面的展示。2.3模塊結(jié)構(gòu)圖2.3.1游戲主界面設(shè)計(jì)掃雷游戲主界面的設(shè)計(jì),如下圖1所示 圖1掃雷游戲主界面2.3.2游戲主菜單結(jié)構(gòu)的設(shè)計(jì)圖2 游戲主菜單結(jié)構(gòu)3、 詳細(xì)設(shè)計(jì)3.1游戲菜單的實(shí)現(xiàn)在掃雷游戲中,通過(guò)如下幾個(gè)步驟即可實(shí)現(xiàn)添加游戲的菜單。 (1) 在掃雷游戲工程的資源中添加一個(gè)菜單資源 (2) 給每個(gè)菜單欄添加響應(yīng)函數(shù)到CMain
5、Frame類(lèi)中。 (3) 菜單響應(yīng)函數(shù)的實(shí)現(xiàn),代碼如下,#if !defined(AFX_MAINFRM_H_91F247CA_D634_432A_AC01_35B33EA7D404_INCLUDED_)#define AFX_MAINFRM_H_91F247CA_D634_432A_AC01_35B33EA7D404_INCLUDED_#if _MSC_VER > 1000#pragma once#endif / _MSC_VER > 1000class CMainFrame : public CFrameWndprotected: / create from serializa
6、tion onlyCMainFrame();DECLARE_DYNCREATE(CMainFrame)/ Attributespublic:/ Operationspublic:virtual BOOL PreCreateWindow(CREATESTRUCT& cs);public:virtual CMainFrame();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endifprotected:DECLARE_MESSAGE_MAP();#e
7、ndif 3.2游戲幫助對(duì)話框的實(shí)現(xiàn)掃雷游戲中的幫助是使用一個(gè)對(duì)話框來(lái)實(shí)現(xiàn)的。其實(shí)現(xiàn)步驟如下。 (1) 添加一個(gè)對(duì)話框資源到工程中,并填寫(xiě)說(shuō)明文字。(2) 編寫(xiě)一個(gè)CAboutDlg對(duì)話框類(lèi),主要是加載IDD_ABOUTBOX對(duì)話框資源。通過(guò)資源中的文字說(shuō)明對(duì)游戲操作方法進(jìn)行描述。同時(shí)只包含單擊“確定”按鈕的響應(yīng)函數(shù)。(3) CAboutDlg對(duì)話框類(lèi)的實(shí)現(xiàn),需要實(shí)現(xiàn)對(duì)話框類(lèi)的構(gòu)造函數(shù)、析構(gòu)函數(shù)和“確定”按鈕響應(yīng)函數(shù),代碼如下,class CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)
8、enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/ No message handlers/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg
9、:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()
10、/ App command to run the dialogvoid CMineSweeperApp:OnAppAbout()CAboutDlg aboutDlg;aboutDlg.DoModal();/ CMineSweeperApp message handlers3.3新游戲處理模塊的設(shè)計(jì)與實(shí)現(xiàn) 新游戲處理模塊主要負(fù)責(zé)游戲中的游戲初始化及開(kāi)始游戲。其設(shè)計(jì)比較簡(jiǎn)單,只需要通過(guò)如下幾步即可實(shí)現(xiàn)。 (1)載入圖片資源和配置文件中的數(shù)據(jù)。 (2)把所有的游戲參數(shù)進(jìn)行初始化。例如,當(dāng)前消耗時(shí)間和狀態(tài)等。 (3)初始化表示地雷區(qū)域的二維數(shù)組。 (4)讓地雷區(qū)域圖像失效,重新繪制新的圖像。實(shí)現(xiàn)代碼如
11、下,BEGIN_MESSAGE_MAP(CMineSweeperView, CView)/AFX_MSG_MAP(CMineSweeperView)ON_COMMAND(ID_EXIT, OnExit)ON_COMMAND(ID_START, OnStart)ON_COMMAND(ID_SETTING, OnSetting)ON_WM_LBUTTONDOWN()ON_WM_RBUTTONDOWN()ON_WM_TIMER()/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMineSweeperView construction/destructionCMineSweeperVi
12、ew:CMineSweeperView()/ TODO: add construction code herem_row=10;m_col=10;m_mine=10;m_start=0;m_stop=0;m_t=0;CMineSweeperView:CMineSweeperView()BOOL CMineSweeperView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CView:PreCr
13、eateWindow(cs);/ CMineSweeperView drawingvoid CMineSweeperView:OnDraw(CDC* pDC)CMineSweeperDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data herepDC->BitBlt(0,0,1024,822,&cbj,0,0,SRCCOPY);/ CMineSweeperView diagnostics#ifdef _DEBUGvoid CMineSweeperView:AssertV
14、alid() constCView:AssertValid();void CMineSweeperView:Dump(CDumpContext& dc) constCView:Dump(dc);CMineSweeperDoc* CMineSweeperView:GetDocument() / non-debug version is inlineASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMineSweeperDoc);return (CMineSweeperDoc*)m_pDocument;#endif /_DEBUG/ CMineS
15、weeperView message handlersvoid CMineSweeperView:OnInitialUpdate() CView:OnInitialUpdate();/ TODO: Add your specialized code here and/or call the base classAfxGetApp()->m_pMainWnd->SetWindowPos(NULL,300,50,460,500,NULL);initbitmap(); / 初始化位圖void CMineSweeperView:OnStart() / TODO: Add your comm
16、and handler code herem_start=1;m_stop=0;m_t=0;initdata(); / 初始化數(shù)據(jù)paintmine(); / 畫(huà)雷區(qū)SetTimer(0,1000,NULL);void CMineSweeperView:initdata()int i=0,j=0,n=0;mine=new Mine *m_row;for(i=0;i<m_row;i+)minei=new Mine m_col;for(i=0;i<m_row;i+)for(j=0;j<m_col;j+)mineij.x=50+35*j;mineij.y=80+35*i;minei
17、j.p=0;mineij.flag=0;mineij.num=0;srand(time(NULL);if(0=m_mine)return;while(1)int x=rand()%m_row;int y=rand()%m_col;if(0=minexy.p)minexy.p=1;n+;if(x-1>=0&&y-1>=0)minex-1y-1.num+;if(x-1>=0)minex-1y.num+;if(x-1>=0&&y+1<m_col)minex-1y+1.num+;if(y-1>=0)minexy-1.num+;if(y
18、+1<m_col)minexy+1.num+;if(x+1<m_row&&y-1>=0)minex+1y-1.num+;if(x+1<m_row)minex+1y.num+;if(x+1<m_row&&y+1<m_col)minex+1y+1.num+;if(n>=m_mine)break;void CMineSweeperView:paintmine()int i=0,j=0;CDC *pDC=GetDC();for(i=0;i<m_row;i+)for(j=0;j<m_col;j+)pDC->Bit
19、Blt(mineij.x,mineij.y,35,35,&cbj0,0,0,SRCCOPY);ReleaseDC(pDC);3.4地雷格子模塊的設(shè)計(jì)與實(shí)現(xiàn)地雷格子的處理時(shí)掃雷游戲的核心內(nèi)容,包括如下幾個(gè)部分。1、 地雷鋪設(shè)模塊。 游戲中的地雷是隨機(jī)鋪設(shè)的,可以調(diào)用隨機(jī)數(shù)發(fā)生函數(shù)生成隨機(jī)數(shù)。利用隨機(jī)數(shù)去除最大行數(shù)或者最大列數(shù),得到放置地雷行列坐標(biāo)。然后分別防止地雷到不同的行和列的格子中去。2、 自動(dòng)打開(kāi)周?chē)皇堑乩椎母褡印?游戲中,當(dāng)玩家單擊的格子周?chē)鷽](méi)有地雷格子時(shí),就需要程序自動(dòng)地把周?chē)母褡幼詣?dòng)打開(kāi)來(lái)提高玩家的效率。其實(shí)現(xiàn)是通過(guò)遞歸的方法不斷地打開(kāi)周?chē)褡又車(chē)乩讉€(gè)數(shù)為0的格子來(lái)實(shí)現(xiàn)
20、。3、 獲得周?chē)乩讉€(gè)數(shù)模塊。 在游戲中當(dāng)玩家打開(kāi)一個(gè)格子時(shí),如果當(dāng)前這個(gè)格子不是地雷,那么其一定是標(biāo)明周?chē)牡乩讉€(gè)數(shù)的格子。要實(shí)現(xiàn)這個(gè)功能主要是通過(guò)遍歷當(dāng)前格子周?chē)?×3范圍的數(shù)組。當(dāng)找到一個(gè)元素狀態(tài)是地雷時(shí),就把記錄增加1,知道九個(gè)格子全部找完。這樣就可以得到當(dāng)前格子周?chē)牡乩讉€(gè)數(shù)。 以上講解的相關(guān)函數(shù)的實(shí)現(xiàn)。實(shí)現(xiàn)代碼如下,void CMineSweeperView:OnStart() / TODO: Add your command handler code herem_start=1;m_stop=0;m_t=0;initdata(); / 初始化數(shù)據(jù)paintmine()
21、; / 畫(huà)雷區(qū)SetTimer(0,1000,NULL);void CMineSweeperView:initdata()int i=0,j=0,n=0;mine=new Mine *m_row;for(i=0;i<m_row;i+)minei=new Mine m_col;for(i=0;i<m_row;i+)for(j=0;j<m_col;j+)mineij.x=50+35*j;mineij.y=80+35*i;mineij.p=0;mineij.flag=0;mineij.num=0;srand(time(NULL);if(0=m_mine)return;while(1
22、)int x=rand()%m_row;int y=rand()%m_col;if(0=minexy.p)minexy.p=1;n+;if(x-1>=0&&y-1>=0)minex-1y-1.num+;if(x-1>=0)minex-1y.num+;if(x-1>=0&&y+1<m_col)minex-1y+1.num+;if(y-1>=0)minexy-1.num+;if(y+1<m_col)minexy+1.num+;if(x+1<m_row&&y-1>=0)minex+1y-1.num+
23、;if(x+1<m_row)minex+1y.num+;if(x+1<m_row&&y+1<m_col)minex+1y+1.num+;if(n>=m_mine)break;void CMineSweeperView:paintmine()int i=0,j=0;CDC *pDC=GetDC();for(i=0;i<m_row;i+)for(j=0;j<m_col;j+)pDC->BitBlt(mineij.x,mineij.y,35,35,&cbj0,0,0,SRCCOPY);ReleaseDC(pDC);3.5 游戲規(guī)劃模塊
24、的設(shè)計(jì)與實(shí)現(xiàn) 游戲規(guī)則模塊的實(shí)現(xiàn),主要由游戲勝利和游戲結(jié)束判斷函數(shù)組成。通過(guò)對(duì)游戲的結(jié)果進(jìn)行判斷,實(shí)現(xiàn)掃雷游戲的規(guī)則。1、 游戲勝利的判斷 通過(guò)遍歷整個(gè)地雷數(shù)組,查找是否全部的地雷格子已經(jīng)被標(biāo)記或者找出來(lái)。如果已經(jīng)全部被找出來(lái)或者標(biāo)記出來(lái),那么說(shuō)明玩家勝利,繁殖,說(shuō)明玩家未勝利,需要繼續(xù)游戲。2、 游戲結(jié)束的判斷當(dāng)玩家打開(kāi)一個(gè)格子時(shí),就對(duì)當(dāng)前格子進(jìn)行判斷。如果是地雷,說(shuō)明玩家不行。游戲以失敗結(jié)束。而如果不是地雷,就對(duì)玩家選中的格子周?chē)臉?biāo)示進(jìn)行判斷,如果有判斷錯(cuò)誤的格子,也說(shuō)明玩家游戲失敗,游戲結(jié)束。實(shí)現(xiàn)代碼如下,void CMineSweeperView:OnLButtonDown(UINT
25、 nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultif(0=m_start|1=m_stop)return;CDC *pDC=GetDC();int i=-1,j=-1;get_ij(point,&i,&j);if(-1=i|-1=j)return;if(1=mineij.p)pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm9,0,0,SRCCOPY);m_stop=1;KillTimer(0);AfxMessag
26、eBox("對(duì)不起!n你踩到地雷了!n再來(lái)一次吧!");elseif(2=mineij.flag)m_mine+;switch(mineij.num)case 0:pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm0,0,0,SRCCOPY);break;case 1:pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm1,0,0,SRCCOPY);break;case 2:pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm2,0,0,SRCCO
27、PY);break;case 3:pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm3,0,0,SRCCOPY);break;case 4:pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm4,0,0,SRCCOPY);break;case 5:pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm5,0,0,SRCCOPY);break;case 6:pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm6,0,0,SRCCO
28、PY);break;case 7:pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm7,0,0,SRCCOPY);break;mineij.flag=1;ReleaseDC(pDC);CView:OnLButtonDown(nFlags, point);void CMineSweeperView:OnRButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultif(0=m_start|1=m_stop)retu
29、rn;CDC *pDC=GetDC();int i=-1,j=-1;get_ij(point,&i,&j);if(-1=i|-1=j)return;if(1=mineij.flag)return;if(0=m_mine)return;if(2=mineij.flag) pDC->BitBlt(mineij.x,mineij.y,35,35,&cbj0,0,0,SRCCOPY);else pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm10,0,0,SRCCOPY);if(m_mine>0) m_mine-;min
30、eij.flag=2;if(0=m_mine)ifwin();ReleaseDC(pDC);CView:OnRButtonDown(nFlags, point);void CMineSweeperView:get_ij(CPoint p,int *r,int *c)int i=0,j=0;for(i=0;i<m_row;i+)for(j=0;j<m_col;j+)if(mineij.x<p.x&&p.x<mineij.x+35)if(mineij.y<p.y&&p.y<mineij.y+35)*r=i;*c=j;return;
31、void CMineSweeperView:ifwin()CDC *pDC=GetDC();m_stop=1;int i=0,j=0;for(i=0;i<m_row;i+)for(j=0;j<m_col;j+)if(2=mineij.flag)if(1=mineij.p)pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm9,0,0,SRCCOPY);elseswitch(mineij.num)case 0:pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm0,0,0,SRCCOPY);break
32、;case 1:pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm1,0,0,SRCCOPY);break;case 2:pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm2,0,0,SRCCOPY);break;case 3:pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm3,0,0,SRCCOPY);break;case 4:pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm4,0,0,SRCCOPY);break
33、;case 5:pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm5,0,0,SRCCOPY);break;case 6:pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm6,0,0,SRCCOPY);break;case 7:pDC->BitBlt(mineij.x,mineij.y,35,35,&cbm7,0,0,SRCCOPY);break;for(i=0;i<m_row;i+)for(j=0;j<m_col;j+)if(2=mineij.flag&&0=mi
34、neij.p)CString x,y,str;x.Format("%d",i+1);y.Format("%d",j+1);str="很遺憾!n第 "str=str+x+" 行,第 "+y+" 列 你好幸運(yùn)的n游戲結(jié)束!"KillTimer(0);AfxMessageBox(str);ReleaseDC(pDC);return;KillTimer(0);AfxMessageBox("恭喜你n你已經(jīng)排出所有的地雷了!n");ReleaseDC(pDC);void CMineSwe
35、eperView:painttime()CDC *pDC=GetDC();CString s;s.Format("%d s",m_t);pDC->BitBlt(50,20,29,29,&cclock,0,0,SRCCOPY);pDC->SetBkMode(TRANSPARENT);pDC->BitBlt(90,30,29,29,&cbj,90,30,SRCCOPY);pDC->TextOut(90,30,s);s.Format("%d",m_mine);pDC->BitBlt(130,20,29,29,&am
36、p;cmine,0,0,SRCCOPY);pDC->BitBlt(170,30,29,29,&cbj,170,30,SRCCOPY);pDC->TextOut(170,30,s);m_t+;ReleaseDC(pDC);void CMineSweeperView:OnTimer(UINT nIDEvent) / TODO: Add your message handler code here and/or call defaultswitch(nIDEvent)case 0:painttime();break;CView:OnTimer(nIDEvent);3.6游戲繪圖模
37、塊的設(shè)計(jì)與實(shí)現(xiàn) 在掃雷游戲中,通過(guò)繪圖模塊實(shí)現(xiàn)地雷、格子、地雷個(gè)數(shù)、當(dāng)前時(shí)間及控制按鈕等圖片和信息的提示。有以下幾個(gè)函數(shù)組成。1、 繪按鈕函數(shù) 繪按鈕函數(shù),主要通過(guò)在游戲中不斷地得到當(dāng)前游戲的狀態(tài)。根據(jù)這個(gè)按鈕,在按鈕圖片中把指定的坐標(biāo)范圍圖片繪制到主界面上。2、 繪數(shù)字區(qū)域函數(shù) 剩余地雷個(gè)數(shù)和消耗時(shí)間的數(shù)字顯示,主要通過(guò)一定的算法,得到當(dāng)前地雷剩余個(gè)數(shù)和已消耗的時(shí)間。3、 繪雷區(qū)函數(shù) 繪雷函數(shù),時(shí)通過(guò)遍歷當(dāng)前雷區(qū)數(shù)組,并根據(jù)當(dāng)前元素所代表的類(lèi)型不同,將不同的圖片繪制到位置。實(shí)現(xiàn)代碼如下,void CMineSweeperView:OnInitialUpdate() CView:OnIniti
38、alUpdate();/ TODO: Add your specialized code here and/or call the base classAfxGetApp()->m_pMainWnd->SetWindowPos(NULL,300,50,460,500,NULL);initbitmap(); / 初始化位圖void CMineSweeperView:initbitmap()CDC *pDC=GetDC();bm0.LoadBitmap(IDB_0);bm1.LoadBitmap(IDB_1);bm2.LoadBitmap(IDB_2);bm3.LoadBitmap(I
39、DB_3);bm4.LoadBitmap(IDB_4);bm5.LoadBitmap(IDB_5);bm6.LoadBitmap(IDB_6);bm7.LoadBitmap(IDB_7);bm8.LoadBitmap(IDB_8);bm9.LoadBitmap(IDB_9);bm10.LoadBitmap(IDB_10);bj.LoadBitmap(IDB_bj);bj0.LoadBitmap(IDB_bj0);bclock.LoadBitmap(IDB_clock);bmine.LoadBitmap(IDB_mine);bnum.LoadBitmap(IDB_num);cbm0.Create
40、CompatibleDC(pDC);cbm1.CreateCompatibleDC(pDC);cbm2.CreateCompatibleDC(pDC);cbm3.CreateCompatibleDC(pDC);cbm4.CreateCompatibleDC(pDC);cbm5.CreateCompatibleDC(pDC);cbm6.CreateCompatibleDC(pDC);cbm7.CreateCompatibleDC(pDC);cbm8.CreateCompatibleDC(pDC);cbm9.CreateCompatibleDC(pDC);cbm10.CreateCompatibl
41、eDC(pDC);cbj.CreateCompatibleDC(pDC);cbj0.CreateCompatibleDC(pDC);cclock.CreateCompatibleDC(pDC);cmine.CreateCompatibleDC(pDC);cnum.CreateCompatibleDC(pDC);cbm0.SelectObject(&bm0);cbm1.SelectObject(&bm1);cbm2.SelectObject(&bm2);cbm3.SelectObject(&bm3);cbm4.SelectObject(&bm4);cbm5
42、.SelectObject(&bm5);cbm6.SelectObject(&bm6);cbm7.SelectObject(&bm7);cbm8.SelectObject(&bm8);cbm9.SelectObject(&bm9);cbm10.SelectObject(&bm10);cbj.SelectObject(&bj);cbj0.SelectObject(&bj0);cclock.SelectObject(&bclock);cmine.SelectObject(&bmine);cnum.SelectObject(&bnum);ReleaseDC(pDC);void CMineSweeperView:OnExit() / TODO: Add your command handler code hereexit(0);3.7、玩家輸入模塊的設(shè)計(jì)與實(shí)現(xiàn) 在掃雷游戲中,用的最多的就是鼠標(biāo)的輸入。而鼠標(biāo)輸入又分為鼠標(biāo)左鍵單
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度房地產(chǎn)項(xiàng)目增資入股投資協(xié)議
- 二零二五年度辦公室文員聘用與企業(yè)文化融合協(xié)議
- 二零二五年度新能源汽車(chē)碰撞責(zé)任免除合同
- 2025年度現(xiàn)代農(nóng)業(yè)病蟲(chóng)害防治藥害賠償協(xié)議書(shū)
- 二零二五年度勞動(dòng)局標(biāo)準(zhǔn)合同:養(yǎng)老服務(wù)業(yè)員工就業(yè)保障協(xié)議范本
- 2025年度賬戶變更補(bǔ)充服務(wù)協(xié)議
- 高性能計(jì)算中心設(shè)備采購(gòu)及安裝合同
- 企業(yè)辦公室裝飾設(shè)計(jì)與施工服務(wù)合同
- 教育培訓(xùn)行業(yè)線上課程開(kāi)發(fā)與運(yùn)營(yíng)計(jì)劃書(shū)
- 電氣設(shè)備安裝工程施工合同新
- 祥康健康快車(chē)王晗老師講座收集驗(yàn)方
- 禮儀與教化 課件-2023-2024學(xué)年高中美術(shù)湘美版(2019)美術(shù)鑒賞
- 新生兒早期基本保健課件
- 采礦學(xué)課程設(shè)計(jì)硯北煤礦新井設(shè)計(jì)全套圖紙
- 第19章-城市設(shè)計(jì)課件
- 人事管理管理制度
- 大型儲(chǔ)罐計(jì)算書(shū)
- 2022-2023學(xué)年廣東省廣州市荔灣區(qū)統(tǒng)考初三第一次??紨?shù)學(xué)試題含解析
- 針對(duì)本項(xiàng)目售后服務(wù)方案
- 2022年桂林電子科技大學(xué)高等學(xué)歷繼續(xù)教育學(xué)士學(xué)位英語(yǔ)考試真
- 新人教版七至九年級(jí)英語(yǔ)單詞表 漢譯英(含音標(biāo))
評(píng)論
0/150
提交評(píng)論