俄羅斯方塊課程設計_第1頁
已閱讀1頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  計算機科學與技術學部</p><p><b>  面向對象課程設計</b></p><p>  題 目 俄 羅 斯 方 塊 </p><p>  學 部 計算機科學與技術 </p><p>  班 級 計 科 1003班

2、</p><p>  指 導 教 師 </p><p>  姓 名 </p><p>  學 號 </p><p><b>  2011年6月</b></p

3、><p><b>  摘 要</b></p><p>  俄羅斯方塊上手極其簡單,但是要熟練地掌握其中的操作與擺放技巧,難度卻不低。作為家喻戶曉老少皆宜的大眾游戲,其普及程度可以說是史上任何一款游戲都無法相比的。</p><p>  該俄羅斯方塊程序采用了面向對象編程語言,我們運用了很少有關計算機程序知識,完成游戲的需求來實了游戲的一些簡單的功能,

4、如不同樣式的俄羅斯方塊的隨機產(chǎn)生、俄羅斯方塊的鍵盤操作移動功能、方塊滿行消行功能、方塊到頂游戲結束功能等。該課程設計中詳細闡述了程序的設計目標、總體架構及程序的詳細設計。</p><p>  俄羅斯方塊這款游戲,要通過設計者對界面的調色設置適當,方塊下落也要設置合理,因些我們這款游戲置了良好的用戶界面設計,實現(xiàn)方塊下落時,可通過鍵盤方向鍵(上、下、左、右鍵)對該方塊進行向上(變行),向下(加速)、向左、向右移動。

5、隨機給出不同的形狀(長條形、Z字形、田字形、7字形等)下落填充給定的區(qū)域,若填滿一條便消掉,記分,當達到一定的分數(shù)時,過關,一共設置十關,每關方塊下落的速度不同,游戲中先結束的一方為本局輸家,十關過后,勝出局數(shù)多的為贏家,并且用戶通過界面可以看到下一個下落的方塊和下下一個下落的方塊,這樣給用戶降低了難度。從而讓廣大朋友越來越喜愛這款游戲。</p><p>  用戶啟動游戲后,即進入游戲主畫面,用戶按下[start

6、]按鈕后,就可以開始玩游戲了,當用戶想暫停時,再次按一下[stop]按鈕,游戲就暫停了,并給予提示,在暫停的情況下再按[stop]按鈕,游戲繼續(xù)運行。任何時候按[end]按鈕,游戲就會結束,并且繼續(xù)開始游戲。</p><p>  由于設計者水平有限,不當之處在所難免,如有好的建議懇請讀者提出并加以指正。</p><p>  關鍵詞:俄羅斯方塊;交互動態(tài)更新;計時器;</p>

7、<p><b>  課程設計任務分配表</b></p><p><b>  表1</b></p><p><b>  表2</b></p><p>  相關編程知識的課程設計</p><p>  關鍵變量定義及作用:</p><p>  int

8、 m_GameEnd=1;//游戲是否結束</p><p>  int Level=1;//游戲過了幾關了</p><p>  int Score=0;//玩游戲中你所得到的分數(shù)</p><p>  char m_Game_Pouse=TRUE;//游戲是否暫停</p><p>  char m_xialuo=true;//初始下落變量<

9、;/p><p>  int m_Sudu=200;//初始計時器時間間隔</p><p>  實現(xiàn)程序相關知識的引用:</p><p>  CBrush brush(crseg);//畫刷的應用</p><p>  SetTimer(1,m_Sudu,NULL);// 安裝計時器</p><p>  BackGrounds

10、et(pDC);//描繪游戲背景</p><p>  m_NextImage(pDC,m_OldNextpoint,m_NextShape);//畫出下一個方塊</p><p>  m_NextImage(pDC,m_Nextpoint,m_Next2Shape);//畫出下下一個方塊</p><p>  m_DrawImage(pDC,m_pcurpos,m_Cu

11、rShape);//畫出當前操作的方塊</p><p>  pDC -> TextOut(310, 120,lis);//畫一條豎線</p><p>  pDC->MoveTo(300,0);//移到某一個點</p><p>  pDC->LineTo(300,500);//畫出剛才MoveTo函數(shù)指向的那一個點的直線</p><

