2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  課 程 設(shè) 計(jì)</b></p><p>  掃雷游戲程序設(shè)計(jì) </p><p>  2013 年 11 月 5 日</p><p><b>  課程設(shè)計(jì)任務(wù)書</b></p><p><b>  設(shè)計(jì)任務(wù) </b></p>

2、;<p> ?。?)鼠標(biāo)左擊排雷,右擊插小旗,打問號; </p><p> ?。?)方格里面的數(shù)字表示方格周圍的雷數(shù);</p><p> ?。?)能夠顯示未標(biāo)記雷數(shù)和游戲用時;</p><p> ?。?)雷區(qū)上面的小臉可以變化,顯示微笑,驚訝,痛苦,勝利。在任何情況下單擊小臉可以重新開始游戲; </p><p> ?。?)可進(jìn)行

3、游戲難度的設(shè)定:包括預(yù)定義的難度級別(雷區(qū)行數(shù),列數(shù)和雷數(shù)),和自行定義雷區(qū)行數(shù),列數(shù)和雷數(shù)的功能;</p><p>  (6)排行榜功能,掃雷成功時候,根據(jù)游戲用時更新排行榜。</p><p><b>  二. 具體設(shè)計(jì)</b></p><p><b> ?。ㄒ唬?、設(shè)計(jì)思路</b></p><p>

4、;  掃雷游戲是很經(jīng)典也很有趣的一款游戲,這次的游戲程序設(shè)計(jì)要求設(shè)計(jì)出功能與原游戲相近的一款游戲,首先定義變量和類要畫出游戲方格以及位圖,設(shè)計(jì)游戲等級,等級越高方格越多雷數(shù)也越多;然后設(shè)置隨機(jī)布雷以保證每次重新開始游戲都有不同的雷區(qū)地圖;另外定義鼠標(biāo)左擊掃雷,左擊標(biāo)記周圍埋雷情況,右擊奇數(shù)次排雷偶數(shù)次取消上次排雷,以及掃雷第一次左擊不能掃到雷。</p><p><b> ?。ǘ⒃O(shè)計(jì)表示:</b

5、></p><p><b>  (三)、實(shí)現(xiàn)功能</b></p><p>  1、鼠標(biāo)左擊排雷,右擊插小旗,打問號; </p><p>  2、方格里面的數(shù)字表示方格周圍的雷數(shù);</p><p>  3、能夠顯示未標(biāo)記雷數(shù)和游戲用時;</p><p>  4、雷區(qū)上面的小臉可以變化,顯示微笑

6、,驚訝,痛苦,勝利。在任何情況下單擊小臉可以重新開始游戲; </p><p>  5、可進(jìn)行游戲難度的設(shè)定:包括預(yù)定義的難度級別(雷區(qū)行數(shù),列數(shù)和雷數(shù));</p><p>  6、任何時候開始游戲第一次點(diǎn)擊不會掃到雷。</p><p>  由于時間等原因未完成功能:</p><p>  排行榜和自行定義雷區(qū)行數(shù),列數(shù)和雷數(shù)功能。</p&

7、gt;<p><b> ?。ㄋ模?、詳細(xì)設(shè)計(jì)</b></p><p><b>  1、添加位圖</b></p><p>  前十二幅是在雷區(qū)的,后四幅是按鈕。為了便于加載,必須各自保證其連續(xù)性。分別表示游戲進(jìn)行的狀態(tài)、結(jié)果勝利或觸雷。</p><p>  2、預(yù)設(shè)等級方格數(shù)雷數(shù)變化</p><

8、;p>  void CMywqq20112074View::OnEasy() /////////////////////////////初級</p><p><b>  {</b></p><p>  m_RowCount=10;//行數(shù)10</p><p>  m_ColCount=10;//列數(shù)10</p><p&

9、gt;  leinum=10;</p><p>  realnum=leinum;</p><p>  SetTimer(1,50,NULL);</p><p>  // TODO: Add your command handler code here</p><p>  second=0;//計(jì)時</p><p> 

