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

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  目 錄</b></p><p><b>  1 前言4</b></p><p><b>  2 需求分析4</b></p><p><b>  2.1系統(tǒng)概述4</b></p><p><b>  2.1.1

2、概述4</b></p><p>  2.2系統(tǒng)運(yùn)行環(huán)境4</p><p>  2.2.1運(yùn)行環(huán)境4</p><p>  2.3功能需求描述5</p><p>  2.3.1功能需求5</p><p><b>  3 總體設(shè)計(jì)5</b></p><p>

3、;  3.1開(kāi)發(fā)與設(shè)計(jì)的總體思想5</p><p>  3.1.1屏幕的組成5</p><p>  3.1.2形狀的組成6</p><p>  3.1.3形狀的統(tǒng)一6</p><p>  3.1.4移動(dòng)與旋轉(zhuǎn)的統(tǒng)一7</p><p><b>  4 概要設(shè)計(jì)11</b></p&g

4、t;<p>  4.1數(shù)據(jù)流圖11</p><p>  4.2系統(tǒng)功能模塊11</p><p>  4.3 系統(tǒng)流程圖12</p><p><b>  5 詳細(xì)設(shè)計(jì)12</b></p><p>  5.1.界面的設(shè)計(jì)12</p><p>  5.1.1背景色的選擇模塊13

5、</p><p>  5.2游戲隨機(jī)選擇方塊模塊14</p><p>  5.3游戲預(yù)覽功能模塊17</p><p>  5.4收埋功能模塊20</p><p>  5.5記分功能模塊23</p><p>  5.6鼠標(biāo)控制功能模塊25</p><p><b>  6 測(cè)試分

6、析27</b></p><p><b>  7 心得體會(huì)27</b></p><p><b>  參考文獻(xiàn)28</b></p><p>  致 謝28</p><p><b>  俄羅斯方塊游戲</b></p><p>  

7、摘要:該游戲軟件在Windows系統(tǒng)為玩家提供傳統(tǒng)俄羅斯方塊游戲的基本功能,玩家可以通過(guò)鍵盤(pán)控制在游戲區(qū)中堆積軟件隨機(jī)提供的7種類(lèi)型方塊,在游戲區(qū)堆滿(mǎn)一行后,自動(dòng)消除并記分。當(dāng)游戲區(qū)不能再堆積新來(lái)的方塊時(shí),游戲結(jié)束。游戲設(shè)定3個(gè)級(jí)別,初級(jí),中級(jí)跟高級(jí),級(jí)別越高,方塊下降的速度越快、難度越大,玩家可以根據(jù)自己的需要自由設(shè)定初始游戲級(jí)別,達(dá)到最高級(jí)別時(shí)不再增加。游戲以最終玩家獲得的分?jǐn)?shù)來(lái)判斷玩家水平的高低。</p><p

8、><b>  1 前言</b></p><p>  隨著社會(huì)發(fā)展,人類(lèi)的生產(chǎn)、生活越來(lái)越離不開(kāi)信息。誰(shuí)擁有了更多更有效的信息,誰(shuí)就將在競(jìng)爭(zhēng)中處于有利地位。信息產(chǎn)業(yè)正在成為一個(gè)國(guó)家的支柱。只有擁有了先進(jìn)的數(shù)據(jù)庫(kù)技術(shù),才能有效地管理好浩如煙海的數(shù)據(jù),并從中提取出對(duì)自己有用的信息來(lái)加以利用。</p><p>  作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)信息進(jìn)行管理,具有手

9、工管理所無(wú)法比擬的優(yōu)點(diǎn).例如:檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等。這些優(yōu)點(diǎn)能夠極大地提高管理的效率,也是正規(guī)化管理,與世界接軌的重要條件。 </p><p>  在下面的各章中我們將以開(kāi)發(fā)一個(gè)俄羅斯方塊游戲?yàn)槔?談?wù)勂溟_(kāi)發(fā)過(guò)程和所涉及到的問(wèn)題及解決方法。</p><p><b>  2 需求分析</b></p><p

10、><b>  2.1系統(tǒng)概述</b></p><p><b>  2.1.1概述</b></p><p>  該游戲軟件在Windows系統(tǒng)為玩家提供傳統(tǒng)俄羅斯方塊游戲的基本功能,玩家可以通過(guò)鍵盤(pán)控制在游戲區(qū)中堆積軟件隨機(jī)提供的由四個(gè)小方塊不同組合的7種類(lèi)型不同顏色的方塊,每個(gè)小方格的顏色也是隨機(jī)的,并且在整個(gè)下落的過(guò)程中,其顏色也呈動(dòng)態(tài)變

11、化。游戲過(guò)程中,每在游戲區(qū)堆滿(mǎn)一行后,自動(dòng)消除并記分。同時(shí)消去的行數(shù)越多,那一次性所加的分?jǐn)?shù)也就越多。一行是100,兩行是300,三行是600,四行是1000分。為了得到更多的分,那么我們游戲者就要想辦法一次盡可能多的消去方塊。當(dāng)游戲區(qū)不能再堆積新來(lái)的方塊時(shí),游戲結(jié)束。游戲設(shè)定3個(gè)級(jí)別,初級(jí),中級(jí)和高級(jí),級(jí)別越高,方塊下降的速度越快、難度越大,玩家可以根據(jù)自己的需要自由設(shè)定初始游戲級(jí)別,達(dá)到最高級(jí)別時(shí)不再增加。游戲以最終玩家獲得的分?jǐn)?shù)來(lái)

