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

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  MFC應(yīng)用開發(fā)技術(shù)</b></p><p><b>  貪食蛇小游戲</b></p><p>  學(xué) 院: </p><p>  專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) </p><p>  班 級(jí): </p

2、><p>  學(xué) 號(hào): </p><p>  學(xué)生姓名: </p><p>  指導(dǎo)教師: </p><p><b>  摘 要</b></p><p>  本設(shè)計(jì)實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的貪食蛇小游戲,該游戲不僅實(shí)現(xiàn)了簡(jiǎn)單的游戲操作

3、功能,還實(shí)現(xiàn)了靈活的運(yùn)作功能,而且具有簡(jiǎn)潔大方的圖文外觀。此設(shè)計(jì)按照軟件工程的方法進(jìn)行,系統(tǒng)具有良好的界面和必要的交互信息,使操作人員能快捷簡(jiǎn)單地進(jìn)行操作,給玩家一個(gè)簡(jiǎn)易有趣的游戲。本系統(tǒng)開發(fā)平臺(tái)為Windows XP,程序設(shè)計(jì)語(yǔ)言采用C++,在程序設(shè)計(jì)中,采用了結(jié)構(gòu)化與面向?qū)ο髢煞N解決問(wèn)題的方法。</p><p>  關(guān)鍵詞:程序設(shè)計(jì);計(jì)算器;MFC;按鈕控件</p><p><b

4、>  目 錄</b></p><p><b>  引 言2</b></p><p>  1. vc++6.0 簡(jiǎn)介</p><p><b>  3</b></p><p>  2 MFC 簡(jiǎn)介3</p><p>  3.需求分析,系統(tǒng)功能……………………

5、………… 4</p><p>  4.游戲要求……………………………………………………………………………………5</p><p>  5. 程序及系統(tǒng)結(jié)構(gòu)設(shè)計(jì)…………………………6</p><p>  6軟件設(shè)計(jì)步驟……………………………………7</p><p>  7. 軟件測(cè)試報(bào)告 …………………………………15</p>&

6、lt;p>  出現(xiàn)的問(wèn)題…………………………………………………………………………………………………………………………15</p><p><b>  結(jié) 論16</b></p><p><b>  參考文獻(xiàn)16</b></p><p><b>  附 錄19</b></p>

7、<p><b>  引 言</b></p><p>  在程序設(shè)計(jì)中,通過(guò)設(shè)計(jì)、編制、調(diào)試一個(gè)模擬計(jì)算器的程序,加深對(duì)語(yǔ)法及語(yǔ)義分析原理的理解,并實(shí)現(xiàn)對(duì)命令語(yǔ)句的靈活應(yīng)用。在程序設(shè)計(jì)中,可以用兩種方法解決問(wèn)題:一是傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)方法,二是更先進(jìn)的面向?qū)ο蟪绦蛟O(shè)計(jì)方法。</p><p>  由于多個(gè)函數(shù)均需要訪問(wèn)某些數(shù)據(jù),這些數(shù)據(jù)常被設(shè)計(jì)為全局變量。而

8、在面向?qū)ο蟪绦蛟O(shè)計(jì)中關(guān)鍵是如何將問(wèn)題域中的實(shí)體(即日常所見(jiàn)的概念)抽取出來(lái),作為C++程序中的類,而屬性與行為作為類的兩類要素通常是必不可少的,甚至還應(yīng)考慮類必須滿足的約束。本課程設(shè)計(jì)主要在運(yùn)算過(guò)程中,如果通過(guò)計(jì)算器來(lái)完成,就會(huì)減少計(jì)算量,該程序即可以在簡(jiǎn)單計(jì)算器鍵面下進(jìn)行簡(jiǎn)單運(yùn)算。</p><p>  1. vc++6.0 簡(jiǎn)介</p><p>  VC++6.0 是 Microsoft

9、 公司推出的一個(gè)基于 Windows 系統(tǒng)平臺(tái)、可視化的 集成開發(fā)環(huán)境,它的源程序按 C++語(yǔ)言的要求編寫,并加入了微軟提供的功能 強(qiáng)大的 MFC(Microsoft Foundation Class)類庫(kù)。MFC 中封裝了大部分 Windows API 函數(shù)和 Windows 控件,它包含的功能涉及到整個(gè) Windows 操作系統(tǒng)。MFC 不僅給用戶提供了 Windows 圖形環(huán)境下應(yīng)用程序的框架, 而且還提供了創(chuàng)建應(yīng) 用程序的組件,

