

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> Windows程序設(shè)計</p><p><b> 課程考核報告</b></p><p> 班 級: </p><p> 學(xué) 號: </p><p> 姓 名: </p><p> 得 分
2、: </p><p> 2013年12月 15 日</p><p> 1.設(shè)計目的及要求3</p><p> 1.1設(shè)計目的及問題描述3</p><p><b> 1.2設(shè)計要求3</b></p><p> 1.3軟件、硬件環(huán)境3&l
3、t;/p><p> 2.課程設(shè)計步驟4</p><p> 3. 課程設(shè)計內(nèi)容15</p><p> 3.1 概要設(shè)計15</p><p> 3.1.1 程序總體框架描述15</p><p> 3.1.2程序常用類聲明16</p><p> 3.2主要技術(shù)17</p>
4、;<p> 3.3系統(tǒng)設(shè)計結(jié)果 (界面截圖、操作流程)17</p><p><b> 4.設(shè)計總結(jié)19</b></p><p> 4.1遇到的問題及如何解決19</p><p><b> 4.2體會19</b></p><p><b> 5.源代碼20&l
5、t;/b></p><p> 1.設(shè)計目的及要求 </p><p> 1.1設(shè)計目的及問題描述 </p><p> 利用VC++程序編寫掃雷游戲,以檢測自己一個學(xué)期對MFC學(xué)習(xí)的情況,以及了解自己在MFC學(xué)習(xí)中的不足,鞏固和提高自己對MFC的理解和掌握。掌握C++編程和調(diào)試的基本技能,進一步提高自己的動手能力,和運用C++解決實際問題的能力。</p
6、><p> 本次我做的是一個簡單的掃雷的游戲,包括計算雷數(shù)、時間和掃雷的規(guī)則制定。</p><p><b> 1.2設(shè)計要求 </b></p><p> 找出所有的非地雷的地方。如果在掀開方塊的過程中,不小心翻開(踩到)藏有地雷的方塊,則宣告失敗(游戲結(jié)束),惟有將所有不含地雷的方塊掀開,游戲才算成功。</p><p>
7、;<b> 游戲規(guī)則:</b></p><p> 首先按右鍵開始,可以通過界面快捷鍵(如圖笑臉),也可以通過菜單重新開始。接著左鍵按下的數(shù)字周圍一圈八格中雷的個數(shù)。當(dāng)確定小方框里面是一個雷,則用右鍵按下有一個小旗出現(xiàn)。當(dāng)發(fā)現(xiàn)此處不是一個雷時,就可以再次按下。結(jié)束時只需要按標(biāo)題欄的關(guān)閉鍵或菜單中的文件下的退出。當(dāng)踩到一個雷時,程序結(jié)束。</p><p> 1.3軟
8、件、硬件環(huán)境 </p><p> 軟件:Windows 7操作系統(tǒng),Microsoft Visual C++6.0</p><p> 硬件:Inter(R) Core(TM) i3-2330M CPU @ 2.20GHz</p><p><b> 2.課程設(shè)計步驟 </b></p><p><b>
9、; 添加位圖</b></p><p> 前十二幅是在雷區(qū)的,后四幅是按鈕。</p><p><b> 位圖的ID號:</b></p><p> 按扭位圖:30*30 IDB_ANNIU1、IDB_ANNIU 2、IDB_ANNIU3、 IDB_ANNIU4</p><p> 雷區(qū)位圖:14*1
10、4 ID號按下圖依次為:IDB_BITMAP14。。。。。。IDB_BITMAP25</p><p><b> 添加全局變量</b></p><p><b> public:</b></p><p> int leftnum;//剩下雷數(shù)</p><p> int leinum;//雷數(shù)
11、</p><p> int jieshu;//結(jié)束</p><p> short second;//計時</p><p> int secondstart;//開始計時</p><p> CBitmap m_Bitmap[12];</p><p> CBitmap m_anniu[4];</p>
12、<p> int m_RowCount;//行</p><p> int m_ColCount;//列</p><p> wkh wkh[50][50];//最大雷區(qū)</p><p> void leizero();</p><p> virtual ~CWkhView();</p><p>&
13、lt;b> 畫初始界面</b></p><p><b> (4)添加函數(shù)</b></p><p> 1)void CWkhView::leizero()//掃描,如果是已經(jīng)被按下且雷數(shù)為0,顯示它周圍的八個格,并重</p><p> void CWkhView::leizero()</p><p&g
14、t;<b> {</b></p><p> for(int i=0;i<m_RowCount;i++)</p><p> for(int j=0;j<m_ColCount;j++)</p><p> if(wkh[i][j].shumu==0&&wkh[i][j].weitu==1)</p>&
15、lt;p><b> {</b></p><p> for(int n=i-1;n<i+2;n++)</p><p> for(int m=j-1;m<j+2;m++)</p><p> if(n>=0&&n<25&&m>=0&&m<m_ColCou
16、nt)</p><p> if(wkh[n][m].shumu!=-1&&wkh[n][m].weitu==0)</p><p><b> {</b></p><p> wkh[n][m].weitu=1;</p><p> CRect rect;</p><p> re
17、ct.left=n*15+10;</p><p> rect.right=n*15+25;</p><p> rect.top=m*15+50;</p><p> rect.bottom=m*15+65;</p><p> InvalidateRect(&rect);</p><p><b&g
18、t; }</b></p><p><b> }</b></p><p><b> }</b></p><p> 2)void CWkhView::OnLButtonDown(UINT nFlags, CPoint point) //鼠標(biāo)左鍵按下函數(shù)</p><p> void
19、CWkhView::OnLButtonDown(UINT nFlags, CPoint point) </p><p><b> {</b></p><p> // TODO: Add your message handler code here and/or call default</p><p><b> //獲取指針pd
20、c</b></p><p> CDC *pDC=GetDC();</p><p><b> CDC Dc;</b></p><p> if(Dc.CreateCompatibleDC(pDC)==FALSE)</p><p> AfxMessageBox("Can't create
21、DC");</p><p><b> //顯示按下按鈕</b></p><p> if(point.x>180&&point.x<210&&point.y>10&&point.y<40)</p><p><b> {</b></
22、p><p> Dc.SelectObject(m_anniu[3]);</p><p> pDC->BitBlt(180,10,160,160,&Dc,0,0,SRCCOPY);</p><p><b> }</b></p><p> if((point.x>=10)&&(po
23、int.x<=385)&&(point.y>=50)&&(point.y<=290))</p><p><b> {</b></p><p> if(jieshu==1)</p><p><b> return;</b></p><p>
24、<b> //顯示窗口按鈕</b></p><p> Dc.SelectObject(m_anniu[1]);</p><p> pDC->BitBlt(180,10,160,160,&Dc,0,0,SRCCOPY); </p><p> secondstart=1;</p><p> in
25、t a=(point.x-10)/15;</p><p> int b=(point.y-50)/15;</p><p> if(wkh[a][b].weitu==0||wkh[a][b].weitu==3)</p><p><b> {</b></p><p> if(wkh[a][b].shumu==-1)&
26、lt;/p><p><b> {</b></p><p> jieshu=1; </p><p> KillTimer(1);</p><p> Invalidate();</p><p> MessageBox("你失敗了");</p><p>
27、;<b> }</b></p><p><b> else </b></p><p><b> {</b></p><p> wkh[a][b].weitu=1;</p><p> CRect rect;</p><p> rect.left
28、=a*15+10;</p><p> rect.right=a*15+25;</p><p> rect.top=b*15+50;</p><p> rect.bottom=b*15+65;</p><p> InvalidateRect(&rect);</p><p><b> }<
29、;/b></p><p><b> }</b></p><p><b> }</b></p><p> CView::OnLButtonDown(nFlags, point);</p><p><b> }</b></p><p> 3)
30、void CWkhView::OnLButtonUp(UINT nFlags, CPoint point) //鼠標(biāo)左鍵松開</p><p> void CWkhView::OnLButtonUp(UINT nFlags, CPoint point) </p><p><b> {</b></p><p> // TODO: Add yo
31、ur message handler code here and/or call default</p><p> CDC *pDC=GetDC();</p><p><b> CDC Dc;</b></p><p> if(Dc.CreateCompatibleDC(pDC)==FALSE)</p><p>
32、AfxMessageBox("Can't create DC");</p><p><b> //顯示按鈕</b></p><p> Dc.SelectObject(m_anniu[0]);</p><p> pDC->BitBlt(180,10,160,160,&Dc,0,0,SRCCOPY)
33、;</p><p> if(jieshu==1)</p><p><b> {</b></p><p> Dc.SelectObject(m_anniu[2]);</p><p> pDC->BitBlt(180,10,160,160,&Dc,0,0,SRCCOPY);</p><
34、;p><b> }</b></p><p> if(point.x>180&&point.x<210&&point.y>10&&point.y<40)</p><p> OnStart();</p><p> CView::OnLButtonUp(nFlag
35、s, point);</p><p><b> }</b></p><p> 4)void CWkhView::OnRButtonDown(UINT nFlags, CPoint point) //鼠標(biāo)右鍵按下</p><p> void CWkhView::OnRButtonDown(UINT nFlags, CPoint point)
36、 </p><p><b> {</b></p><p> // TODO: Add your message handler code here and/or call default</p><p> if(jieshu==1)</p><p><b> return;</b></
37、p><p> if((point.x>=10)&&(point.x<=385)&&(point.y>=50)&&(point.y<=290))</p><p><b> {</b></p><p> int a=(point.x-10)/15;</p>
38、<p> int b=(point.y-50)/15;</p><p> if(wkh[a][b].weitu==0||wkh[a][b].weitu==3)</p><p><b> {</b></p><p> wkh[a][b].weitu=2;</p><p> leftnum--;
39、</p><p><b> }</b></p><p><b> else</b></p><p> if(wkh[a][b].weitu==2)</p><p><b> {</b></p><p> wkh[a][b].weitu=3;&l
40、t;/p><p> leftnum++;</p><p><b> }</b></p><p><b> //重畫剩下雷數(shù)</b></p><p> CRect rect2;</p><p> rect2.left=20;</p><p> r
41、ect2.right=70;</p><p> rect2.top=10;</p><p> rect2.bottom=40;</p><p> InvalidateRect(&rect2);</p><p><b> //重畫打擊格子</b></p><p> CRect
42、 rect;</p><p> rect.left=a*15+10;</p><p> rect.right=a*15+25;</p><p> rect.top=b*15+50;</p><p> rect.bottom=b*15+65;</p><p> InvalidateRect(&rect)
43、;</p><p><b> }</b></p><p> CView::OnRButtonDown(nFlags, point);</p><p><b> }</b></p><p> 5)void CWkhView::OnStart() //計時函數(shù)</p><
44、p> void CWkhView::OnStart() </p><p><b> {</b></p><p> SetTimer(1,50,NULL);</p><p> // TODO: Add your command handler code here</p><p> second=0;//計時
45、</p><p> secondstart=0;//1時開始計時</p><p><b> //num=0;</b></p><p> leftnum=leinum;//剩余雷數(shù)</p><p> jieshu=0;//jieshu=1時停止</p><p><b> int
46、 aa=0;</b></p><p><b> //初始化0</b></p><p> for(int i=0;i<m_RowCount;i++)</p><p><b> {</b></p><p> for(int j=0;j<m_ColCount;j++)<
47、;/p><p><b> {</b></p><p> wkh[i][j].shumu=0;</p><p> wkh[i][j].weitu=0;</p><p><b> }</b></p><p><b> }</b></p>
48、<p><b> //設(shè)置40個雷</b></p><p><b> do</b></p><p><b> {</b></p><p> int k=rand()%m_RowCount;</p><p> int l=rand()%m_ColCount;&
49、lt;/p><p> if(wkh[k][l].shumu!=-1)</p><p><b> {</b></p><p> wkh[k][l].shumu=-1; </p><p><b> aa++; </b></p><p><b> }</b&g
50、t;</p><p> }while(aa!=leinum); </p><p><b> //給方格賦值</b></p><p> for(int a=0;a<m_RowCount;a++)</p><p> for(int b=0;b<m_ColCount;b++)</p>&l
51、t;p> if(wkh[a][b].shumu==0)</p><p><b> {</b></p><p> for(int c=a-1;c<a+2;c++)</p><p> for(int d=b-1;d<b+2;d++)</p><p> if(c>=0&&c&l
52、t;m_RowCount&&d>=0&&d<m_ColCount)</p><p> if(wkh[c][d].shumu==-1)</p><p> wkh[a][b].shumu++;</p><p><b> }</b></p><p> Invalidate
53、(); </p><p><b> }</b></p><p> 6)void CWkhView::OnTimer(UINT nIDEvent) //結(jié)束游戲函數(shù)</p><p> void CWkhView::OnTimer(UINT nIDEvent) </p><p><b> {</b&g
54、t;</p><p> // TODO: Add your message handler code here and/or call default</p><p><b> //結(jié)束,返回</b></p><p> if(jieshu==1)</p><p><b> return;</b&g
55、t;</p><p> //顯示個數(shù)為0的方格</p><p> leizero();</p><p><b> //計時</b></p><p> if(secondstart>0)</p><p> secondstart++;</p><p> if
56、(secondstart==20)</p><p><b> {</b></p><p> secondstart=1;</p><p> second++;</p><p><b> //重畫時間</b></p><p> CRect rect3;</p&
57、gt;<p> rect3.left=325;</p><p> rect3.right=375;</p><p> rect3.top=10;</p><p> rect3.bottom=40;</p><p> InvalidateRect(&rect3);</p><p><
58、;b> }</b></p><p> CView::OnTimer(nIDEvent);</p><p><b> }</b></p><p> void CWkhView::OnDraw(CDC* pDC)//框架設(shè)置</p><p> void CWkhView::OnDraw(CDC*
59、pDC)</p><p><b> {</b></p><p> CWkhDoc* pDoc = GetDocument();</p><p> ASSERT_VALID(pDoc);</p><p> // TODO: add draw code for native data here</p>
60、<p><b> //畫背景</b></p><p> CBrush mybrush1;</p><p> mybrush1.CreateSolidBrush(RGB(192,192,192));</p><p> CRect myrect1(0,0,1200,800);</p><p> pDC-&
61、gt;FillRect(myrect1,&mybrush1);</p><p><b> //畫黑框</b></p><p> CBrush mybrush;</p><p> mybrush.CreateSolidBrush(RGB(0,0,0));</p><p> CRect myrect(20,1
62、0,70,40);</p><p> pDC->FillRect(myrect,&mybrush);</p><p> CRect myrect2(325,10,375,40);</p><p> pDC->FillRect(myrect2,&mybrush);</p><p> CPen mypen;&l
63、t;/p><p> CPen*myoldPen;</p><p> mypen.CreatePen(PS_SOLID,2,RGB(255,255,255));</p><p> myoldPen=pDC->SelectObject(&mypen);</p><p><b> //畫黑框的白線</b>&l
64、t;/p><p> pDC->MoveTo(20,40);</p><p> pDC->LineTo(70,40);</p><p> pDC->LineTo(70,10);</p><p> pDC->MoveTo(325,40);</p><p> pDC->LineTo(375
65、,40);</p><p> pDC->LineTo(375,10);</p><p><b> //畫雷區(qū)邊線</b></p><p> for(int i=0;i<m_RowCount;i++)</p><p> for(int j=0;j<m_ColCount;j++)</p>
66、<p><b> {</b></p><p> pDC->MoveTo(10+i*15,50+j*15+14);</p><p> pDC->LineTo(10+i*15,50+j*15);</p><p> pDC->LineTo(10+i*15+14,50+j*15);</p><
67、;p><b> }</b></p><p> pDC->SelectObject(myoldPen);</p><p> CPen mypen2;</p><p> CPen*myoldPen2;</p><p> mypen2.CreatePen(PS_SOLID,1,RGB(0,0,0));&l
68、t;/p><p> myoldPen2=pDC->SelectObject(&mypen2);</p><p> for(int ii=0;ii<m_RowCount;ii++)</p><p> for(int jj=0;jj<m_ColCount;jj++)</p><p><b> {</b
69、></p><p> pDC->MoveTo(10+ii*15,50+jj*15+14);</p><p> pDC->LineTo(10+ii*15+14,50+jj*15+14);</p><p> pDC->LineTo(10+ii*15+14,50+jj*15);</p><p><b>
70、}</b></p><p> pDC->SelectObject(myoldPen2);</p><p><b> CDC Dc;</b></p><p> if(Dc.CreateCompatibleDC(pDC)==FALSE)</p><p> AfxMessageBox("Ca
71、n't create DC");</p><p><b> //顯示按鈕</b></p><p> Dc.SelectObject(m_anniu[0]);</p><p> pDC->BitBlt(180,10,160,160,&Dc,0,0,SRCCOPY);</p><p>
72、 //判斷顯示什么位圖</p><p> //weitu=1已按下的數(shù)字區(qū)</p><p> //weitu=2顯示旗</p><p> //weitu=3顯示問號</p><p> for(int a=0;a<m_RowCount;a++)</p><p> for(int b=0;b<m_C
73、olCount;b++)</p><p><b> {</b></p><p> if(wkh[a][b].weitu==1)</p><p><b> {</b></p><p> Dc.SelectObject(m_Bitmap[wkh[a][b].shumu]);</p>
74、<p> pDC->BitBlt(a*15+10,b*15+50,160,160,&Dc,0,0,SRCCOPY);</p><p><b> }</b></p><p> if(wkh[a][b].weitu==2)</p><p><b> {</b></p><p
75、> Dc.SelectObject(m_Bitmap[9]);</p><p> pDC->BitBlt(a*15+10,b*15+50,160,160,&Dc,0,0,SRCCOPY);</p><p><b> }</b></p><p> if(wkh[a][b].weitu==3)</p>&l
76、t;p><b> {</b></p><p> Dc.SelectObject(m_Bitmap[10]);</p><p> pDC->BitBlt(a*15+10,b*15+50,160,160,&Dc,0,0,SRCCOPY);</p><p><b> }</b></p>
77、<p><b> //結(jié)束</b></p><p> if(jieshu==1&&wkh[a][b].shumu==-1)</p><p><b> {</b></p><p> Dc.SelectObject(m_Bitmap[11]);</p><p> pD
78、C->BitBlt(a*15+10,b*15+50,160,160,&Dc,0,0,SRCCOPY);</p><p> Dc.SelectObject(m_anniu[3]);</p><p> pDC->BitBlt(180,10,160,160,&Dc,0,0,SRCCOPY);</p><p><b> }<
79、/b></p><p><b> }</b></p><p> //顯示黑框里的數(shù)字</p><p> int nOldDC=pDC->SaveDC();</p><p> pDC->SetTextColor(RGB(255,0,0));</p><p> pDC-&g
80、t;SetBkColor(RGB(0,0,0));</p><p> CFont font; </p><p> if(0==font.CreatePointFont(160,"Comic Sans MS"))</p><p><b> {</b></p><p&
81、gt; AfxMessageBox("Can't Create Font");</p><p><b> }</b></p><p> pDC->SelectObject(&font);</p><p> CString str; </p><p> if(leftn
82、um<10) </p><p> str.Format("00%d",leftnum);</p><p><b> else</b></p><p> str.Format("0%d",leftnum);</p><p> pDC->TextOut(2
83、5,10,str);</p><p> if(second<10)</p><p> str.Format("00%d",second);</p><p> else if(second<100)</p><p> str.Format("0%d" ,second);</p&g
84、t;<p><b> else</b></p><p> str.Format("%d" ,second);</p><p> pDC->TextOut(330,10,str);</p><p> pDC->RestoreDC(nOldDC);</p><p> /
85、/////////////////////////////////////////////</p><p><b> }</b></p><p><b> (5)菜單修改</b></p><p> 3. 課程設(shè)計內(nèi)容 </p><p><b> 3.1 概要設(shè)計 </b>
86、;</p><p> 游戲的操作方面主要以鼠標(biāo)為主,當(dāng)鼠標(biāo)指針對準(zhǔn)未翻開的方塊按下左鍵時即表示翻開方塊,當(dāng)鼠標(biāo)指針對準(zhǔn)未翻開的方塊按下右鍵時即表示標(biāo)示或疑示地雷,反復(fù)按下右鍵則方塊會以未標(biāo)示→標(biāo)示→疑似三者關(guān)系不斷循環(huán)。游戲者可以通過地雷區(qū)內(nèi)的數(shù)字提示了解以數(shù)字為中心的其周邊八個方格內(nèi)所含的地雷數(shù),假若翻開的方塊顯示數(shù)字“1”,則表示以其為中心的周邊方塊內(nèi)藏有1個地雷。</p><p>
87、 當(dāng)按下的方塊不是地雷,且周邊八個方塊也都沒有地雷時,方塊會以被翻開方塊的八個方向?qū)⒖瞻追綁K翻開。</p><p> 3.1.1 程序總體框架描述 </p><p> 3.1.2程序常用類聲明</p><p><b> 定義新類:</b></p><p> 對于雷,我們是單獨定義一個類,這樣有利于程序的操作。&
88、lt;/p><p><b> class wkh</b></p><p><b> {</b></p><p><b> public:</b></p><p><b> //顯示哪一個位圖</b></p><p> int
89、weitu;</p><p> //這個位置相應(yīng)的值</p><p> int shumu;</p><p><b> };</b></p><p><b> 視圖類變量: </b></p><p> 接著是在View類添加變量和函數(shù):</p><
90、;p><b> //剩下雷數(shù)</b></p><p> int leftnum; </p><p><b> //雷數(shù)</b></p><p> int leinum; </p><p><b> //結(jié)束</b></p><p>
91、 int jieshu;</p><p><b> //計時</b></p><p> short second; </p><p><b> //開始計時</b></p><p> int secondstart; </p><p><b> //位圖數(shù)
92、組</b></p><p> CBitmap m_Bitmap[12];</p><p><b> //按扭位圖數(shù)組</b></p><p> CBitmap m_anniu[4];</p><p><b> //雷區(qū)行數(shù)</b></p><p> in
93、t m_RowCount; </p><p><b> //雷區(qū)列數(shù)</b></p><p> int m_ColCount; </p><p><b> //最大雷區(qū)</b></p><p> wkh lei[50][50]; </p><p><b>
94、 3.2主要技術(shù) </b></p><p><b> 1.圖形的設(shè)置</b></p><p><b> 2.消息處理函數(shù);</b></p><p><b> 3.視圖框架設(shè)置;</b></p><p><b> 4.掃雷游戲算法。</b>
95、;</p><p><b> 5.菜單的設(shè)置。</b></p><p> 3.3系統(tǒng)設(shè)計結(jié)果 (界面截圖、操作流程)</p><p><b> 1.界面截圖:</b></p><p><b> 操作流程圖</b></p><p><b>
96、; 4.設(shè)計總結(jié)</b></p><p> 4.1遇到的問題及如何解決</p><p> 隨著掃雷游戲的開發(fā)完成,本游戲中預(yù)期的主要功能也基本實現(xiàn)。本系統(tǒng)以Visual C++ 6.0作為前臺開發(fā)工具,Visual C++ 6.0以簡單、易用等優(yōu)點成為開發(fā)本系統(tǒng)的首選工具。本論文闡述了掃雷游戲的分析與設(shè)計的全過程,并在論文中相應(yīng)的位置插入了圖片、流程圖以及一些具有技巧性的
97、程序代碼,更加清晰的描述了該游戲是如何實現(xiàn)的。</p><p> 掃雷游戲是一款益智類游戲,該游戲與那些網(wǎng)絡(luò)游戲和3D游戲相比,它有編寫簡單容易上手等特點,非常適合人們在完成工作的時候適當(dāng)?shù)膴蕵芬蟆_@些小游戲大都是以益智和娛樂為目的,不僅給緊張工作的人們以放松,還可以讓人們的大腦得到開發(fā)。</p><p> 由于我學(xué)習(xí)Visual C++ 6.0和MFC的時間比較短,其中的很多知識
98、還沒有了解和掌握,當(dāng)然出現(xiàn)了很多錯誤,</p><p> 在設(shè)計過程中出現(xiàn)鼠標(biāo)不響應(yīng)操作的現(xiàn)象,這是因為定義鼠標(biāo)函數(shù)時出現(xiàn)了錯誤;</p><p> 在設(shè)計過程中對位圖的設(shè)置不夠了解,總是不能調(diào)用位圖,通過百度,才知道缺少了一部分代碼;</p><p> 對于分號、引號的符號出現(xiàn)了不少的錯誤,主要是中英文切換時沒注意,導(dǎo)致編譯出錯;</p>&l
99、t;p> 完成程序之后,對程序進行編譯,系統(tǒng)總是提示鏈接出錯,經(jīng)過仔細(xì)檢查沒有找到語句或定義錯誤,后來發(fā)現(xiàn)是電腦問題,我在任務(wù)管理器中結(jié)束wkh.exe。再次鏈接,錯誤就消除了。</p><p><b> 4.2體會</b></p><p> 在掃雷游戲中有些功能還不夠完善,例如在掃雷游戲中不能實現(xiàn)游戲難度的選擇和游戲的保存。希望在以后的工作和學(xué)習(xí)中不斷的
100、充實自己的知識結(jié)構(gòu),把掃雷游戲的功能進一步完善,使它成為一個更具有實用價值的游戲軟件,同時也懇請老師給予批評指正。</p><p><b> 5.源代碼</b></p><p> // MainFrm.cpp : implementation of the CMainFrame class</p><p><b> //<
101、/b></p><p> #include "stdafx.h"</p><p> #include "wkh.h"</p><p> #include "MainFrm.h"</p><p> #ifdef _DEBUG</p><p> #
102、define new DEBUG_NEW</p><p> #undef THIS_FILE</p><p> static char THIS_FILE[] = __FILE__;</p><p><b> #endif</b></p><p> ////////////////////////////////
103、/////////////////////////////////////////////</p><p> // CMainFrame</p><p> IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)</p><p> BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)</p>
104、<p> //{{AFX_MSG_MAP(CMainFrame)</p><p> ON_WM_CREATE()</p><p> //}}AFX_MSG_MAP</p><p> END_MESSAGE_MAP()</p><p> static UINT indicators[] =</p><p
105、><b> {</b></p><p> ID_SEPARATOR, // status line indicator</p><p> ID_INDICATOR_CAPS,</p><p> ID_INDICATOR_NUM,</p><p> ID_INDICATOR_SCRL,&
106、lt;/p><p><b> };</b></p><p> /////////////////////////////////////////////////////////////////////////////</p><p> // CMainFrame construction/destruction</p><
107、p> CMainFrame::CMainFrame()</p><p><b> {</b></p><p> // TODO: add member initialization code here</p><p><b> }</b></p><p> CMainFrame::~
108、CMainFrame()</p><p><b> {</b></p><p><b> }</b></p><p> int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)</p><p><b> {</b>&
109、lt;/p><p> if (CFrameWnd::OnCreate(lpCreateStruct) == -1)</p><p> return -1;</p><p> /*if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP</p>&l
110、t;p> | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||</p><p> !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))</p><p><b> {</b></p><p> TRACE0("F
111、ailed to create toolbar\n");</p><p> return -1; // fail to create</p><p><b> }</b></p><p> if (!m_wndStatusBar.Create(this) ||</p><p> !m_wndS
112、tatusBar.SetIndicators(indicators,</p><p> sizeof(indicators)/sizeof(UINT)))</p><p><b> {</b></p><p> TRACE0("Failed to create status bar\n");</p>&l
113、t;p> return -1; // fail to create</p><p><b> }</b></p><p> // TODO: Delete these three lines if you don't want the toolbar to</p><p> // be dockable<
114、/p><p> m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);</p><p> EnableDocking(CBRS_ALIGN_ANY);</p><p> DockControlBar(&m_wndToolBar);</p><p> */HICON hicon;</p>
115、<p> hicon=AfxGetApp()->LoadIcon(IDI_WKH);</p><p> SetIcon(hicon,TRUE);</p><p><b> return 0;</b></p><p><b> }</b></p><p> BOOL CM
116、ainFrame::PreCreateWindow(CREATESTRUCT& cs)</p><p><b> {</b></p><p> if( !CFrameWnd::PreCreateWindow(cs) )</p><p> return FALSE;</p><p> // TODO: Mo
117、dify the Window class or styles here by modifying</p><p> // the CREATESTRUCT cs</p><p> cs.style=WS_SYSMENU;//</p><p> cs.dwExStyle=cs.dwExStyle|WS_EX_TOPMOST;//</p>&l
118、t;p> cs.style=WS_SYSMENU|WS_OVERLAPPED|WS_MINIMIZEBOX;//; </p><p> //設(shè)置窗口大?。?00*340</p><p> cs.cx=400;</p><p> cs.cy=340; </p><p> return TRUE;</p><
119、p><b> }</b></p><p> /////////////////////////////////////////////////////////////////////////////</p><p> // CMainFrame diagnostics</p><p> #ifdef _DEBUG</p>
120、;<p> void CMainFrame::AssertValid() const</p><p><b> {</b></p><p> CFrameWnd::AssertValid();</p><p><b> }</b></p><p> void CMainFra
121、me::Dump(CDumpContext& dc) const</p><p><b> {</b></p><p> CFrameWnd::Dump(dc);</p><p><b> }</b></p><p> #endif //_DEBUG</p><p
122、> /////////////////////////////////////////////////////////////////////////////</p><p> // CMainFrame message handlers</p><p> // wkhView.h : interface of the CWkhView class</p><
123、;p><b> //</b></p><p> /////////////////////////////////////////////////////////////////////////////</p><p> #if !defined(AFX_WKHVIEW_H__A35B457D_4DC0_4B5B_A614_EAF8D78165BF__IN
124、CLUDED_)</p><p> #define AFX_WKHVIEW_H__A35B457D_4DC0_4B5B_A614_EAF8D78165BF__INCLUDED_</p><p> #if _MSC_VER > 1000</p><p> #pragma once</p><p> #endif // _MSC_V
125、ER > 1000</p><p><b> class wkh</b></p><p><b> {</b></p><p><b> public:</b></p><p> int weitu;</p><p> int shumu
126、;</p><p><b> };</b></p><p> class CWkhView : public CView</p><p><b> {</b></p><p> protected: // create from serialization only</p>&
127、lt;p> CWkhView();</p><p> DECLARE_DYNCREATE(CWkhView)</p><p> // Attributes</p><p><b> public:</b></p><p> CWkhDoc* GetDocument();</p><p&
128、gt; // Operations</p><p><b> public:</b></p><p> // Overrides</p><p> // ClassWizard generated virtual function overrides</p><p> //{{AFX_VIRTUAL(CWkhV
129、iew)</p><p><b> public:</b></p><p> virtual void OnDraw(CDC* pDC); // overridden to draw this view</p><p> virtual BOOL PreCreateWindow(CREATESTRUCT& cs);</p&
130、gt;<p> protected:</p><p> virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);</p><p> virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);</p><p> virtual void OnEn
131、dPrinting(CDC* pDC, CPrintInfo* pInfo);</p><p> //}}AFX_VIRTUAL</p><p> // Implementation</p><p><b> public:</b></p><p> int leftnum;//剩下雷數(shù)</p>&
132、lt;p> int leinum;//雷數(shù)</p><p> int jieshu;//結(jié)束</p><p> short second;//計時</p><p> int secondstart;//開始計時</p><p> CBitmap m_Bitmap[12];</p><p> CBi
133、tmap m_anniu[4];</p><p> int m_RowCount;//行</p><p> int m_ColCount;//列</p><p> wkh wkh[50][50];//最大雷區(qū)</p><p> void leizero();</p><p> virtual ~CWkhVie
134、w();</p><p> #ifdef _DEBUG</p><p> virtual void AssertValid() const;</p><p> virtual void Dump(CDumpContext& dc) const;</p><p><b> #endif</b></p&
135、gt;<p> protected:</p><p> // Generated message map functions</p><p> protected:</p><p> //{{AFX_MSG(CWkhView)</p><p> afx_msg void OnTimer(UINT nIDEvent);&
136、lt;/p><p> afx_msg void OnRButtonDown(UINT nFlags, CPoint point);</p><p> afx_msg void OnLButtonDown(UINT nFlags, CPoint point);</p><p> afx_msg int OnCreate(LPCREATESTRUCT lpCreate
137、Struct);</p><p> afx_msg void OnStart();</p><p> afx_msg void OnLButtonUp(UINT nFlags, CPoint point);</p><p> //}}AFX_MSG</p><p> DECLARE_MESSAGE_MAP()</p>&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- vc++課程設(shè)計--基于mfc的模擬時鐘
- vc++課程設(shè)計報告--對抗游戲
- vc++課程設(shè)計報告----對抗游戲
- vc++課程設(shè)計實驗報告---對抗游戲
- c程序課程設(shè)計報告(掃雷游戲)
- 掃雷游戲程序設(shè)計課程設(shè)計報告
- vc++課程設(shè)計報告
- vc++課程設(shè)計--聊天室程序設(shè)計
- 掃雷課程設(shè)計--掃雷程序設(shè)計
- vc++軟件課程設(shè)計報告
- java課程設(shè)計-掃雷游戲
- vc++庫函數(shù)課程設(shè)計
- 掃雷游戲課程設(shè)計報告
- java掃雷游戲課程設(shè)計
- 掃雷游戲課程設(shè)計報告
- 掃雷小游戲課程設(shè)計
- vc++課程設(shè)計-- 餐飲管理系統(tǒng)
- vc++課程設(shè)計--工資管理
- vc++網(wǎng)絡(luò)聊天軟件課程設(shè)計
- vc++課程設(shè)計--工資管理
評論
0/150
提交評論