12、判斷玩家水平的高低。游戲?yàn)閷?duì)戰(zhàn)型俄羅斯方塊,玩家依靠自己消層和使用道具來(lái)打擊對(duì)手。當(dāng)玩家游戲池中的磚塊累積到頂端時(shí)游戲失敗。</p><p><b>  2.2系統(tǒng)運(yùn)行環(huán)境</b></p><p><b>  2.2.1運(yùn)行環(huán)境</b></p><p>  (1)硬件環(huán)境。本系統(tǒng)適用于那種Inter386以上計(jì)算機(jī),內(nèi)存容

13、量為128M,應(yīng)配備,鍵盤(pán),鼠標(biāo),顯示器等外部設(shè)備。</p><p>  (2)軟件環(huán)境。本系統(tǒng)的設(shè)計(jì)采用Visual C++6.0編寫(xiě)。在Windows XP SP2環(huán)境下測(cè)試通過(guò)</p><p>  (3)本游戲軟件在Windows平臺(tái)下都可以運(yùn)行。</p><p><b>  2.3功能需求描述</b></p><p&

14、gt;<b>  2.3.1功能需求</b></p><p>  這是一次嘗試,一個(gè)比較成功的設(shè)計(jì),其精彩的算法與漂亮的程序結(jié)構(gòu)足以讓人興奮了。</p><p>  這個(gè)游戲,不僅可以滿(mǎn)足游戲愛(ài)好者對(duì)游戲的要求,同時(shí)我們?cè)黾恿嗣烙^因素,讓游戲有一個(gè)比較美觀的界面,滿(mǎn)足我們游戲愛(ài)好者的視覺(jué)要求。</p><p>  這有別于常規(guī)的俄羅斯方塊算法,

15、游戲中,玩家依靠自己消層來(lái)得分。當(dāng)玩家游戲池中的磚塊累積到頂端時(shí)游戲失敗。</p><p><b>  3 總體設(shè)計(jì)</b></p><p>  3.1開(kāi)發(fā)與設(shè)計(jì)的總體思想</p><p>  3.1.1屏幕的組成</p><p>  一個(gè)游戲一定要有一個(gè)界面供游戲者對(duì)游戲控制。</p><p>

16、  這個(gè)界面中要包含讓游戲者更加清楚游戲狀態(tài)的信息,比如,一個(gè)方塊在下落過(guò)程中,它的位置如何,形狀是怎么樣的,要如何放置這個(gè)方塊,以及下一個(gè)方塊是什么形狀,這樣關(guān)系著游戲者要如何放置方塊,讓整體有個(gè)更加的布局,有利于游戲的進(jìn)行。屏幕由20行13列的網(wǎng)格組成;其中0~2行:初始的形狀將在這里形成然后下落,這三行用戶(hù)不可見(jiàn);3~19區(qū)域;20,其標(biāo)記已到屏幕底部。在界面的右邊就是相關(guān)的游戲信息,級(jí)別控制,開(kāi)始游戲控制,背景色的選擇,當(dāng)前方塊

17、的坐標(biāo),組型,顏色及類(lèi)型(ZZ表示)以及目前的得分情況,下一個(gè)預(yù)覽方塊,鼠標(biāo)控制信息(變形,左移,右移和加速下落),</p><p>  收埋信息(分別向上,下,左和右收埋,及結(jié)束游戲收埋,這時(shí)將顯示版權(quán)信息)。</p><p>  3.1.2形狀的組成</p><p>  每一種形狀都是由四個(gè)方塊組成,比如■■■■由四個(gè)方塊橫向排列而成</p>&l

18、t;p>  3.1.3形狀的統(tǒng)一</p><p>  ■■■■等共19種形狀(旋轉(zhuǎn)前后的形狀歸為不同的形狀),雖然在玩游戲時(shí)我們會(huì)去將各種不同的形狀有個(gè)不同的命名(比如“條子”,“方塊”等),但在設(shè)計(jì)游戲是它們卻是統(tǒng)一的,它們都是“形狀”。這一點(diǎn)是游戲成功的基礎(chǔ)。</p><p>  為了使各種不同的形狀達(dá)到統(tǒng)一的設(shè)計(jì),我設(shè)計(jì)了如下解決方案:將形狀始終放在4×4的格子中,以

19、該4×4格子的第一個(gè)格子為“基礎(chǔ)點(diǎn)”,只要給出組成形狀的四個(gè)塊相對(duì)于該基礎(chǔ)點(diǎn)的相對(duì)坐標(biāo)。</p><p>  ★□□□ ★為基礎(chǔ)點(diǎn),形狀各塊的相對(duì)坐標(biāo)是相對(duì)于這個(gè)基礎(chǔ)點(diǎn)的</p><p><b>  □□□□</b></p><p><b>  □□□□</b></p><p><