10、這樣,開發(fā)人員不必從頭設(shè)計(jì)創(chuàng)建和管理一個(gè)標(biāo)準(zhǔn) Windows 應(yīng) 用程序所需的程序,而是從一個(gè)比較高的起點(diǎn)編程,故節(jié)省了大量的時(shí)間。另 外,它提供了大量的代碼,指導(dǎo)用戶編程時(shí)實(shí)現(xiàn)某些技術(shù)和功能。因此,使用 VC++提供的高度可視化的應(yīng)用程序開發(fā)工具和 MFC 類庫(kù), 可使應(yīng)用程序開發(fā)變 得簡(jiǎn)單。</p><p><b>  2 MFC 簡(jiǎn)介</b></p><p> 

11、 MFC(Microsoft Foundation Classes) , 是 一 個(gè) 微 軟 公 司 提 供 的 類 庫(kù) ( class libraries) 以 C++類的形式封裝了 Windows 的 API, , 它包含了窗口等許多類的定義。 各種類的集合構(gòu)成了一個(gè)應(yīng)運(yùn)程序的框架結(jié)構(gòu),以減少應(yīng)用程序開發(fā)人員的工作 量。其中包含的類包含大量 Windows 句柄封裝類和很多 Windows 的內(nèi)建控件和組 件的封裝類。 MFC 6.

12、0 版本封裝了大約 200 個(gè)類,其中的一些可以被用戶直接使用。例如 CWnd 類封裝了窗口的功能,包括打印文本、繪制圖形及跟蹤鼠標(biāo)指針的移動(dòng)等; CsplitterWnd 類是從 CWnd 類派生出來(lái)的,繼承了基類或稱父類 CWnd 類的所有特 性,但增加了自己的功能,實(shí)現(xiàn)拆分窗口,使窗口至少可被拆分成兩個(gè)窗口,用戶 可以移動(dòng)兩個(gè)窗口之間的邊框來(lái)改變窗口的大??;CtoolBar 類可以定義工具欄等。 MFC 命名的慣例是類的名字通常是

13、由“C”打頭;成員變量使用前綴“m_” , 接著使用一個(gè)字母來(lái)指明數(shù)據(jù)類型,然后是變量的名稱;所有的單詞用大寫字母開 頭。</p><p>  3.需求分析,系統(tǒng)功能</p><p><b>  貪吃蛇游戲需求分析</b></p><p>  貪吃蛇游戲作為一款經(jīng)典小游戲,版本多樣,娛樂(lè)性也很高,適合在閑暇時(shí)放松心神。并且可在多個(gè)平臺(tái)上實(shí)現(xiàn),程

14、序簡(jiǎn)單易懂,非常適合MFC初學(xué)者學(xué)習(xí)制作。</p><p><b>  貪吃蛇游戲功能介紹</b></p><p>  一條蛇在密閉的圍墻內(nèi),在圍墻內(nèi)隨機(jī)出現(xiàn)一個(gè)食物,通過(guò)按鍵盤上的四個(gè)方向鍵控制蛇向上接著又出現(xiàn)食物,等待被蛇吃掉,如果蛇在移動(dòng)過(guò)程中,撞到墻壁或身體交叉蛇頭撞到自己的身體游戲結(jié)束。并且可以在游戲開始前自由選擇游戲難度,游戲過(guò)程中可暫停游戲,并有積分系統(tǒng)

15、,且積分每滿一定值,蛇的運(yùn)行速度會(huì)逐步增加。</p><p>  4.游戲要求(包括原始數(shù)據(jù)、技術(shù)參數(shù)、設(shè)計(jì)要求、圖紙量、工作量要求等) </p><p>  采用面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言C++進(jìn)行程序開發(fā)</p><p>  選用一種C++語(yǔ)言的開發(fā)環(huán)境設(shè)計(jì)界面及程序</p><p>  在C++6.0M

16、FC開發(fā)環(huán)境下,進(jìn)行程序的運(yùn)行及調(diào)試</p><p>  5. 程序及系統(tǒng)結(jié)構(gòu)設(shè)計(jì)</p><p><b>  貪吃蛇程序設(shè)計(jì)思路</b></p><p><b>  方案討論</b></p><p>  貪吃蛇游戲作為一款經(jīng)典的休閑類小游戲,深受同學(xué)喜愛(ài),因此我們將貪吃蛇作為此次MFC課程設(shè)計(jì)題目