12、;p>  COLORREF wins=RGB(0,0,0);//背景顏色的設置</p><p>  CPen pen(PS_INSIDEFRAME,1,line);//畫筆的操作</p><p>  CancelRangle(pDC);//判斷是否可以消格,是否升級。</p><p><b>  目 錄</b></p>&

13、lt;p>  第1章 前 言1</p><p><b>  1.1簡介說明1</b></p><p>  1.1.1 研究背景1</p><p>  1.1.2 游戲適合對象及注意事項1</p><p>  1.2 設計的目的及工作原理1</p><p>  1.2.1工作原理

14、1</p><p>  1.2.2設計的目的1</p><p>  1.3 設計內容2</p><p>  第2章 游戲功能分析4</p><p>  2.1 游戲總體功能分析4</p><p>  2.1.1描繪俄羅斯方塊功能和方塊預覽功能4</p><p>  2.1.2方塊自由

15、下落及判斷功能和描繪背景方塊堆積狀況的功能6</p><p>  2.1.3按鍵操作響應功能和消行加分升級功能8</p><p>  2.1.4背景設置和游戲控制功能9</p><p>  第3章 系統(tǒng)測試11</p><p>  3.1 程序運行測試11</p><p>  3.1.1程序主界面圖11&

16、lt;/p><p>  3.1.2 游戲開始的界面11</p><p>  3.1.3游戲暫停的界面12</p><p>  3.1.4 游戲停止的界面12</p><p>  3.1.5用戶過了通關后運行的界面:13</p><p>  3.1.6方塊到頂不能運行造成游戲結束的界面13</p>&

17、lt;p>  3.1.7 方塊進行變形14</p><p>  3.2 程序流程圖14</p><p>  3.2.1游戲開始時流程圖15</p><p>  3.2.2消格加分升級模塊運行流程圖16</p><p><b>  第4章 總結17</b></p><p><b

18、>  參考文獻19</b></p><p><b>  第1章 前 言</b></p><p><b>  1.1簡介說明</b></p><p>  1.1.1 研究背景</p><p>  隨著社會的發(fā)展,人們智慧的需要,現(xiàn)在益智游戲也越來越多。為了滿足廣人們的需要,我們研

19、發(fā)了一款新的俄羅斯方塊。俄羅斯方塊是最經(jīng)典的益智休閑游戲之一,這個超級俄羅斯方塊是一個演化版本,不同的地方就在于游戲中的方塊不是慢慢落下來,而是可以在空間內任意擺放,雖然是小小的變化,在玩法技巧上確大有不同,而且難度也沒有因此降低,玩起來別有另一番樂趣。</p><p>  1.1.2 游戲適合對象及注意事項</p><p>  適合于那些青少年、兒童及老人玩耍,對于那些成年人來說,這個游

20、戲太小兒科了,青少年和兒童玩??梢栽鲩L他們的智力,老人玩??梢允顾麄冞h離老人憂郁癥及一些老人易得的病癥。但值得注意的是,請選擇本游戲的廣大玩家,請不要對本游戲著迷,要適當?shù)淖⒁庑菹?,對本游戲上癮有害健康。 </p><p>  1.2 設計的目的及工作原理</p><p><b>  1.2.1工作原理</b></p><p>  點擊“sta

21、rt”用戶就可以看到隨機而形成的方塊會根據(jù)設計速度,用戶可以通過對方塊進行控制,同是可以按“end”按鈕停止,按“stop”按鈕,可以進行暫?;蜷_始,并且同時當分值達到設置的分數(shù)就可以進入到下一關,如果方塊鋪滿整個界面,游戲結束。</p><p>  1.2.2設計的目的</p><p>  為了人們休閑娛樂的需要,并且人們更加注重那些游戲是否可以益智,并且在人煩惱的時候可以幫助人解除疲勞

22、,這樣給了人們一個比較好的放松環(huán)境。從而我們從這次課程設計使得課堂教學與實驗實踐之間關系更為密切,讓我們認識到必須重視實踐環(huán)節(jié),多讀程序,多編寫程序,多上機實踐.進一步培養(yǎng)結構化程序設計的思想,加深對高級語言要素和控制結構的理解,針對面向對象程序設計中的重點和難點內容進行訓練,獨立完成有一定的工作量的程序設計任務,同時強調好的程序風格。</p><p><b>  1.3 設計內容</b>&