20、;b>  □□□□</b></p><p>  那么■■■■在其中就如圖:其四個(gè)方塊相對(duì)于基礎(chǔ)點(diǎn)的網(wǎng)格坐標(biāo)就為</p><p> ?。?,2)(1,2)(2,2)(3,2)</p><p><b>  □□□□ </b></p><p><b>  □□□□</b></p&g

21、t;<p>  ■■■■ 02122232</p><p><b>  □□□□ </b></p><p>  我們將用一個(gè)int[8]記錄下這四個(gè)相對(duì)坐標(biāo)值</p><p><b>  同理:</b></p><p><b>  □□□□</b></p

22、><p><b>  □□□□</b></p><p><b>  ■■□□</b></p><p>  ■■□□ 02120313</p><p>  這樣,我們只要知道某個(gè)形狀的相對(duì)坐標(biāo)值數(shù)組,就可以輕松地求出它的各方塊的排列方式,也就是其形狀(樣子)。</p><p> 

23、 3.1.4移動(dòng)與旋轉(zhuǎn)的統(tǒng)一</p><p>  從上面我們可以看出形狀的移動(dòng)可以這樣來(lái)實(shí)現(xiàn): 移動(dòng)基礎(chǔ)點(diǎn)的網(wǎng)格坐標(biāo),然后組成形狀的四個(gè)方塊按照其與基礎(chǔ)點(diǎn)坐標(biāo)的相對(duì)值而改變網(wǎng)格坐標(biāo),則表現(xiàn)為移動(dòng)。</p><p>  旋轉(zhuǎn)與移動(dòng)的原理一樣:設(shè)旋轉(zhuǎn)前的形狀為ZZ = 0,旋轉(zhuǎn)后的形狀為ZZ=1,組成形狀A(yù)的四個(gè)方塊按照B(而不是按照A)的相對(duì)于基礎(chǔ)點(diǎn)坐標(biāo)的相對(duì)值而改變網(wǎng)格坐標(biāo),則表現(xiàn)為旋轉(zhuǎn)。

24、</p><p><b>  比如,</b></p><p><b>  □□□□ </b></p><p><b>  □□□□</b></p><p>  ■■■■ 02122232</p><p><b>  □□□□ </b&

25、gt;</p><p>  移動(dòng): 設(shè)其基礎(chǔ)點(diǎn)網(wǎng)格坐標(biāo)為(gX,gY),其各方塊當(dāng)前坐標(biāo)(gX+0,gY+2), (gX+1,gY+2), (gX+3,gY+2), (gX+3,gY+2)。如果其向左移動(dòng)一格,那么它的基礎(chǔ)了坐標(biāo)gX-=1; gY=gY; 其各方塊移動(dòng)后坐標(biāo) (gX+0,gY+2), (gX+1,gY+2), (gX+3,gY+2), (gX+3,gY+2)。</p><p&g

26、t;  旋轉(zhuǎn):設(shè)其基礎(chǔ)點(diǎn)網(wǎng)格坐標(biāo)為(gX,gY),其各方塊當(dāng)前坐標(biāo)(gX+0,gY+2), (gX+1,gY+2), (gX+3,gY+2), (gX+3,gY+2)。如果其旋轉(zhuǎn)一次,旋轉(zhuǎn)后的形狀如圖</p><p><b>  □■□□ </b></p><p>  □■□□ 10111213</p><p><b>  □■□□

27、</b></p><p><b>  □■□□</b></p><p>  那么其旋轉(zhuǎn)后的各方塊坐標(biāo) (gX+1,gY+0), (gX+1,gY+1), (gX+1,gY+2), (gX+1,gY+3)</p><p>  如果我們將各形狀編號(hào),比如■■■■編號(hào)0,其旋轉(zhuǎn)90度以后的形狀為編號(hào)1</p><p&g

28、t;  那么0旋轉(zhuǎn)目標(biāo)為1,1的旋轉(zhuǎn)目標(biāo)為0</p><p>  所以所有形狀便得到了統(tǒng)一,如圖形狀</p><p><b>  □□□□</b></p><p><b>  □□□□</b></p><p><b>  ■■■■</b></p><p>

29、;<b>  □□□□</b></p><p><b>  □■□□</b></p><p><b>  □■□□</b></p><p><b>  □■□□</b></p><p><b>  □■□□</b></p>

30、<p><b>  □□□□</b></p><p><b>  ■□□□</b></p><p><b>  ■□□□</b></p><p><b>  ■■□□</b></p><p><b>  □□□□</b>

31、</p><p><b>  □□□□</b></p><p><b>  ■■■□</b></p><p><b>  ■□□□</b></p><p><b>  □□□□</b></p><p><b>  ■■□□

32、</b></p><p><b>  □■□□</b></p><p><b>  □■□□</b></p><p><b>  □□□□</b></p><p><b>  □□■□</b></p><p><b

33、>  ■■■□</b></p><p><b>  □□□□</b></p><p><b>  □□□□</b></p><p><b>  □□□□</b></p><p><b>  ■■□□</b></p><