17、。在最初的方案中,我們傾向于單文檔(SDI)的形式設(shè)計(jì),但最初嘗試都因缺少一些文件等情況而失敗??紤]到windows中自帶小游戲大多采用對(duì)話框形式,為能更好的與同學(xué)們的使用習(xí)慣相一致,最終決定使用對(duì)話框(Dialogue)的形式。</p><p><b>  數(shù)據(jù)結(jié)構(gòu)</b></p><p>  在數(shù)據(jù)結(jié)構(gòu)的選取,我們選擇了鏈表,鏈表具有用多少空間就開多少空間的優(yōu)點(diǎn),

18、使程序執(zhí)行更穩(wěn)定,高效。</p><p><b>  游戲控制模塊框</b></p><p><b>  函數(shù)成員 </b></p><p>  貪吃蛇程序整體間調(diào)用關(guān)系</p><p><b>  6軟件設(shè)計(jì)步驟:</b></p><p>  1)打開

19、VC++6.0,選中MFCAppWizard(exe),選路徑如圖:</p><p>  2)新建工程Tcs,在MFC的向?qū)У谝徊竭x擇單文檔,按完成結(jié)束。如圖</p><p>  3)打開Resourseview,在Menu中雙擊,如圖:</p><p>  4)編好對(duì)話框后,在類向?qū)砑尤缦聨讉€(gè)類:如圖</p><p>  5)添加消息響應(yīng)

20、,在Project中選中Tcs,Class name選CTcs,在Object IDs和Messages分別作以下操作:如圖</p><p>  6)在ClassWizard中為剛才編輯好的菜單添加消息處理函數(shù)。打開ClassWizard,選中Message Maps頁(yè)。在Class Name中選擇CTcsView,在Object ID中選擇ID_GAME_ START,在Messages中選擇COMMAND,添

21、加消息處理函數(shù)。</p><p>  7)在ClassWizard中添加鍵盤消息處理函數(shù)。打開ClassWizard,選中Message Maps頁(yè)。在Class Name中選擇CTcsView,在Object ID中選擇CTcsView,在Messages中選擇WM_KeyDown,添加消息處理函數(shù)。</p><p>  8)在ClassWizard中定時(shí)器消息添加處理函數(shù)。打開Clas

22、sWizard,選中Message Maps頁(yè)。在Class Name中選擇CTcsView,在Object ID中選擇CTcsView,在Messages中選擇WM_Timer,添加消息處理函數(shù)。</p><p>  9)編輯生成的代碼,完成程序。</p><p>  10)在程序定義宏定義,確定數(shù)值,構(gòu)造函數(shù),如圖:</p><p>  7. 軟件測(cè)試報(bào)告 &l

23、t;/p><p><b>  游戲編譯程序:</b></p><p>  游戲初始界面:玩家可以在框內(nèi)輸入自己的名字,點(diǎn)擊角色初始化,游戲便開始。</p><p>  游戲說(shuō)明操作界面:當(dāng)玩家輸入姓名后,點(diǎn)擊開始,便彈出如下操作說(shuō)明,玩家按Q鍵開始,空格鍵暫停,CTRL鍵調(diào)頭,方向鍵表示方向。</p><p>  游戲運(yùn)行界

24、面:玩家可以在積分框那知曉自己的成績(jī),還可以在排分榜上看到自己名次。</p><p>  游戲結(jié)束界面:玩家失敗,游記便結(jié)束,然后推出……</p><p><b>  出現(xiàn)的問(wèn)題 </b></p><p>  問(wèn)題:蛇運(yùn)動(dòng)區(qū)域與邊框不匹配,造成蛇運(yùn)動(dòng)出邊框或未到達(dá)邊框而游戲結(jié)束。</p><p>  原因:相關(guān)數(shù)據(jù)不匹配

25、。</p><p>  解決:重新對(duì)程序中的矩形框繪制函數(shù)數(shù)據(jù)進(jìn)行修改,并修改蛇運(yùn)動(dòng)邊界的判斷條件。</p><p>  問(wèn)題:食物出現(xiàn)在邊框外,造成游戲無(wú)法進(jìn)行。</p><p>  原因:控制事物出現(xiàn)的隨機(jī)函數(shù)出現(xiàn)問(wèn)題,隨機(jī)坐標(biāo)超出蛇運(yùn)動(dòng)區(qū)域。</p><p>  解決:重新計(jì)算邊界條件,修改隨機(jī)函數(shù)rand()%x中的x值。</p