23、lt;/p><p>  俄羅斯方塊中具體實現(xiàn)的功能包括:顯示當前方塊模塊、方塊預覽模塊、游戲背景設置模塊、消格計分升級模塊、計時器模塊、按鍵模塊和工具及菜單模塊,其中所有功能集成十個主要的函數(shù)。</p><p>  顯示當前方塊模塊的主要函數(shù):m_DrawImage,</p><p>  方塊預覽模塊的主要函數(shù): m_NextImage,</p>&

24、lt;p>  游戲背景設置模塊的主要函數(shù):BackGroundset,</p><p>  消格計分升級模塊的主要函數(shù):OnTimer、OnInitialUpdate,</p><p>  按鍵模塊的主要函數(shù): OnKeyDown、OnKeyUp,</p><p>  工具及菜單模塊的主要函數(shù): OnGameEnd、OnGamePouse、OnG

25、ameStart及OnAppAbout。</p><p>  當用戶啟動該程序則會通過使用VC++文件操作函數(shù)調用就立即生成一個重繪線程,該線程每隔1s繪制一次屏幕。當然,重繪時有一些優(yōu)化措施,并不是屏幕上所有的像素都需要重繪,而是有所選擇,比如游戲畫布上那些已經(jīng)固定下來的下墜物(下墜物一共有7種,由4個小磚塊組成,每種下墜物顏色固定,可以上下左右旋轉)就不需重繪。游戲畫布是一個CommandListene可以接

26、受用戶鍵盤命令,控制下墜物的左移,右移,下移,旋轉動作。整個游戲的流程控制體現(xiàn)在游戲畫布函數(shù)的BackGroundset方法里。BackGroundset根據(jù)當前的游戲狀態(tài),繪制出當時的游戲畫面。繪制出游戲背景,單擊開始按鈕通過調用OnGameStart后通過m_DrawImage并且繪制出一個方塊往下掉,如果到底后,即滿足條件就會結束往下掉式,則把下墜物固定下來,同時檢查游戲畫布上下墜物當前行下面的所有行,看是否需要進行行刪除動作,如

27、果需要行刪除,則清除游戲地圖上被刪行的數(shù)據(jù),再把被刪行繪制成背景色。然后初始化一個新的下墜物,繪制這個新的下墜物。就這樣慢慢的累計通過m_NextImage函數(shù)來顯示下一個掉下來什么方塊,如果全部填滿則通過</p><p>  當你要進行方塊向左、向右、向下及變形時通過調用OnKeyDown、OnKeyUp這兩個函數(shù)來達到所要的效果。OnKeyDown函數(shù)采用的是switch語句來判斷從鍵盤上按下的是上、下、左、

28、右鍵,如果按下的是“上”鍵表示對該方塊進行變形,并且在變形的過程中,當靠近邊界地區(qū)時,要進行判斷,如果是長條時,則要在離邊界處的第三個地方才可以進行變形,其他的方塊,可以在離邊界處的第二個處進行變行;按下的是“下”鍵表示對該方塊加速往下掉;按下的是“左”鍵表示對該方塊是往左邊移;但不能移不游戲界面,按下的是“右”鍵表示是對該方塊進行右移,達到你想要的效果。然而OnKeyUp函數(shù)是與OnKeyDown函數(shù)相反,對鍵盤所輸入的數(shù)進行釋放。&

29、lt;/p><p>  在中途要暫停可通OnGamePouse來實現(xiàn),首先判斷該游已經(jīng)開始沒,如果開始了,就對暫停有效,否則不運行,暫停是BackGroundset執(zhí)行的時候無需真正執(zhí)行重繪動作,并對當前方塊不再下落懸掛起來,并且給出提示對話框,提醒該游戲已暫停,使整個畫面處于不運行狀態(tài),直到再按一下“stop”鍵時,整個游戲界面又開始重新運行。</p><p>  要結束游戲通過調用OnGa

30、meEnd來完成,歡迎畫面和OnGameEnd畫面的繪制相當簡單??煞謨煞N情況:一種是全部方塊全部堆滿時,讓BackGroundset執(zhí)行的時候無需真正執(zhí)行重繪動作。對于游戲處于運行狀態(tài)的畫面的繪制,則需要在下墜物的當前位置,繪制下墜物。在繪制下墜物之前,判斷下墜物是否還能下墜,如果能下墜的話,就讓它下落一格,再進行繪制,如果下墜物已無法下墜,則判斷游戲是否處于“結束”狀態(tài),如果是處于“結束”狀態(tài)的話,則設置游戲狀態(tài)為“結束”狀態(tài),這樣