10、 secondstart=0;//1時開始計(jì)時</p><p><b>  //num=0;</b></p><p>  leftnum=leinum;//剩余雷數(shù)</p><p>  jieshu=0;//jieshu=1時停止</p><p><b>  int aa=0;</b></p

11、><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++)</p><p><

12、b>  {</b></p><p>  lei[i][j].shumu=0;</p><p>  lei[i][j].weitu=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //

13、設(shè)置10個雷</b></p><p>  CMywqq20112074View::OnMiddle() //////////////////////////////////中級</p><p><b>  {</b></p><p>  m_RowCount=15;//行數(shù)15</p><p>  m_Col

14、Count=15;//列數(shù)15</p><p>  leinum=40;</p><p>  realnum=leinum;</p><p>  SetTimer(1,50,NULL);</p><p>  // TODO: Add your command handler code here</p><p>  se

15、cond=0;//計(jì)時</p><p>  secondstart=0;//1時開始計(jì)時</p><p><b>  //num=0;</b></p><p>  leftnum=leinum;//剩余雷數(shù)</p><p>  jieshu=0;//jieshu=1時停止</p><p><

16、;b>  int 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_ColCo

17、unt;j++)</p><p><b>  {</b></p><p>  lei[i][j].shumu=0;</p><p>  lei[i][j].weitu=0;</p><p><b>  }</b></p><p><b>  }</b>&

18、lt;/p><p><b>  //設(shè)置40個雷</b></p><p>  void CMywqq20112074View::OnHard() ///////////////////////////////////////////高級</p><p><b>  {</b></p><p>  m_R

19、owCount=25;//行數(shù)25</p><p>  m_ColCount=16;//列數(shù)16</p><p>  leinum=80;</p><p>  realnum=leinum;</p><p>  SetTimer(1,50,NULL);</p><p>  // TODO: Add your comma

20、nd handler code here</p><p>  second=0;//計(jì)時</p><p>  secondstart=0;//1時開始計(jì)時</p><p><b>  //num=0;</b></p><p>  leftnum=leinum;//剩余雷數(shù)</p><p>  j

21、ieshu=0;//jieshu=1時停止</p><p><b>  int aa=0;</b></p><p><b>  //初始化0</b></p><p>  for(int i=0;i<m_RowCount;i++)</p><p><b>  {</b>&l

22、t;/p><p>  for(int j=0;j<m_ColCount;j++)</p><p><b>  {</b></p><p>  lei[i][j].shumu=0;</p><p>  lei[i][j].weitu=0;</p><p><b>  }</b>

23、;</p><p><b>  }</b></p><p><b>  //設(shè)置80個雷</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  int k=rand()%m_R

24、owCount;</p><p>  int l=rand()%m_ColCount;</p><p>  if(lei[k][l].shumu!=-1)</p><p><b>  {</b></p><p>  lei[k][l].shumu=-1; </p><p><b>  a

25、a++; </b></p><p><b>  }</b></p><p>  }while(aa!=leinum); </p><p>  第一次點(diǎn)擊不會掃到雷</p><p>  if(lei[a][b].weitu==0||lei[a][b].weitu==3)</p><p>

26、<b>  { </b></p><p>  for(;n==0&&lei[a][b].shumu==-1;) //////////////踩到第一個雷</p><p><b>  {</b></p><p><b>  int aa=0;</b></p>&l

27、t;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++)</p><p><b>  {

28、</b></p><p>  lei[i][j].shumu=0;</p><p>  lei[i][j].weitu=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  do</b&g

29、t;</p><p><b>  {</b></p><p>  int k=rand()%m_RowCount;</p><p>  int l=rand()%m_ColCount;</p><p>  if(lei[k][l].shumu!=-1)</p><p><b>  {&l

30、t;/b></p><p>  lei[k][l].shumu=-1; </p><p><b>  aa++; </b></p><p><b>  }</b></p><p>  }while(aa!=leinum); </p><p><b>  /

31、/給方格賦值</b></p><p>  for(int a=0;a<m_RowCount;a++)</p><p>  for(int b=0;b<m_ColCount;b++)</p><p>  if(lei[a][b].shumu==0)</p><p><b>  {</b></p

32、><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<m_RowCount&&d>=0&&d<m_ColCount)if(lei[c][d].shumu==

33、-1)</p><p>  lei[a][b].shumu++;</p><p><b>  }</b></p><p><b>  }</b></p><p>  鼠標(biāo)右擊插小旗,打問號</p><p>  第一次用右鍵單擊某個區(qū)域時,該區(qū)域上插上一面小紅旗,此時