26、><p>  問(wèn)題:記分牌有時(shí)會(huì)出現(xiàn)記分錯(cuò)誤。</p><p><b>  原因:尚不明確。</b></p><p><b>  參考文獻(xiàn):</b></p><p>  1)C++程序設(shè)計(jì)實(shí)踐教程第2版 吳乃陵 李海文 高等教育出版社</p><p>  2)深入淺

27、出MFC第2版 候俊杰 華中科技大學(xué)出版社</p><p>  3)Visual C++從入門到實(shí)踐 葛亮 清華大學(xué)出版社</p><p>  4) 鄭莉,董淵,張瑞豐.C++語(yǔ)言程序設(shè)計(jì).第3版.北京:清華大學(xué)出版.2003</p><p>  5) 錢能.C++程序設(shè)計(jì)教程.第二版.北京:清華大學(xué)出版社.200

28、5</p><p>  6) 鄭莉.C++語(yǔ)言程序設(shè)計(jì)案例教程.第一版.北京:清華大學(xué)出版社.2005</p><p>  7) 韋樸,陳泰生. Visual C++通用范例開發(fā)金典.北京:電子工業(yè)出版社.2008</p><p>  8) 揣錦華.面向?qū)ο蟪绦蛟O(shè)計(jì)與VC++實(shí)踐.西安電子科技大學(xué)出版社,2005</p><p>  9) 張

29、建宏,湯練兵,馬德駿.計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)-C語(yǔ)言程序設(shè)計(jì).科學(xué)出版社,2006</p><p>  10) 陳清華.Visual C++課程設(shè)計(jì)案例精選與編程指導(dǎo).東南大學(xué)出版社,2004</p><p>  2012-06-25</p><p><b>  附 錄</b></p><p>  以下代碼,我曾參考過(guò),但有

30、一個(gè)數(shù)組弄不清楚,此貼供大家參考:</p><p>  int m_nLeft, m_nTop, m_nWidth, m_nHeight, m_nSize; // 起始坐標(biāo),寬/高度(格數(shù)),每格大小</p><p>  int m_nDirect; // 當(dāng)前方向</p><p>  // 1-右,2-左,3-下,4-上</p><p> 

31、 CPoint m_pAim; // 當(dāng)前目標(biāo)坐標(biāo)</p><p>  CArray < CPoint, CPoint > m_aBody; // 蛇身</p><p>  int m_nGameStatus; // 游戲狀態(tài):0-未開始,1-開始</p><p>  int m_nCount; // 吃掉目標(biāo)數(shù)</p><p>

32、  int m_nTime, m_nTime1; // 用時(shí)間</p><p><b>  };</b></p><p>  (2)在CSnakeView. Cpp文件,添加3個(gè)成員函數(shù)IniAim、IniGame和ReDiaplay:</p><p>  // 該函數(shù)隨機(jī)產(chǎn)生一個(gè)供蛇吃的目標(biāo),如果該目標(biāo)恰巧與蛇身重合,則重新產(chǎn)生一個(gè)</

33、p><p>  void CSnakeView::IniAim()</p><p><b>  {</b></p><p>  int uX, uY; // 目標(biāo)位置</p><p><b>  while (1)</b></p><p><b>  {</b&g

34、t;</p><p>  uX=rand ( ) % m_nHeight;</p><p>  uY=rand ( ) % m_nWidth;</p><p>  int uTag = 0; // 0-不與蛇身重合,1-重合</p><p>  for (int i=0;i <= m_aBody. GetUpperBound ( );i

35、++) </p><p><b>  {</b></p><p>  CPoint uPoint = m_aBody. GetAt (i);</p><p>  if (uPoint. x == uX ||uPoint. y == uY ) // 目標(biāo)與蛇身重合</p><p><b>  {</b>

36、;</p><p><b>  uTag = 1;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if (uTag ==

37、 0)</p><p><b>  break;</b></p><p><b>  }</b></p><p>  m_pAim = CPoint (uX, uY); // 產(chǎn)生的目標(biāo)存放在成員變量中</p><p><b>  }</b></p><p&

38、gt;  // 該函數(shù)對(duì)游戲初始化,定義游戲的初始狀態(tài)</p><p>  void CSnakeView::IniGame()</p><p><b>  {</b></p><p><b>  // 游戲區(qū)域</b></p><p>  m_nLeft = 20;</p><