31、畫布在下一次重繪時就繪出“結束”的畫面.如果游戲不是處于“結束”狀態(tài);另外一種是用戶自已不想玩游戲,通過“end”按鈕來完成,當你下此按扭時,系統(tǒng)的BackGroundset函數(shù)直接為你初始化背景,回到剛開始啟運游戲的狀態(tài),當你按下“start”按鈕時,游戲進入玩耍狀態(tài)。</p><p>  如果有一些對游戲不懂的問題可通過幫助來解除你的疑惑該按扭通過調用OnAppAbout函數(shù),解決你要解決的問題,就這樣就完成

32、了你對游戲的操作。</p><p>  第2章 游戲功能分析</p><p>  2.1 游戲總體功能分析</p><p><b>  功能需求:</b></p><p>  描繪俄羅斯方塊功能、描繪背景方塊堆積狀況的功能、方塊預覽功能、消行加分升級功能、按鍵操作響應功能、游戲控制功能,方塊自由下落及判斷功能;<

33、/p><p><b>  游戲代碼模版設計:</b></p><p>  該游戲主要是通過十個主要的函數(shù)來實現(xiàn)系統(tǒng)的所有功能,這十個函數(shù)的功能包括顯示當前方塊模塊、方塊預覽模塊、游戲背景設置模塊、消格計分升級模塊、計時器模塊、按鍵模塊和工具及菜單模塊。該程序所有的函數(shù)都是用面向對象語言實現(xiàn)的</p><p>  2.1.1描繪俄羅斯方塊功能和方塊預

34、覽功能</p><p>  描繪俄羅斯方塊功能對應的是顯示當前方塊模塊</p><p>  每一個俄羅斯方塊由四個小正方形組成的</p><p>  而每一個小正方形是用畫刷畫出來的,以下代碼就是定義畫刷的功能:</p><p>  GetClientRect(FC);</p><p>  COLORREF crseg

35、=RGB(0,250,0);//定義畫刷的顏色是嫩綠色</p><p>  CBrush brush(crseg);</p><p>  CBrush *oldbrush=pDC->SelectObject(&brush);</p><p>  只要知道小方塊的一個坐標點和他的邊長(本程序中用size表示,以增強代碼可讀性),就能將小方塊通過畫刷把它畫

36、出來。要畫出俄羅斯方塊,就要確定每個小正方形的一個坐標,那么每個方塊就要確定4個坐標,一共8個數(shù)據(jù),在此程序中,用了一個數(shù)據(jù)類型為CPoint的一位數(shù)組PointArray[4]來保存這4個坐標,方塊類型一共有7中,一共19種不同的形狀如下圖:</p><p>  為了便于實現(xiàn)方塊類型的變換,在此程序中用到如下圖的計算每種方塊的4個坐標的公式:</p><p>  PointArray[0

37、].x=point.x+Shape[shape][0]*size;</p><p>  PointArray[0].y=point.y+Shape[shape][1]*size; </p><p>  PointArray[1].x=point.x+Shape[shape][2]*size;</p><p>  PointArray[1].y=point.y

38、+Shape[shape][3]*size+size;</p><p>  PointArray[2].x=point.x+Shape[shape][4]*size+size;</p><p>  PointArray[2].y=point.y+Shape[shape][5]*size; </p><p>  PointArray[3].x=point

39、.x+Shape[shape][6]*size+size;</p><p>  PointArray[3].y=point.y+Shape[shape][7]*size+size;</p><p>  注:這段代碼是void CTextView::m_DrawImage(CDC *pDC ,CPoint point, int shape)中的</p><p>  以