34、p><b>  ■■□□</b></p><p><b>  □□□□</b></p><p><b>  □■□□</b></p><p><b>  ■■□□</b></p><p><b>  ■□□□</b></p

35、><p><b>  □□□□</b></p><p><b>  ■■□□</b></p><p><b>  □■■□</b></p><p><b>  □□□□</b></p><p><b>  □□□□</b

36、></p><p><b>  □■□□</b></p><p><b>  □■□□</b></p><p><b>  ■■□□</b></p><p><b>  □□□□</b></p><p><b>  

37、■□□□</b></p><p><b>  ■■■□</b></p><p><b>  □□□□ </b></p><p><b>  □□□□</b></p><p><b>  □■■□</b></p><p>

38、<b>  □■□□</b></p><p><b>  □■□□</b></p><p><b>  □□□□</b></p><p><b>  □□□□</b></p><p><b>  ■■■□ </b></p>

39、;<p><b>  □□■□</b></p><p><b>  □□□□</b></p><p><b>  ■□□□</b></p><p><b>  ■■□□</b></p><p><b>  □■□□</b>

40、;</p><p><b>  □□□□</b></p><p><b>  □■■□ </b></p><p><b>  ■■□□</b></p><p><b>  □□□□</b></p><p><b>  □

41、□□□</b></p><p><b>  □■□□</b></p><p><b>  ■■■□ </b></p><p><b>  □□□□</b></p><p><b>  □□□□</b></p><p>

42、<b>  □■□□</b></p><p><b>  □■■□ </b></p><p><b>  □■□□ </b></p><p><b>  □□□□</b></p><p><b>  □□□□</b></p&g

43、t;<p><b>  ■■■□ </b></p><p>  □■□□ &l

44、t;/p><p><b>  □□□□</b></p><p><b>  ■□□□</b></p><p><b>  ■■□□ </b></p><p><b>  □■□□</b></p><p><b>  4 概要

45、設(shè)計(jì)</b></p><p><b>  4.1數(shù)據(jù)流圖</b></p><p>  數(shù)據(jù)流圖是對(duì)系統(tǒng)數(shù)據(jù)流向的一種描述,并從本質(zhì)上讓程序的使用者,大致了解系統(tǒng)的使用方法。本俄羅斯游戲的大致流程圖如下:</p><p>  圖 4-1 數(shù)據(jù)流圖</p><p><b>  4.2系統(tǒng)功能模塊&l

46、t;/b></p><p>  圖4-2 功能模塊</p><p><b>  4.3 系統(tǒng)流程圖</b></p><p>  系統(tǒng)流程圖是對(duì)系統(tǒng)的大致流程進(jìn)行描述,本游戲的系統(tǒng)流程圖如下:</p><p>  圖4-3 系統(tǒng)流程圖</p><p><b>  5 詳細(xì)設(shè)計(jì)&l

47、t;/b></p><p>  根據(jù)上面所介紹的本系統(tǒng)的各個(gè)模塊及其需要實(shí)現(xiàn)的功能,下面詳細(xì)設(shè)計(jì)如下:</p><p><b>  5.1.界面的設(shè)計(jì)</b></p><p>  程序界面程序在啟動(dòng)運(yùn)行時(shí),系統(tǒng)會(huì)通過(guò)調(diào)用視圖類(lèi)中的重繪圖函數(shù)對(duì)界面進(jìn)行界面的初始化。使程序界面更加友好,在使用上給用戶(hù)一種清新怡然的感覺(jué)。其界面如圖所示:<

48、;/p><p>  5.1.1背景色的選擇模塊</p><p>  實(shí)現(xiàn)此功能代碼如下:</p><p>  void CGameDlg::OnBackcolor()//背景色</p><p><b>  {</b></p><p>  CColorDialog dlg(BackColor)

49、;//</p><p>  if(dlg.DoModal()==IDOK)</p><p>  BackColor=dlg.GetColor();</p><p><b>  Back=1;</b></p><p><b>  }</b></p><p>  5.2

50、游戲隨機(jī)選擇方塊模塊</p><p>  在游戲中,每一個(gè)下落的方塊都是隨機(jī)的,包括顏色,形狀。</p><p>  實(shí)現(xiàn)此功能相關(guān)代碼如下:</p><p>  void CGameDlg::Shape()//外部框架</p><p><b>  {</b></p><p>  in

51、t line=18;</p><p>  int rr=4; </p><p>  CDC *pDC=GetDC();</p><p>  ASSERT(pDC!=NULL);</p><p><b>  CPen pen;</b></p><p>  pen.CreatePen (PS_SOL

52、ID,1,RGB(0,0,0));</p><p>  CBrush brush1,brush2,brush3;</p><p>  brush1.CreateSolidBrush(RGB(60,60,60));</p><p>  brush3.CreateSolidBrush(RGB(0,170,0));</p><p>  brush

53、2.CreateSolidBrush(BackColor);</p><p>  pDC->SelectObject (pen);</p><p>  pDC->SelectObject (brush1);</p><p>  pDC->Rectangle(X-line,Y-line,X+M*r+line,Y+N*r+line);</p>