39、p>  m_nTop = 20;</p><p>  m_nWidth = 40;</p><p>  m_nHeight = 30;</p><p>  m_nSize = 10;</p><p><b>  // 游初始狀態(tài)</b></p><p>  m_nGameStatus = 0

40、;</p><p>  m_nDirect = 1;</p><p>  m_nCount = 0;</p><p><b>  // 初始化蛇身</b></p><p>  m_aBody. RemoveAll ( );</p><p>  m_aBody. Add ( CPoint (2, 7

41、) );</p><p>  m_aBody. Add ( CPoint (2, 6) );</p><p>  m_aBody. Add ( CPoint (2, 5) );</p><p>  m_aBody. Add ( CPoint (2, 4) );</p><p><b>  // 計(jì)時(shí)器清零</b><

42、/p><p>  m_nTime = 0;</p><p>  m_nTime1 = 0;</p><p>  // 初始化隨機(jī)數(shù)發(fā)生器</p><p>  srand ( (unsigned) time (NULL) );</p><p><b>  // 產(chǎn)生一個(gè)目標(biāo)</b></p>

43、<p>  IniAim ( );</p><p><b>  }</b></p><p>  // 刷新游戲區(qū)域中pPoint處的一個(gè)小方格</p><p>  void CSnakeView::ReDisplay(CPoint pPoint)</p><p><b>  {</b>&

44、lt;/p><p>  InvalidateRect (CRect (m_nLeft + pPoint. y * m_nSize, m_nTop + pPoint. x * m_nSize,</p><p>  m_nLeft + (pPoint. y + 1) * m_nSize, m_nTop + (pPoint. x + 1) * m_nSize) );</p><p

45、><b>  }</b></p><p> ?。?)修改CSnakeView的構(gòu)造函數(shù),完成游戲的初始化。</p><p>  CSnakeView::CSnakeView()</p><p><b>  {</b></p><p>  IniGame();</p><p&

46、gt;<b>  }</b></p><p> ?。?)在OnDraw中加入代碼,顯示游戲界面。</p><p>  void CSnakeView::OnDraw(CDC* pDC)</p><p><b>  {</b></p><p>  CSnakeDoc* pDoc = GetDocume

47、nt();</p><p>  ASSERT_VALID(pDoc);</p><p>  // TODO: add draw code for native data here</p><p><b>  // 畫游戲區(qū)域</b></p><p>  pDC -> SelectStockObject (WHITE

48、_BRUSH);</p><p>  pDC -> Rectangle (CRect (m_nLeft - 1, m_nTop - 1, m_nLeft + m_nWidth * m_nSize + 1,</p><p>  m_nTop + m_nHeight * m_nSize + 1) );</p><p><b>  // 顯示當(dāng)前用時(shí)<

49、;/b></p><p>  CString uStr;</p><p>  uStr. Format ("當(dāng)前用時(shí):% d", m_nTime);</p><p>  pDC -> TextOut (m_nLeft + m_nWidth * m_nSize + 30, 40, uStr);</p><p>&

50、lt;b>  // 顯示當(dāng)前得分</b></p><p>  uStr. Format ("當(dāng)前得分: % d", m_nCount);</p><p>  pDC -> TextOut (m_nLeft + m_nWidth * m_nSize + 30, 140, uStr);</p><p><b>  /

51、/ 顯示目標(biāo)</b></p><p>  pDC -> SelectStockObject (LTGRAY_BRUSH);</p><p>  pDC -> Rectangle (CRect (m_nLeft + m_pAim. y * m_nSize, m_nTop + m_pAim. x * m_nSize,</p><p>  m_nL

52、eft + (m_pAim. y + 1) * m_nSize, m_nTop + (m_pAim. x + 1 ) *m_nSize ));</p><p><b>  // 畫蛇</b></p><p>  for (int i=0; i<= m_aBody. GetUpperBound (); i++)</p><p><b&

53、gt;  {</b></p><p>  CPoint uPoint = m_aBody. GetAt (i);</p><p>  pDC -> Rectangle (CRect (m_nLeft + uPoint. y * m_nSize, m_nTop + uPoint. x * m_nSize,</p><p>  m_nLeft + (u

54、Point. y + 1) * m_nSize, m_nTop + (uPoint. x + 1) * m_nSize) );</p><p><b>  }</b></p><p><b>  }</b></p><p> ?。?)為游戲菜單下的開始項(xiàng)的消息映射函數(shù)添加代碼。</p><p>  