40、上代碼中的Shape二維數(shù)組,它的數(shù)據(jù)類型為int ,大小為Shape[19][8];</p><p>  通過改變Shape數(shù)組的一維下標,實現(xiàn)方塊形狀的改變。</p><p>  Point的數(shù)據(jù)類型是CPoint,用來確定方塊顯示在背景的位置,在調用函數(shù)時,通過改變實參,可在游戲區(qū)右邊實現(xiàn)方塊預覽功能。</p><p>  通過逆推,計算將Shape[19][

41、8]在視圖類的構造函數(shù)中初始化如下:</p><p>  Shape1[19][8]={{0,0,0,0,0,0,0,0},{0,0,0,0,-1,2,-1,2},{0,0,-1,-1,0,0,1,-1},</p><p>  {0,0,0,0,0,2,0,0},{2,0,0,0,0,0,0,0},{0,2,0,0,0,0,0,0},{0,0,2,0,0,0,0,0},</p>

42、<p>  {0,0,0,0,-1,2,0,1},{0,0,0,0,0,0,1,-1},{0,0,1,1,0,0,0,0},{-1,1,0,0,0,0,0,0},</p><p>  {2,0,1,1,0,0,0,0},{0,0,2,-1,0,0,1,0},{0,0,0,0,-1,-1,0,0},{0,0,2,-1,0,0,-1,-2},</p><p>  {0,0,0,0

43、,-1,2,0,0},{0,0,0,0,0,0,-2,-1},{0,0,1,-2,0,0,0,0},{0,0,0,0,-2,1,0,0} };//初始化方塊形狀數(shù)組</p><p>  預覽區(qū)如何顯示下一塊及下下一塊方快呢?,此程序就是用通過多次賦值,是數(shù)據(jù)后移:</p><p>  _OldNextShape=m_NextShape;</p><p>  m_Cu

44、rShape=m_NextShape;</p><p>  m_NextShape=m_Next2Shape;</p><p>  m_Next2Shape=rand()%19;</p><p>  再通過2次調用m_NextImage(CDC *pDC, CPoint point, int shape)來實現(xiàn)預覽功能:</p><p>  

45、OnDraw(CDC* pDC)</p><p> ?。鸰NextImage(pDC,m_OldNextpoint,m_NextShape);//畫出下一個方塊</p><p>  m_NextImage(pDC,m_Nextpoint,m_Next2Shape);//畫出下下一個方塊}</p><p>  2.1.2方塊自由下落及判斷功能和描繪背景方塊堆積狀況的功