54、;<p>  int b=line*2/3,c=b-rr; </p><p>  pDC->SelectObject (brush3);</p><p>  pDC->Rectangle(X-b,Y-b,X+M*r+b,Y+N*r+b);</p><p>  pDC->SelectObject (brush1);</p>

55、<p>  pDC->Rectangle(X-c,Y-c,X+M*r+c,Y+N*r+c);</p><p>  pDC->SelectObject (brush2);</p><p>  pDC->Rectangle(X-2,Y-2,X+M*r+2,Y+N*r+2);</p><p>  DeleteObject(pen);Delet

56、eObject(brush1);</p><p>  DeleteObject(brush2);DeleteObject(brush3);</p><p>  ReleaseDC(pDC);</p><p><b>  }</b></p><p>  void CGameDlg::one(int Type, int i,

57、 int j) //某元格顏色 位置</p><p><b>  {</b></p><p>  if(Runing==0)</p><p><b>  {</b></p><p>  OnDestroy();</p><p><b>  return;<

58、/b></p><p><b>  }</b></p><p>  CDC *pDC=GetDC(); </p><p>  ASSERT(pDC!=NULL);</p><p>  COLORREF color,L_color=RGB(0,0,0);</p><p>  switch(

59、Type)</p><p><b>  {</b></p><p>  case 0: color=L_color=BackColor;break;</p><p>  case 1: color=RGB(131,129,222); break;</p><p>  case 2: color=RGB(250,90,1

60、30); break;</p><p>  case 3: color=RGB(40,220,250); break;</p><p>  case 4: color=RGB(40,120,50); break;</p><p>  case 5: color=RGB(0,250,0); break;</p><p>  ca

61、se 6: color=RGB(131,19,222); break;</p><p>  case 7: color=RGB(120,190,30); break;</p><p>  case 8: color=RGB(140,20,150); break;</p><p>  case 9: color=RGB(40,120,150); break;&

62、lt;/p><p>  case 10: color=RGB(23,62,180); break;</p><p>  case 11: color=RGB(131,129,22); break;</p><p>  case 12: color=RGB(20,190,130); break;</p><p>  case 13: color=

63、RGB(40,234,220); break;</p><p>  case 14: color=RGB(140,70,150); break;</p><p>  case 15: color=RGB(30,150,40); break;</p><p>  case 16: color=RGB(78,203,30);break;</p><

64、;p>  case 17: color=RGB(120,100,30); break;</p><p>  case 18: color=RGB(240,70,20); break;</p><p>  case 19: color=RGB(40,180,90); break;</p><p>  case 20: color=RGB(123,62,180

65、); break;</p><p>  case 21: color=RGB(120,0,20);break;</p><p>  case 22: color=RGB(0,0,250);break;</p><p>  case 23: color=RGB(0,250,0);break;</p><p>  case 24: colo

66、r=RGB(0,250,250);break;</p><p>  case 25: color=RGB(250,0,0);break;</p><p>  case 26: color=RGB(250,0,250); break;</p><p>  case 27: color=RGB(250,250,0);break;</p><p

67、>  case 28: color=RGB(250,250,250);break;</p><p>  case 29: color=RGB(rand()%250,rand()%250,rand()%250); break;</p><p>  case 30: color=RGB(rand()%250,rand()%250,rand()%250); break;<

68、/p><p>  case 31: color=RGB(rand()%250,rand()%250,rand()%250); break;</p><p>  case 32: color=RGB(rand()%250,rand()%250,rand()%250); break;</p><p>  case 33: color=RGB(rand()%250

69、,rand()%250,rand()%250); break;</p><p>  case 34: color=RGB(rand()%250,rand()%250,rand()%250); break;</p><p><b>  }</b></p><p><b>  CPen pen;</b></p

70、><p>  CBrush brush;</p><p>  pen.CreatePen(PS_SOLID,1,L_color);</p><p>  brush.CreateSolidBrush (color);</p><p>  pDC->SelectObject(pen);</p><p>  pDC-&

71、gt;SelectObject(brush);</p><p>  pDC->Rectangle(X+i*r,Y+j*r,X+(i+1)*r,Y+(j+1)*r);</p><p>  DeleteObject(pen);</p><p>  DeleteObject(brush);</p><p>  ReleaseDC(pDC);&

72、lt;/p><p><b>  }</b></p><p>  5.3游戲預(yù)覽功能模塊</p><p>  此模塊用來(lái)為游戲愛(ài)好者提供下一個(gè)方塊的信息,</p><p>  實(shí)現(xiàn)此功能相關(guān)代碼如下:</p><p>  void CGameDlg::PreView()//預(yù)先顯示組</