55、void CSnakeView::OnGameStart() </p><p><b>  {</b></p><p>  // 啟動(dòng)游戲,啟動(dòng)定時(shí)器</p><p>  IniGame ( );</p><p>  m_nGameStatus = 1;</p><p>  SetTimer (1

56、, 100, NULL);</p><p>  Invalidate ( );</p><p><b>  }</b></p><p>  (6)為鍵盤按鍵消息處理函數(shù)添加代碼。</p><p>  // 根據(jù)按下的方向鍵設(shè)置代表不同方向的值</p><p>  void CSnakeView::

57、OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) </p><p><b>  {</b></p><p>  switch (nChar)</p><p><b>  {</b></p><p><b>  case 38:</b&g

58、t;</p><p>  m_nDirect = 4;</p><p><b>  break;</b></p><p><b>  case 40:</b></p><p>  m_nDirect = 3;</p><p><b>  break;</b&g

59、t;</p><p><b>  case 37:</b></p><p>  m_nDirect = 2;</p><p><b>  break;</b></p><p><b>  case 39:</b></p><p>  m_nDirect

60、= 1;</p><p><b>  break;</b></p><p><b>  } </b></p><p>  CView::OnKeyDown(nChar, nRepCnt, nFlags);</p><p><b>  }</b></p><p

61、> ?。?)為定時(shí)器消息處理函數(shù)添加代碼。</p><p>  void CSnakeView::OnTimer(UINT nIDEvent) </p><p><b>  {</b></p><p>  m_nTime1++; // 計(jì)時(shí) </p><p>  if (m_nTime1 == 10) // 達(dá)到1

62、秒</p><p><b>  {</b></p><p>  m_nTime++;</p><p>  m_nTime1 = 0;</p><p>  Invalidate ( );</p><p><b>  }</b></p><p>  CPo

63、int uPoint = m_aBody. GetAt (0); // 蛇頭的位置</p><p>  int uTag = 0; //是否失敗 </p><p>  switch (m_nDirect) // 判斷下一步蛇是否出界</p><p><b>  {</b></p><p>  case 1: // rig

64、ht</p><p>  uPoint. y++;</p><p>  if (uPoint. y >= m_nWidth)</p><p><b>  uTag = 1;</b></p><p><b>  break;</b></p><p>  case 2: /

65、/ left</p><p>  uPoint. y--;</p><p>  if (uPoint. y < 0)</p><p><b>  uTag = 1;</b></p><p><b>  break;</b></p><p>  case 3: // do

66、wn</p><p>  uPoint. x++;</p><p>  if (uPoint. x >= m_nHeight)</p><p><b>  uTag = 1;</b></p><p><b>  break;</b></p><p>  case 4:

67、// up</p><p>  uPoint. x--;</p><p>  if (uPoint. x < 0)</p><p><b>  uTag = 1;</b></p><p><b>  break;</b></p><p><b>  }<

68、/b></p><p>  if (uTag ==0) // 判斷蛇是否碰到了自身</p><p><b>  {</b></p><p>  for (int i=0; i <= m_aBody.GetUpperBound(); i++)</p><p><b>  {</b><

69、/p><p>  CPoint uPoint1 = m_aBody. GetAt (i);</p><p>  if (uPoint1. x == uPoint. x && uPoint1.y == uPoint. y)</p><p><b>  {</b></p><p><b>  uTag

70、= 1;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if (uT

71、ag == 0)</p><p><b>  {</b></p><p>  m_aBody. InsertAt (0, uPoint); // 新的蛇頭的位置</p><p>  ReDisplay (uPoint);</p><p>  if (uPoint. x == m_pAim. x && uP

72、oint. y == m_pAim. y) // 碰上目標(biāo)</p><p><b>  {</b></p><p>  m_nCount++;</p><p>  IniAim ( );</p><p>  Invalidate ( );</p><p><b>  }</b>

73、;</p><p><b>  else</b></p><p><b>  {</b></p><p>  CPoint uPoint1 = m_aBody. GetAt (m_aBody.GetUpperBound ( ) );</p><p>  m_aBody. RemoveAt (m_aB

74、ody.GetUpperBound ( ) );</p><p>  ReDisplay (uPoint1);</p><p><b>  }</b></p><p><b>  }</b></p><p>  else // 游戲結(jié)束</p><p><b>  

75、{</b></p><p>  KillTimer(1);</p><p>  AfxMessageBox("Fail!");</p><p><b>  }</b></p><p>  CView::OnTimer(nIDEvent);</p><p><b

溫馨提示

  • 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論