34、單擊左鍵沒有任何變化,第二次用右鍵單擊時恢復(fù)原狀。</p><p>  //判斷顯示什么位圖</p><p>  //weitu=1已按下的數(shù)字區(qū)</p><p>  //weitu=2顯示旗</p><p>  //weitu=3顯示問號</p><p>  for(int a=0;a<m_RowCount;a

35、++)</p><p>  for(int b=0;b<m_ColCount;b++)</p><p>  {if(lei[a][b].weitu==1)</p><p><b>  {</b></p><p>  Dc.SelectObject(m_Bitmap[lei[a][b].shumu]);p

36、DC->BitBlt(a*15+10,b*15+50,160,160,&Dc,0,0,SRCCOPY);</p><p>  }if(lei[a][b].weitu==2)</p><p>  {Dc.SelectObject(m_Bitmap[9]);</p><p>  pDC->BitBlt(a*15+10,b*15+50,16

37、0,160,&Dc,0,0,SRCCOPY);</p><p>  }if(lei[a][b].weitu==3)</p><p>  {Dc.SelectObject(m_Bitmap[10]);pDC->BitBlt(a*15+10,b*15+50,160,160,&Dc,0,0,SRCCOPY);</p><p>&

38、lt;b>  }</b></p><p><b>  //結(jié)束</b></p><p><b>  、調(diào)試及測試</b></p><p>  經(jīng)運(yùn)行測試之后,程序出現(xiàn)的問題有:</p><p>  第一次打開游戲時有時會出現(xiàn)不能計(jì)時的情況</p><p> 

39、 2、勝利的表情不能正常顯示</p><p><b>  、使用說明</b></p><p>  A、 鼠標(biāo)左擊排雷,右擊插小旗,打問號; </p><p>  B、 方格里面的數(shù)字表示方格周圍的雷數(shù);</p><p>  C、 在任何情況下單擊小臉可以重新開始游戲; </p><p>  

40、D、 可進(jìn)行游戲難度的設(shè)定:包括預(yù)定義的難度級別(雷區(qū)行數(shù),列數(shù)和雷數(shù)),和自 行定義雷區(qū)行數(shù),列數(shù)和雷數(shù)的功能;</p><p>  E、 掃雷成功時候,游戲用時更新排行榜</p><p><b> ?。ㄆ撸⑦\(yùn)行實(shí)例</b></p><p>  鼠標(biāo)左擊排雷,可翻開連片空格,方格周圍數(shù)字表示周圍埋雷數(shù)目,右鍵單擊一

41、次插小紅旗,雙擊顯示問號表示雷數(shù)情況未知,同時顯示剩余雷數(shù)以及游戲用時 </p><p>  可從預(yù)設(shè)難度等級中選擇游戲難度,游戲方格數(shù)和雷數(shù)都有相應(yīng)增加</p><p>  ←初級 </p><p><b>  ←中級</b

42、></p><p><b>  ←高級</b></p><p>  觸雷時現(xiàn)出痛苦的表情,游戲結(jié)束</p><p>  將雷全部排出,勝利的吶喊?。?lt;/p><p><b>  、設(shè)計(jì)小結(jié)</b></p><p>  這個短短幾天的C++課程設(shè)計(jì)雖然為期不長,卻讓我們從

43、實(shí)踐中學(xué)到了更多的C++編程知識,一開始看到示例中讓人眼花繚亂的程序代碼讓人很有放棄的沖動,可是最后還是堅(jiān)持下來將代碼讀完并自己琢磨出一套代碼出來,在這中間也遇到不少的困難,一開始不知道位圖是怎么做的,那些看起來可愛的表情做起來卻并不簡單,還要在代碼里將這些表情的二維坐標(biāo)對應(yīng)起來,過程細(xì)致而繁雜,最終在與同學(xué)討論之后成功做出,大家還一起開玩笑涂鴉自定義表情,輕松的話語沖淡了寫代碼時的煩躁。還有在設(shè)定難度時要重新畫方格,右鍵單擊時出現(xiàn)不同

44、的狀態(tài),第一次點(diǎn)擊的時候不能掃到雷等等難關(guān),都被堅(jiān)持不懈的毅力和耐力一一克服。直到最后看到各種功能在自己手下實(shí)現(xiàn),這時的成就感和喜悅是之前單獨(dú)實(shí)現(xiàn)一個個小功能所不能比的,不由更加感嘆程序編程的奇妙,讓我對程序員有了新的認(rèn)識,也下定決心努力向他們看齊!!</p><p><b>  附錄:源程序</b></p><p>  // wqq20112074View.cpp

45、: implementation of the CMywqq20112074View class</p><p><b>  //</b></p><p>  #include "stdafx.h"</p><p>  #include "wqq20112074.h"</p><p&g

46、t;  #include "wqq20112074Doc.h"</p><p>  #include "wqq20112074View.h"</p><p>  #ifdef _DEBUG</p><p>  #define new DEBUG_NEW</p><p>  #undef THIS_FIL

47、E</p><p>  static char THIS_FILE[] = __FILE__;</p><p><b>  #endif</b></p><p>  /////////////////////////////////////////////////////////////////////////////</p>&

48、lt;p>  // CMywqq20112074View</p><p>  IMPLEMENT_DYNCREATE(CMywqq20112074View, CView)</p><p>  BEGIN_MESSAGE_MAP(CMywqq20112074View, CView)</p><p>  //{{AFX_MSG_MAP(CMywqq20112074

49、View)</p><p>  ON_WM_TIMER()</p><p>  ON_WM_LBUTTONDOWN()</p><p>  ON_WM_CREATE()</p><p>  ON_COMMAND(ID_START, OnStart)</p><p>  ON_WM_LBUTTONUP()</p&g