73、p><p><b>  {</b></p><p>  if(Runing==0)</p><p><b>  {</b></p><p>  OnDestroy();</p><p><b>  return;</b></p><p&

74、gt;<b>  }</b></p><p>  CTime tm=CTime::GetCurrentTime(); </p><p>  object2.Type=(rand()+tm.GetMinute()+tm.GetSecond())%V+1;</p><p>  object2.x=M/2;object2.y=0;</p

75、><p>  object2.group=(tm.GetMinute()*tm.GetSecond()+rand())%7+1;</p><p>  ZZ2=(rand()+tm.GetDay()*tm.GetHour())%97;</p><p>  b0=b1=b2=b3=b4=b5=b6=b7=0;</p><p>  switch(obj

76、ect2.group)</p><p><b>  {</b></p><p>  case 1: b2=0;b3=1;b4=1;b5=0;b6=1;b7=1; break;</p><p>  case 2: b2=0;b3=1;b4=0;b5=-1;b6=1;b7=-1;break;</p><p>  c

77、ase 3: b2=0;b3=1;b4=0;b5=-1;b6=1;b7=1; break;</p><p>  case 4: b2=0;b3=1;b4=0;b5=2;b6=0;b7=-1; break;</p><p>  case 5: b2=0;b3=-1;b4=1;b5=0;b6=1;b7=1; break;</p><p>  case 6:

78、 b2=0;b3=1;b4=1;b5=0;b6=1;b7=-1; break;</p><p>  case 7: b2=0;b3=1;b4=0;b5=2;b6=1;b7=1; break;</p><p><b>  } </b></p><p>  for(int i=0;i<ZZ2;i++) </p>

79、<p>  ChangeShape(object2);</p><p>  if(object2.y+b3<0||object2.y+b5<0||object2.y+b7<0||object2.y<0) </p><p>  object2.y=object2.y+1;</p><p>  if(object2.y+b3>

80、0&&object2.y+b5>0&&object2.y+b7>0&&object2.y>0) </p><p>  object2.y=0;</p><p><b>  }</b></p><p>  void CGameDlg::OnButton1() </p>

81、<p><b>  {</b></p><p>  CDC *pDC = GetDC(); </p><p>  ASSERT(pDC != NULL);</p><p>  OnDraw(pDC);</p><p>  ReleaseDC(pDC);</p><p><b&

82、gt;  }</b></p><p>  void CGameDlg::OnDown() </p><p><b>  {</b></p><p>  if(!Runing)</p><p><b>  return;</b></p><p>  MoveOn(

83、3);</p><p>  ObjectGroup(object);</p><p>  KillTimer(11);</p><p>  SetTimer(11, 10, NULL); </p><p><b>  }</b></p><p>  void CGameDlg::OnLeft(

84、) </p><p><b>  {</b></p><p>  if(!Runing)</p><p><b>  return;</b></p><p>  MoveOn(4);</p><p><b>  }</b></p><

85、;p>  void CGameDlg::OnRight() </p><p><b>  {</b></p><p>  if(!Runing)</p><p><b>  return;</b></p><p>  MoveOn(2);</p><p><b&g

86、t;  }</b></p><p>  void CGameDlg::OnUp() </p><p><b>  {</b></p><p>  if(!Runing)</p><p><b>  return;</b></p><p>  MoveOn(1);&

87、lt;/p><p><b>  }</b></p><p>  void CGameDlg::MoveOn(int n)</p><p><b>  {</b></p><p>  // TODO: Add your message handler code here and/or call defau

88、lt</p><p>  CDC *pDC=GetDC(); ASSERT(pDC!=NULL);</p><p>  DeleteGroup(object);int b_x=object.x,b_y=object.y; </p><p><b>  switch(n)</b></p><p><b>  {

89、</b></p><p><b>  case 1: </b></p><p>  ChangeShape(object); </p><p>  ObjectGroup(object); </p><p><b>  break;</b></p>&l

90、t;p><b>  case 2: </b></p><p>  object.x = object.x < M-1 ? object.x+1 : M-1; </p><p>  if(check1())</p><p>  object.x=b_x; </p><p>  ObjectGroup(obj

91、ect); </p><p><b>  break;</b></p><p><b>  case 3: </b></p><p>  object.y=object.y<N-1?object.y+1:N-1; </p><p>  if(check2())object.y=b_y;

92、</p><p>  ObjectGroup(object); </p><p><b>  break;</b></p><p><b>  case 4: </b></p><p>  object.x=object.x>1?object.x-1:0; </p><

93、;p>  if(check1())object.x=b_x; ObjectGroup(object); </p><p><b>  break;</b></p><p><b>  case 5: </b></p><p>  object.y=object.y>1?object.y-1:0;</p&

94、gt;<p>  if(check2())object.y=b_y;</p><p>  ObjectGroup(object); </p><p><b>  break;</b></p><p><b>  }</b></p><p>  Show(object);</

95、p><p>  ReleaseDC(pDC); </p><p><b>  }</b></p><p>  void CGameDlg::ClearUp()//清空預(yù)備顯示 地方</p><p><b>  {</b></p><p>  CDC *pDC=GetDC

96、(); </p><p>  ASSERT(pDC!=NULL);</p><p>  COLORREF color=RGB(233,230,214);</p><p><b>  CPen pen;</b></p><p>  CBrush brush;</p><p>  pen.Creat

97、ePen(PS_SOLID,1,color);</p><p>  brush.CreateSolidBrush (color);</p><p>  pDC->SelectObject(pen);</p><p>  pDC->SelectObject(brush);</p><p>  pDC->Rectangle(J_

98、x,J_y,J_x+118,J_y+155);</p><p>  DeleteObject(brush);</p><p>  DeleteObject(pen);</p><p>  ReleaseDC(pDC);</p><p><b>  }</b></p><p><b>  