46、能</p><p>  方塊自由下落及判斷功能對應的是計時器模塊(OnTimer(UINT nIDEvent)函數(shù))</p><p><b>  其核心代碼如下:</b></p><p>  for(i=0;i<4;i++)</p><p>  {//判斷是否觸底,及當前方塊下是否已經(jīng)有方塊</p>

47、<p>  if(PointArray[i].y==24*size || Map[PointArray[i].x/size][PointArray[i].y/size+1]==1)</p><p>  {for( j=0;j<4;j++)</p><p>  {Map[PointArray[j].x/size][PointArray[j].y/size]=1;</p&

48、gt;<p>  if(Map[PointArray[j].x/size][1]==1)</p><p>  {m_GameEnd=1;Level=1;</p><p>  Score=0;m_Sudu=200;</p><p><b>  break;</b></p><p><b>  }

49、</b></p><p>  m_touchBottom=1;//用來表示觸底</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(m_GameEn

50、d==0&&m_touchBottom==1)//觸底時且游戲沒結束進行變量更新操作</p><p><b>  {</b></p><p>  m_pcurpos.x=120;m_pcurpos.y=0;</p><p>  m_OldNextShape=m_NextShape;</p><p>  m

51、_CurShape=m_NextShape;</p><p>  m_NextShape=m_Next2Shape;</p><p>  m_Next2Shape=rand()%19;</p><p>  m_touchBottom=0;//賦值操作完畢后,讓m_touchBottom恢復初始值,重新判斷</p><p><b> 

52、 }</b></p><p>  if(i>=4&&m_Game_Pouse)</p><p>  {m_pcurpos.y+=size; }//通過對當前方塊的縱坐標做累加操作實現(xiàn)方塊下落</p><p>  Invalidate(FALSE);更新數(shù)據(jù)</p><p>  需要說明的是:游戲區(qū)域是25行1

53、5列;(怎么在游戲區(qū)描繪已下降的俄羅斯方塊呢?)在程序定義了一個數(shù)組int Map[15][25]用來記錄游戲區(qū)方塊分布的狀況</p><p><b>  初始值都為0。</b></p><p>  通過循環(huán),判斷,描繪背景方塊堆積狀況,代碼如下:</p><p>  for(i=0;i<15;i++)//畫方格圖Map[27][41]&

54、lt;/p><p><b>  {</b></p><p>  for( j=0;j<25;j++)</p><p><b>  {</b></p><p>  if(Map[i][j]==1)</p><p>  pDC->Rectangle(i*size,j*si

55、ze,(i+1)*size,(j+1)*size);</p><p>  } 注:代碼在m_DrawImage函數(shù)中</p><p><b>  }</b></p><p>  2.1.3按鍵操作響應功能和消行加分升級功能</p><p>  按鍵響應功能包括:方塊的左移、右移、變形、下降加快。</p>

56、<p>  它對應的是按鍵模塊。</p><p>  移動也就是使方塊每個坐標按需求一致變動,但要判讀是否出界,被已有方塊阻擋,舉向左移的代碼如下:</p><p>  for( i=0;i<4;i++)</p><p>  {if(PointArray[i].x<=0||Map[PointArray[i].x/size-1][Poi

57、ntArray[i].y/size]==1)</p><p><b>  a1=1;}</b></p><p><b>  if(a1==0)</b></p><p>  m_pcurpos.x-=size;</p><p>  else m_pcurpos.x=m_pcurpos.x; &l

58、t;/p><p>  右移類同,下移加速就更簡單了。</p><p>  變形:是通過改變正在傳遞的m_CurShape的值,前面講到過方塊有7種類型,為了實現(xiàn)變形,將每種類型的不同形狀放在數(shù)組相鄰的位置(這是本程序的有一大亮點)在變形的同時,要判斷能不能變形。</p><p>  橫豎狀變化實現(xiàn)代碼如下:</p><p>  if(m_CurS

59、hape>=1&&m_CurShape<=2)</p><p><b>  {</b></p><p>  for(i=0;i<4;i++)</p><p>  {if(PointArray[i].x>240)</p><p><b>  j=1;}</b>&

60、lt;/p><p><b>  if(!j)</b></p><p><b>  {</b></p><p>  if(m_CurShape==2)</p><p>  m_CurShape=1;//形狀變?yōu)闄M</p><p>  elsem_CurShape+=1;}<

61、;/p><p><b>  }</b></p><p>  至于消行加分升級功能,他對應與消格計分升級模塊</p><p>  消行的核心代碼如下:</p><p>  CPen pen(PS_INSIDEFRAME,2,RGB(0,0,0));</p><p>  CBrush brush1(RG

62、B(0,0,0));//創(chuàng)建背景色筆刷</p><p>  CBrush *oldbrush1=pDC->SelectObject(&brush1); </p><p>  pDC->SelectObject(&pen);</p><p><b>  int k;</b></p><p>  

63、for(k=i;k>=1;k--)</p><p><b>  {</b></p><p>  for(int m=0;m<15;m++)</p><p><b>  {</b></p><p>  Map[m][k]=0;</p><p>  Map[m][k]

64、=Map[m][k-1];//下移堆積的方塊i</p><p>  pDC->Rectangle(m*size,k*size,m*size+size,k*size+size);</p><p>  } </p><p><b>  }</b></p><p>  2.1

65、.4背景設置和游戲控制功能</p><p>  此游戲背景很簡單,在此就不多說了</p><p>  游戲背景設置模塊首先獲得當前窗口大小,然后繪制區(qū)域大小,線、畫刷和筆,通過PDC指針來指向繪制區(qū)域大小、輸出文本、顏色背景、繪制豎線得到當前的背景界面。</p><p>  游戲控制功能對應于工具及菜單模塊</p><p>  工具及菜單模塊

66、主要通過四個函數(shù)來實現(xiàn)的:</p><p>  OnGameEnd 函數(shù)首先進行該游戲是否暫停,如果沒有,則直接結束該游戲,如果暫停,則會出現(xiàn)一個對話框,進行提示,關閉該對話框就可以結束游戲了。OnGamePouse 函數(shù)是對該游戲暫停,當你按下Stop按扭時,該游戲進行暫停,如果已經(jīng)暫停了,再按一次就可以開始游戲了。</p><p>  OnGameStart 函數(shù)是對該游戲進行

67、開始,首先進行判斷是否暫停,如果沒有暫停,游戲又進行判斷是否結束,如果是表示已結束,又進行賦值,對游戲進行初始狀態(tài);如果暫停,進行恢復開始,并繼續(xù)執(zhí)行游戲。</p><p>  OnAppAbout 函數(shù)是由于讀者剛開始對游戲的不了解,該函數(shù)主要是幫助讀者解決疑難問題的。</p><p><b>  第3章 系統(tǒng)測試</b></p><p>

68、;  3.1 程序運行測試</p><p>  3.1.1程序主界面圖</p><p>  當用戶運行程序運行時將會運行如下界面:</p><p>  圖3.1 游戲運行的主界面</p><p>  3.1.2 游戲開始的界面</p><p>  當單擊“開始”按扭,顯示如下界面:</p><p&g

69、t;<b>  圖3.2 游戲開始</b></p><p>  3.1.3游戲暫停的界面</p><p>  當單擊“暫?!卑磁?,顯示如下界面: </p><p>  圖3.3按下“暫?!?lt;/p><p>  3.1.4 游戲停止的界面</p><p>  當單擊“停止”按扭,顯示如下界面:<

70、;/p><p>  圖3.4 在運行中 圖3.5 按下“停止”按鈕</p><p>  3.1.5用戶過了通關后運行的界面:</p><p>  當比較聰明的用戶通過自已各個方面的能力玩過通關的界面:</p><p><b>  圖3.6過通關</b></p><p> 

71、 3.1.6方塊到頂不能運行造成游戲結束的界面</p><p>  因用戶操作失誤造成方塊到頂造成游戲結束的界面:</p><p>  圖3.7 到頂結束游戲 圖3.8 重新開始游戲</p><p>  3.1.7 方塊進行變形</p><p>  拼湊的需要用戶需將方塊任意變形的界面:</p>&l

72、t;p>  圖3.9變形之前 圖3.10變形之后</p><p><b>  3.2 程序流程圖</b></p><p>  3.2.1游戲開始時流程圖</p><p>  m_GameEnd=1程序運行:</p><p>  圖3.11整個程序的運行過程</p>

73、<p>  3.2.2消格加分升級模塊運行流程圖</p><p>  圖3.12 消格加分升級流程圖</p><p><b>  第4章 總結</b></p><p>  這本次課程設計剛開始時,遇到的問題一大堆,開始我還想自己憑空開發(fā)一個俄羅斯方塊游戲,幾個星期下來沒有一點進展,我還是一頭霧水,后來我想同學說起了此事,同學對我說

74、了一句關鍵的話,像北極星一樣給我們指明了課程設計的方向,他的這句話就是:“你以為你神啊,不看別人的代碼,怎么知道這東西怎么來的,先要看別人是怎么做出來的,然后才知道怎么去做”。這話雖然有點長,但一針見血,讓我如夢初醒,很快,在余下的一個星期,我從網(wǎng)上下載了很多資料,剛開始,看別人的代碼,很難受,而且,不知所云,一天下來,感覺沒什么收獲,但第二天,我還在繼續(xù)看,終于,量變產(chǎn)生質變,我看懂了別人的核心代碼,當晚11:00,我開始著手編自己的

75、代碼,從此一發(fā)不可收拾,在后來陸陸續(xù)續(xù)遇到很多問題,通過與合作伙伴以及同班同學討論,使代碼一步步完善?;仡櫰鸫舜螁纹瑱C課程設計,至今我仍感慨頗多,的確,從選題到定稿,從理論到實踐,在整整兩星期的日子里,可以說得是苦多于甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是</p><p>

76、;  雖然這只是一個簡單游戲程序,這個課程設計讓深入了解了面向對象程序的基本流程,從而也更加深入了面向對象程序的學習,在這次課程設計中遇上了很多問題,例如:畫筆、畫刷及DDX/DDV技術的失誤操作,通過這一次實踐,更加讓我明白動手是多么的重要,不要一味聽老師講的那些知識,那一點點知識永遠不能滿足我們實踐的需要,要通過平時的自學和知識的積累,這樣才能讓自已寫起程序來非常的熟練,非常的快。</p><p>  在這次

77、課程設計中,我發(fā)現(xiàn)團隊力量是很重要的,一個人的力量永遠是不夠的,當你走向社會,一個好的團隊對你來說非常重要,這個團隊決定你的生命的寬度。在這次程序課程設計雖然我們發(fā)生了很多不快的回憶,我的隊友在我不自覺的時侯監(jiān)督我做事,雖然當時有點反抗,但是現(xiàn)在想起來,感覺很搞笑。非常感謝我的隊友,讓我懂得如何去完成任務。同時也要感謝老師給我們的指導,讓我們學會怎么獨立去完成代碼,怎么看懂別人的代碼和完善代碼。</p><p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論