50、t;<p>  ON_WM_RBUTTONDOWN()</p><p>  ON_COMMAND(ID_EASY, OnEasy)</p><p>  ON_COMMAND(ID_MIDDLE, OnMiddle)</p><p>  ON_COMMAND(ID_HARD, OnHard)</p><p>  //}}AFX_M

51、SG_MAP</p><p>  // Standard printing commands</p><p>  ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)</p><p>  ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)</p><p&g

52、t;  ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)</p><p>  END_MESSAGE_MAP()</p><p>  /////////////////////////////////////////////////////////////////////////////</p><

53、p>  // CMywqq20112074View construction/destruction</p><p>  CMywqq20112074View::CMywqq20112074View()</p><p><b>  {</b></p><p>  // TODO: add construction code here<

54、;/p><p>  for(int ii=0;ii<16;ii++)</p><p>  m_Bitmap[ii].LoadBitmap(IDB_BITMAP14+ii);</p><p>  for(int jj=0;jj<4;jj++)</p><p>  m_anniu[jj].LoadBitmap(IDB_ANNIU1+jj)

55、;</p><p>  second=0;//計(jì)時</p><p>  secondstart=0;//1時開始計(jì)時</p><p>  m_RowCount=25;//行數(shù)</p><p>  m_ColCount=16;//列數(shù)</p><p><b>  n=0;//格數(shù)</b></p

56、><p><b>  leinum=5;</b></p><p>  realnum=leinum;</p><p>  leftnum=leinum;//剩余雷數(shù)</p><p>  jieshu=0;//jieshu=1時停止</p><p><b>  int aa=0;</b&

57、gt;</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++)</p><