99、5.4收埋功能模塊</b></p><p>  此模塊用來(lái)收藏游戲界面。</p><p>  實(shí)現(xiàn)此功能相關(guān)代碼如下:</p><p>  void CGameDlg::OnTimer(UINT nIDEvent) //處理往下運(yùn)動(dòng)過(guò)程</p><p><b>  {</b></p><p

100、>  //===========================2往右收埋</p><p>  if(nIDEvent==2)</p><p><b>  {</b></p><p>  MoveWindow(p1.x,p1.y,m_W,m_H);</p><p><b>  p1.x+=10;</

101、b></p><p>  if(p1.x>desktopRect.Width())</p><p><b>  {</b></p><p>  KillTimer(2); </p><p><b>  Set=2;</b></p><p>  Si.left

102、=LW-T; </p><p>  Si.top=Sj.top;</p><p>  Si.right=LW; </p><p>  Si.bottom=Sj.bottom;</p><p><b>  }</b></p><p><b>  }</b><

103、;/p><p>  if(nIDEvent==6)</p><p><b>  {</b></p><p>  MoveWindow(p1.x,p1.y,m_W,m_H);</p><p><b>  p1.x-=10;</b></p><p>  if(p1.x<=pp.

104、x) </p><p>  KillTimer(6);</p><p><b>  }</b></p><p>  //=============================3往上收埋</p><p>  if(nIDEvent==3)</p><p><b>  {</b

105、></p><p>  MoveWindow(p1.x,p1.y,m_W,m_H);</p><p><b>  p1.y+=10;</b></p><p>  if(p1.y>desktopRect.Height())</p><p><b>  {</b></p>&l

106、t;p>  KillTimer(3); </p><p><b>  Set=3;</b></p><p>  Si.left=Sj.left; </p><p>  Si.top=LH-T;</p><p>  Si.right=Sj.right; </p><p>  Si.bot

107、tom=LH;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(nIDEvent==7)</p><p><b>  {</b></p><p>  MoveWindow(p1.x,p1.y,m_

108、W,m_H);</p><p><b>  p1.y-=10;</b></p><p>  if(p1.y<=pp.y) </p><p>  KillTimer(7);</p><p><b>  }</b></p><p>  //=================

109、========1往下收埋</p><p>  if(nIDEvent==1) </p><p><b>  {</b></p><p>  MoveWindow(p1.x,p1.y,m_W,m_H);</p><p><b>  p1.y-=10;</b></p><p&g

110、t;  if(p1.y+m_H+10<0) </p><p><b>  {</b></p><p>  KillTimer(1); </p><p><b>  Set=1;</b></p><p>  Si.left=Sj.left; </p><p>

111、<b>  Si.top=0;</b></p><p>  Si.right=Sj.right; </p><p>  Si.bottom=T;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(n

112、IDEvent==5)</p><p><b>  {</b></p><p>  MoveWindow(p1.x,p1.y,m_W,m_H);</p><p><b>  p1.y+=10;</b></p><p>  if(p1.y>=30)</p><p>  K

113、illTimer(5);</p><p><b>  }</b></p><p>  //=======================4往左收埋</p><p>  if(nIDEvent==4)</p><p><b>  {</b></p><p>  MoveWin

114、dow(p1.x,p1.y,m_W,m_H);</p><p><b>  p1.x-=10;</b></p><p>  if(p1.x+m_W+10<0)</p><p><b>  {</b></p><p>  KillTimer(4); </p><p&g

115、t;<b>  Set=4;</b></p><p>  Si.left=0; </p><p>  Si.top=Sj.top;</p><p>  Si.right=T; </p><p>  Si.bottom=Sj.bottom;</p><p><b> 

116、 }</b></p><p><b>  }</b></p><p>  if(nIDEvent==8)</p><p><b>  {</b></p><p>  MoveWindow(p1.x,p1.y,m_W,m_H);</p><p><b> 

117、 p1.x+=10;</b></p><p>  if(p1.x>=30) </p><p>  KillTimer(8);</p><p><b>  }</b></p><p><b>  5.5記分功能模塊</b></p><p>  此模塊用來(lái)記錄在

118、游戲過(guò)程中,玩家所得的分?jǐn)?shù)。并且一次性消去的方塊行數(shù)越多,那么得到的分?jǐn)?shù)也就越多。</p><p>  實(shí)現(xiàn)此功能相關(guān)代碼如下:</p><p>  void CGameDlg::KeepData()//保存放好所在位置</p><p><b>  {</b></p><p>  G[object.x+a0][o

119、bject.y+a1]=object.Type;</p><p>  G[object.x+a2][object.y+a3]=object.Type;</p><p>  G[object.x+a4][object.y+a5]=object.Type;</p><p>  G[object.x+a6][object.y+a7]=object.Type;</p&