58、p><b>  {</b></p><p>  lei[i][j].shumu=0;</p><p>  lei[i][j].weitu=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><

59、b>  //獲取當(dāng)前時間</b></p><p>  CTime time=GetCurrentTime();</p><p><b>  int s;</b></p><p><b>  //獲取秒數(shù)</b></p><p>  s=time.GetSecond();</p

60、><p><b>  //設(shè)置40個雷</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  //以當(dāng)前秒數(shù)為產(chǎn)生隨機(jī)算法</p><p>  int k=(rand()*s)%m_RowCount;&

61、lt;/p><p>  int l=(rand()*s)%m_ColCount;</p><p>  if(lei[k][l].shumu!=-1)</p><p><b>  {</b></p><p>  lei[k][l].shumu=-1; </p><p><b>  aa++;

62、</b></p><p><b>  }</b></p><p>  }while(aa!=leinum); </p><p>  //給方格賦值,計(jì)算雷數(shù)</p><p>  for(int a=0;a<m_RowCount;a++)</p><p>  for(int b

63、=0;b<m_ColCount;b++)</p><p>  if(lei[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>

64、;<p>  if(c>=0&&c<m_RowCount&&d>=0&&d<m_ColCount)</p><p>  if(lei[c][d].shumu==-1)</p><p>  lei[a][b].shumu++;</p><p><b>  }</b

65、></p><p><b>  }</b></p><p>  CMywqq20112074View::~CMywqq20112074View()</p><p><b>  { </b></p><p><b>  }</b></p><p> 

66、 BOOL CMywqq20112074View::PreCreateWindow(CREATESTRUCT& cs)</p><p><b>  {</b></p><p>  // TODO: Modify the Window class or styles here by modifying</p><p>  // the

67、CREATESTRUCT cs</p><p>  return CView::PreCreateWindow(cs);</p><p><b>  }</b></p><p>  /////////////////////////////////////////////////////////////////////////////</

68、p><p>  // CMywqq20112074View drawing</p><p>  void CMywqq20112074View::OnDraw(CDC* pDC)</p><p><b>  {</b></p><p>  CMywqq20112074Doc* pDoc = GetDocument();<

69、;/p><p>  ASSERT_VALID(pDoc);</p><p>  // TODO: add draw code for native data here</p><p><b>  //畫背景</b></p><p>  CBrush mybrush1;</p><p>  mybrus

70、h1.CreateSolidBrush(RGB(192,192,192));</p><p>  CRect myrect1(0,0,1200,800);</p><p>  pDC->FillRect(myrect1,&mybrush1);</p><p><b>  //畫黑框</b></p><p>

71、  CBrush mybrush;</p><p>  mybrush.CreateSolidBrush(RGB(0,0,0));</p><p>  CRect myrect(20,10,70,40);</p><p>  pDC->FillRect(myrect,&mybrush);</p><p>  CRect myre

72、ct2(325,10,375,40);</p><p>  pDC->FillRect(myrect2,&mybrush);</p><p>  CPen mypen;</p><p>  CPen*myoldPen;</p><p>  mypen.CreatePen(PS_SOLID,2,RGB(255,255,255));

73、</p><p>  myoldPen=pDC->SelectObject(&mypen);</p><p><b>  //畫黑框的白線</b></p><p>  pDC->MoveTo(20,40);</p><p>  pDC->LineTo(70,40);</p><

74、;p>  pDC->LineTo(70,10);</p><p>  pDC->MoveTo(325,40);</p><p>  pDC->LineTo(375,40);</p><p>  pDC->LineTo(375,10);</p><p><b>  //畫雷區(qū)邊線</b><

75、;/p><p>  for(int i=0;i<m_RowCount;i++)</p><p>  for(int j=0;j<m_ColCount;j++)</p><p><b>  {</b></p><p>  pDC->MoveTo(10+i*15,50+j*15+14);</p>

76、<p>  pDC->LineTo(10+i*15,50+j*15);</p><p>  pDC->LineTo(10+i*15+14,50+j*15);</p><p><b>  }</b></p><p>  pDC->SelectObject(myoldPen);</p><p>

77、  CPen mypen2;</p><p>  CPen*myoldPen2;</p><p>  mypen2.CreatePen(PS_SOLID,1,RGB(0,0,0));</p><p>  myoldPen2=pDC->SelectObject(&mypen2);</p><p>  for(int ii=0;ii

78、<m_RowCount;ii++)</p><p>  for(int jj=0;jj<m_ColCount;jj++)</p><p><b>  {</b></p><p>  pDC->MoveTo(10+ii*15,50+jj*15+14);</p><p>  pDC->LineTo(1

79、0+ii*15+14,50+jj*15+14);</p><p>  pDC->LineTo(10+ii*15+14,50+jj*15);</p><p><b>  }</b></p><p>  pDC->SelectObject(myoldPen2);</p><p><b>  CDC D

80、c;</b></p><p>  if(Dc.CreateCompatibleDC(pDC)==FALSE)</p><p>  AfxMessageBox("Can't create DC");</p><p><b>  //顯示按鈕</b></p><p>  Dc.Sel

81、ectObject(m_anniu[0]);</p><p>  pDC->BitBlt(180,10,160,160,&Dc,0,0,SRCCOPY);</p><p>  //判斷顯示什么位圖</p><p>  //weitu=1已按下的數(shù)字區(qū)</p><p>  //weitu=2顯示旗</p><p

82、>  //weitu=3顯示問號</p><p>  for(int a=0;a<m_RowCount;a++)</p><p>  for(int b=0;b<m_ColCount;b++)</p><p><b>  {</b></p><p>  if(lei[a][b].weitu==1)<

83、;/p><p><b>  {</b></p><p>  Dc.SelectObject(m_Bitmap[lei[a][b].shumu]);</p><p>  pDC->BitBlt(a*15+10,b*15+50,160,160,&Dc,0,0,SRCCOPY);</p><p><b> 

84、 }</b></p><p>  if(lei[a][b].weitu==2)</p><p><b>  {</b></p><p>  Dc.SelectObject(m_Bitmap[9]);</p><p>  pDC->BitBlt(a*15+10,b*15+50,160,160,&D

85、c,0,0,SRCCOPY);</p><p><b>  }</b></p><p>  if(lei[a][b].weitu==3)</p><p><b>  {</b></p><p>  Dc.SelectObject(m_Bitmap[10]);</p><p>

86、  pDC->BitBlt(a*15+10,b*15+50,160,160,&Dc,0,0,SRCCOPY);</p><p><b>  }</b></p><p><b>  //結(jié)束</b></p><p>  if(jieshu==1&&lei[a][b].shumu==-1)<

87、/p><p><b>  {</b></p><p>  Dc.SelectObject(m_Bitmap[11]);</p><p>  pDC->BitBlt(a*15+10,b*15+50,160,160,&Dc,0,0,SRCCOPY);</p><p>  Dc.SelectObject(m_anni

88、u[3]);</p><p>  pDC->BitBlt(180,10,160,160,&Dc,0,0,SRCCOPY);</p><p><b>  }</b></p><p><b>  }</b></p><p>  //顯示黑框里的數(shù)字</p><p>

89、  int nOldDC=pDC->SaveDC();</p><p>  pDC->SetTextColor(RGB(255,0,0));</p><p>  pDC->SetBkColor(RGB(0,0,0));</p><p>  CFont font; </p><p>  if

90、(0==font.CreatePointFont(160,"Comic Sans MS"))</p><p><b>  {</b></p><p>  AfxMessageBox("Can't Create Font");</p><p><b>  }</b></p

91、><p>  pDC->SelectObject(&font);</p><p>  CString str; </p><p>  if(leftnum<10) </p><p>  str.Format("00%d",leftnum);</p><p><b>  e

92、lse</b></p><p>  str.Format("0%d",leftnum);</p><p>  pDC->TextOut(25,10,str);</p><p>  if(second<10)</p><p>  str.Format("00%d",sec

93、ond);</p><p>  else if(second<100)</p><p>  str.Format("0%d" ,second);</p><p><b>  else</b></p><p>  str.Format("%d" ,second);</p&

94、gt;<p>  pDC->TextOut(330,10,str);</p><p>  pDC->RestoreDC(nOldDC);</p><p>  //////////////////////////////////////////////</p><p><b>  }</b></p><

95、;p>  /////////////////////////////////////////////////////////////////////////////</p><p>  // CMywqq20112074View printing</p><p>  BOOL CMywqq20112074View::OnPreparePrinting(CPrintInfo* pInf