120、gt;<p>  int i,j,k,p,q,o=0;</p><p>  for(i=0;i<M;i++) </p><p>  if(G[i][1]>0||G[i][0]>0)</p><p><b>  {</b></p><p><b>  Runing=0;</b

121、></p><p>  AfxMessageBox("游戲結(jié)束!");</p><p>  CGameDlg dlg; </p><p>  dlg.DoModal();</p><p><b>  return;</b></p><p><b>  }<

122、/b></p><p>  for( j = N-1; j >= 0; j--)</p><p><b>  {</b></p><p>  for(i=0,k=0;i<M;i++) </p><p>  if(G[i][j]>0) </p><p><b> 

123、 k++;</b></p><p><b>  if(k==M)</b></p><p><b>  {</b></p><p><b>  o++;</b></p><p>  for(p=j;p>=1;p--)</p><p> 

124、 for(q=0;q<M;q++)</p><p><b>  {</b></p><p>  G[q][p]=G[q][p-1];</p><p>  one(G[q][p],q,p);</p><p><b>  }</b></p><p>  for(q=0;q&

125、lt;M;q++) </p><p><b>  {</b></p><p>  G[q][0]=0;</p><p>  one(G[q][p],q,p);</p><p><b>  }</b></p><p><b>  j++;</b></

126、p><p>  Score+=100*o;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  5.6鼠標(biāo)控制功能模塊</p><p>  此模塊

127、也是本游戲的重點(diǎn),玩家通過(guò)鼠標(biāo)控制進(jìn)行游戲。向上是變換圖形,向下是很方塊快速下落,向左是使方塊向左移動(dòng),向右是很方塊向右移動(dòng)。</p><p>  程序的具體實(shí)現(xiàn)部分如程序清單如下所示。</p><p>  void CGameDlg::ChangeShape(OBJECT object)//轉(zhuǎn)組</p><p><b>  {</b><

128、;/p><p>  int z[4][2] = {0};</p><p>  int i,j,k;</p><p>  if(Runing==0)</p><p><b>  {</b></p><p>  OnDestroy();</p><p><b>  ret

129、urn;</b></p><p><b>  }</b></p><p><b>  do{</b></p><p>  switch(object.group)</p><p><b>  {</b></p><p>  case1:ZZ=

130、0;z[1][0]=1;z[1][1]=0;z[2][0]=0;z[2][1]=1;z[3][0]=1;z[3][1]=1;break;</p><p>  case 2:ZZ++; ZZ%=4;switch(ZZ)</p><p><b>  {</b></p><p>  case 0:z[1][0]=-1;z[1][1]=0; z[2]

131、[0]=1;z[2][1]=0;z[3][0]=-1;z[3][1]=-1;break;</p><p>  case 1:z[1][0]=0;z[1][1]=1; z[2][0]=0;z[2][1]=-1;z[3][0]=1;z[3][1]=-1;break;</p><p>  case 2:z[1][0]=-1;z[1][1]=0; z[2][0]=1;z[2][1]=0;z[3][

132、0]=1;z[3][1]=1;break;</p><p>  case 3:z[1][0]=0;z[1][1]=-1; z[2][0]=0;z[2][1]=1;z[3][0]=-1;z[3][1]=1;break;</p><p><b>  }</b></p><p><b>  break;</b></p>

133、;<p>  case 3:ZZ++; ZZ%=4;</p><p>  switch(ZZ)</p><p><b>  {</b></p><p>  case 0:z[1][0]=-1;z[1][1]=0; z[2][0]=1;z[2][1]=0;z[3][0]=1;z[3][1]=-1;break;</p>

134、<p>  case 1:z[1][0]=0;z[1][1]=1; z[2][0]=0;z[2][1]=-1;z[3][0]=1;z[3][1]=1;break;</p><p>  case 2:z[1][0]=-1;z[1][1]=0; z[2][0]=1;z[2][1]=0;z[3][0]=-1;z[3][1]=1;break;</p><p>  case 3:z[1]

135、[0]=0;z[1][1]=-1; z[2][0]=0;z[2][1]=1;z[3][0]=-1;z[3][1]=-1;break;</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case 4: ZZ++; ZZ%=2;</p><p&g

136、t;  switch(ZZ)</p><p><b>  {</b></p><p>  case 1:z[1][0]=0;z[1][1]=-1; z[2][0]=0;z[2][1]=2;z[3][0]=0;z[3][1]=1;break;</p><p>  case 0:z[1][0]=1;z[1][1]=0; z[2][0]=2;z[2

137、][1]=0;z[3][0]=-1;z[3][1]=0;break;</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 5: </b></p><p>  ZZ++; ZZ%=2;</p>

138、;<p>  switch(ZZ)</p><p><b>  {</b></p><p>  case 1:z[1][0]=0;z[1][1]=-1; z[2][0]=1;z[2][1]=0;z[3][0]=1;z[3][1]=1;break;</p><p><b>  case 0:</b></

139、p><p>  z[1][0]=0;z[1][1]=1; z[2][0]=-1;z[2][1]=1;z[3][0]=1;z[3][1]=0;break;</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case 6:ZZ++; ZZ%=2;&

140、lt;/p><p>  switch(ZZ)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  z[1][0]=0;z[1][1]=1; z[2][0]=1;z[2][1]=0;z[3][0]=1;z[3][1]=-1;break;<

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論