96、o)</p><p><b>  {</b></p><p>  // default preparation</p><p>  return DoPreparePrinting(pInfo);</p><p><b>  }</b></p><p>  void CMyw

97、qq20112074View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)</p><p><b>  {</b></p><p>  // TODO: add extra initialization before printing</p><p><b>  }<

98、/b></p><p>  void CMywqq20112074View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)</p><p><b>  {</b></p><p>  // TODO: add cleanup after printing</p><

99、;p><b>  }</b></p><p>  /////////////////////////////////////////////////////////////////////////////</p><p>  // CMywqq20112074View diagnostics</p><p>  #ifdef _DEBUG

100、</p><p>  void CMywqq20112074View::AssertValid() const</p><p><b>  {</b></p><p>  CView::AssertValid();</p><p><b>  }</b></p><p>  

101、void CMywqq20112074View::Dump(CDumpContext& dc) const</p><p><b>  {</b></p><p>  CView::Dump(dc);</p><p><b>  }</b></p><p>  CMywqq20112074D

102、oc* CMywqq20112074View::GetDocument() // non-debug version is inline</p><p><b>  {</b></p><p>  ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMywqq20112074Doc)));</p><p&g

103、t;  return (CMywqq20112074Doc*)m_pDocument;</p><p><b>  }</b></p><p>  #endif //_DEBUG</p><p>  /////////////////////////////////////////////////////////////////////////

104、////</p><p>  // CMywqq20112074View message handlers</p><p>  void CMywqq20112074View::OnTimer(UINT nIDEvent) </p><p><b>  {</b></p><p>  // TODO: Add your

105、message handler code here and/or call default</p><p><b>  //結(jié)束,返回</b></p><p>  if(jieshu==1)</p><p><b>  return;</b></p><p>  //顯示個數(shù)為0的方格</p&

106、gt;<p>  leizero();</p><p><b>  //計(jì)時</b></p><p>  if(secondstart>0)</p><p>  secondstart++;</p><p>  if(secondstart==20)</p><p><b

107、>  {</b></p><p>  secondstart=1;</p><p>  second++;</p><p><b>  //重畫時間</b></p><p>  CRect rect3;</p><p>  rect3.left=325;</p>

108、<p>  rect3.right=375;</p><p>  rect3.top=10;</p><p>  rect3.bottom=40;</p><p>  InvalidateRect(&rect3);</p><p><b>  }</b></p><p>  C

109、View::OnTimer(nIDEvent);</p><p><b>  }</b></p><p>  void CMywqq20112074View::OnLButtonDown(UINT nFlags, CPoint point) </p><p><b>  {</b></p><p>

110、  // TODO: Add your message handler code here and/or call default</p><p><b>  //獲取指針pdc</b></p><p>  CDC *pDC=GetDC();</p><p><b>  CDC Dc;</b></p>&l

111、t;p>  if(Dc.CreateCompatibleDC(pDC)==FALSE)</p><p>  AfxMessageBox("Can't create DC");</p><p><b>  //顯示按下按鈕</b></p><p>  if(point.x>180&&poi

112、nt.x<210&&point.y>10&&point.y<40)</p><p><b>  {</b></p><p>  Dc.SelectObject(m_anniu[3]);</p><p>  pDC->BitBlt(180,10,160,160,&Dc,0,0,SRC

113、COPY);</p><p><b>  }</b></p><p>  if((point.x>=10)&&(point.x<=385)&&(point.y>=50)&&(point.y<=290))</p><p><b>  {</b>

114、</p><p>  if(jieshu==1)</p><p><b>  return;</b></p><p><b>  //顯示張口按鈕</b></p><p>  Dc.SelectObject(m_anniu[1]);</p><p>  pDC->Bit

115、Blt(180,10,160,160,&Dc,0,0,SRCCOPY); </p><p>  secondstart=1;</p><p>  int a=(point.x-10)/15;</p><p>  int b=(point.y-50)/15;</p><p>  if(lei[a][b].weitu==0||lei

116、[a][b].weitu==3)</p><p>  { for(;n==0&&lei[a][b].shumu==-1;) //////////////踩到第一個雷</p><p><b>  {</b></p><p><b>  int aa=0;</b></p><p&g

117、t;<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++)</p><p><b>  {</

118、b></p><p>  lei[i][j].shumu=0;</p><p>  lei[i][j].weitu=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  do</b><

119、;/p><p><b>  {</b></p><p>  int k=rand()%m_RowCount;</p><p>  int l=rand()%m_ColCount;</p><p>  if(lei[k][l].shumu!=-1)</p><p><b>  {</b&

120、gt;</p><p>  lei[k][l].shumu=-1; </p><p><b>  aa++; </b></p><p><b>  }</b></p><p>  }while(aa!=leinum); </p><p><b>  //給方格賦

121、值</b></p><p>  for(int a=0;a<m_RowCount;a++)</p><p>  for(int b=0;b<m_ColCount;b++)</p><p>  if(lei[a][b].shumu==0)</p><p><b>  {</b></p>

122、<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<m_RowCount&&d>=0&&d<m_ColCount)</p><p>  if(lei[

123、c][d].shumu==-1)</p><p>  lei[a][b].shumu++;</p><p><b>  }</b></p><p><b>  }</b></p><p>  ///////////////////////////////////如果第一個不是雷接下去部分

124、</p><p>  if(lei[a][b].shumu==-1)</p><p><b>  {</b></p><p>  jieshu=1; </p><p>  KillTimer(1);</p><p>  Invalidate();</p><p><b

125、>  }</b></p><p>  else if(leftnum==0) </p><p><b>  {</b></p><p>  jieshu=2; </p><p>  KillTimer(1);</p><p>  Invalidate();}</p>

126、<p><b>  else </b></p><p><b>  {</b></p><p>  lei[a][b].weitu=1;</p><p>  CRect rect;</p><p>  rect.left=a*15+10;</p><p>  re

127、ct.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>  }</b></p><p>  n++;/

128、//////////////////////////////////////////////n是靜態(tài)變量,每點(diǎn)一次左鍵加1 判斷第一個雷</p><p><b>  int a1=0;</b></p><p>  for(int a=0;a<m_RowCount;a++)</p><p>  for(int b=0;b<m_ColC

129、ount;b++)</p><p><b>  {</b></p><p>  if(lei[a][b].weitu!=1)</p><p><b>  {</b></p><p><b>  a1++;</b></p><p><b> 

130、 }</b></p><p><b>  }</b></p><p>  if(a1==leinum)</p><p><b>  {</b></p><p>  jieshu=2; </p><p>  KillTimer(1);////////////////

131、//////////////////////顯示勝利按鈕(運(yùn)行的時候出錯)</p><p>  Dc.SelectObject(m_anniu[4]);</p><p>  pDC->BitBlt(180,10,160,160,&Dc,0,0,SRCCOPY);</p><p>  for(int a=0;a<m_RowCount;a++)<

132、;/p><p>  for(int b=0;b<m_ColCount;b++)</p><p><b>  {</b></p><p>  if(lei[a][b].shumu==-1)</p><p><b>  {</b></p><p>  lei[a][b].wei

133、tu=2;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  Invalidate();</p><p><b>  }</b></

134、p><p><b>  }</b></p><p>  CView::OnLButtonDown(nFlags, point);</p><p><b>  }</b></p><p>  int CMywqq20112074View::OnCreate(LPCREATESTRUCT lpCreateS

135、truct) </p><p><b>  {</b></p><p>  if (CView::OnCreate(lpCreateStruct) == -1)</p><p>  return -1;</p><p>  // TODO: Add your specialized creation code here&

136、lt;/p><p>  //SetTimer(1,50,NULL);</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  //掃描,如果是已經(jīng)被按下且雷數(shù)為0,顯示它周圍的八個格,并重畫</p><p>  voi

137、d CMywqq20112074View::leizero()</p><p><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(lei[i][j].

138、shumu==0&&lei[i][j].weitu==1)</p><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&&a

139、mp;n<25&&m>=0&&m<m_ColCount)</p><p>  if(lei[n][m].shumu!=-1&&lei[n][m].weitu==0)</p><p><b>  {</b></p><p>  lei[n][m].weitu=1;</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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論