版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 課程設計 </b></p><p> 題 目 俄羅斯方塊 </p><p> 英文題目 Russian square </p><p> 院 系 信息科學與技術學院 </p><p> 專 業(yè)
2、 計算機科學與技術 </p><p> 姓 名 xxx </p><p> 班級學號 A091217 </p><p> 指導教師 xxx </p><p><b> 二○一
3、二年五月</b></p><p><b> 摘 要</b></p><p> 教學和科研是各大專院校的兩項中心工作,教學質量決定了培養(yǎng)人才質量的高低,科研水平是高校綜合實力的重要標志。近年來,各大中專院校越來越重視自身的科研工作。俄羅斯方塊(Tetris, 俄文:Тетрис)是一款風靡全球的電視游戲機和掌上游戲機游戲,俄羅斯方塊的基本規(guī)則是移動、旋
4、轉和擺放游戲自動輸出的各種方塊,使之排列成完整的一行或多行并且消除得分。由于上手簡單、老少皆宜,從而家喻戶曉,風靡世界。</p><p> 關鍵詞:俄羅斯方塊,小游戲</p><p><b> 目 錄</b></p><p><b> 摘 要I</b></p><p><b>
5、 目 錄II</b></p><p><b> 1 緒論1</b></p><p><b> 1.1 軟件1</b></p><p> 1.2 軟件工程1</p><p> 1.3 軟件開發(fā)方法1</p><p> 1.4 C語言
6、特點1</p><p> 1.5 章節(jié)小結2</p><p><b> 2 需求分析2</b></p><p> 2.1 分析案例2</p><p> 2.2 系統(tǒng)分析3</p><p> 2.2.1 系統(tǒng)流程圖3</p><p> 2.2
7、.2 系統(tǒng)頂層數據流圖4</p><p> 2.2.3 系統(tǒng)的數據字典的描述4</p><p> 2.3 對所選項目進行分析5</p><p> 2.3.1 經濟、技術和操作方面的分析5</p><p> 2.3.2 對項目中的問題和解決方案5</p><p> 2.3.3 結論6&l
8、t;/p><p> 2.4 章節(jié)小結6</p><p><b> 3 系統(tǒng)設計6</b></p><p> 3.1 總體設計6</p><p> 3.2 詳細設計7</p><p> 3.2.1 主界面和出錯設計7</p><p> 3.2.2
9、 程序流程圖完成模塊詳細設計8</p><p><b> 4 編碼實現(xiàn)9</b></p><p> 4.1 主控函數9</p><p> 4.2 二級函數10</p><p> 4.3 各函數的代碼12</p><p> 5 系統(tǒng)測試14</p>&l
10、t;p> 5.1 代碼分析14</p><p> 5.2 白盒測試用例15</p><p> 5.3 黑盒測試用例16</p><p> 5.4 評價測試結果17</p><p> 6 總結與展望18</p><p> 6.1 總結18</p><p>
11、 6.2 展望18</p><p><b> 致 謝20</b></p><p><b> 參考文獻21</b></p><p><b> 1 緒論</b></p><p><b> 1.1 軟件</b></p>&l
12、t;p> 軟件是用戶與硬件之間的接口界面。是一系列按照特定順序組織的計算機數據和指令的集合。一般來講軟件被劃分為編程語言、系統(tǒng)軟件、應用軟件和介于這兩者之間的中間件。</p><p><b> 1.2 軟件工程</b></p><p> 軟件工程是指導計算機軟件開發(fā)和維護的一門工程科學。采用工程的概念、原理、技術和方法來開發(fā)與維護軟件,把經過時間考驗而證
13、明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經濟地開發(fā)出高質量的軟件并有效地維護它。</p><p> 1.3 軟件開發(fā)方法</p><p> 軟件開發(fā)是為了運用方法而提供的自動的或半自動的軟件工程支撐環(huán)境,完成軟件開發(fā)的各項技術方法,獲得高質量的軟件所需要完成的一系列任務,具有傳統(tǒng)的開發(fā)方法和面向數據結構的開發(fā)方法、及面向對象方法的開發(fā)方法。</p>&
14、lt;p> 1.4 C語言特點</p><p> C語言是結構化語言,及其數據類型豐富,簡潔緊湊,靈活方便,運算符豐富;C語法限制不太嚴格,程序設計自由度大;C語言允許直接訪問物理地址,可以直接對硬件進行操作;C語言程序生成代碼質量高,程序執(zhí)行效率高;C語言適用范圍大,可移植性好。</p><p><b> 1.5 章節(jié)小結</b></p>
15、<p> 本章只要對軟件及軟件工程的原理進行定義,力求使讀者對軟件工程的基本原理和方法有概括的本質的認識。現(xiàn)在科學技術將人類帶入了信息社會,計算機軟件扮演著十分重要的角色,軟件工程已成為信息社會高技術競爭的關鍵領域之一,而“軟件工程”已成為高等學校計算機教育計劃中的一門核心課程。</p><p> 軟件開發(fā)方法具有傳統(tǒng)的開發(fā)方法和面向數據結構的開發(fā)方法、及面向對象方法的開發(fā)方法。</p&g
16、t;<p><b> 2 需求分析</b></p><p> 俄羅斯方塊游戲是一款經典的小游戲,游戲的過程是需要玩家將不斷下落的的各種形狀的方塊移動,翻轉,如果某一行滿了,就自動消行,積累分數,而當窗口中無法再容納下落的方塊時,就宣告游戲結束。</p><p><b> 2.1 分析案例</b></p>&l
17、t;p> 1、方塊、方塊移動、變形</p><p> 在整個俄羅斯方塊游戲中,方塊的設計是核心,本系統(tǒng)設計了一個方塊類:用來生成方塊以及實現(xiàn)塊的左移、右移、快速、下降、變形、基本游戲元素。</p><p><b> 2、自動升級</b></p><p> 當分數積累到一定大小時,系統(tǒng)將自動為玩家提高難度,本系統(tǒng)設置沒消10行方塊(
18、測試所用)就增加一級難度。</p><p><b> 3、游戲音樂</b></p><p> 為了增加游戲娛樂性,本游戲增加音樂功能,游戲開始音樂自動播放,游戲過程中都有音樂提示,如消行等,游戲結束同樣有音樂提示。</p><p><b> 2.2 系統(tǒng)分析</b></p><p> 2.
19、2.1 系統(tǒng)流程圖</p><p> 圖2-1 系統(tǒng)流程圖</p><p> 2.2.2 系統(tǒng)頂層數據流圖</p><p> 圖2-2 系統(tǒng)頂層數據流圖</p><p> 2.2.3 系統(tǒng)的數據字典的描述</p><p><b> 圖2-3 數據字典</b></p>
20、<p> 2.3 對所選項目進行分析</p><p> 2.3.1 經濟、技術和操作方面的分析</p><p> 經濟可行性:由于本游戲的主要背景是課程設計,不注重直接的經濟效益和其中的發(fā)展方向,只在注重自身水平和能力的提高,對自身的經濟要求不高,所以不用考慮到經濟問題。</p><p> 技術可行性:本游戲使用的編程語言有C++,至于選擇C+
21、+作為編程語言,這考慮到編寫程序的困難度和對語言的了解程度。需要對變量定義,界面、游戲初始化,及游戲過程的操作處理。</p><p> 操作可行性:本游戲采用純鍵盤輸入操作。</p><p> 2.3.2 對項目中的問題和解決方案</p><p> 系統(tǒng)開發(fā)的總體任務是實現(xiàn)游戲的可操作性、美觀性、及時性。對于系統(tǒng)的需求分析要考慮到軟件過程中的能見度,及對軟件
22、開發(fā)過程中的控制及管理,所以對軟件需求完全理解是有必要的。做好需求分析,就得對游戲的過程及操作及其了解。</p><p> 在對系統(tǒng)的邏輯模型及物理模型進行描述時就有問題,這個用語言是很難解釋清楚,所以用系統(tǒng)流程圖對系統(tǒng)的物理元素及元素間流動和處理進行描述,而對系統(tǒng)的邏輯模型,則采用數據流圖進行描述,并用數據字典精確定義數據流圖中的元素。</p><p><b> 2.3.3
23、 結論</b></p><p> 本游戲軟件的技術成熟、完備,各方面均無重大問題,因此本游戲可開始著手編寫。</p><p><b> 2.4 章節(jié)小結</b></p><p> 可行性研究進一步探討問題定義階段所確定的問題是否有可行的問題。經過定義問題、分析問題、提出問題的反復過程,最終提出一個符合系統(tǒng)目標的高檔次的邏輯
24、模型。</p><p> 用系統(tǒng)流程圖對系統(tǒng)的物理元素及元素間流動和處理進行描述,而對系統(tǒng)的邏輯模型,則采用數據流圖進行描述,并用數據字典精確定義數據流圖中的元素。</p><p><b> 3 系統(tǒng)設計</b></p><p><b> 3.1 總體設計</b></p><p> 1、
25、按照總體設計的要求分析各組案例</p><p> 根據最初提出的方案,在需求分析階段得到的數據流圖確定了該方案的實現(xiàn)基礎,再經過一系列的需求分析,系統(tǒng)功能設計,在可行性研究確認了本方案的可行性。所以本次提出的俄羅斯方塊實現(xiàn)方案是可行的。</p><p> 2、用層次圖完成軟件結構設計</p><p> 圖3-1 俄羅斯方塊層次圖</p><
26、p><b> 3.2 詳細設計</b></p><p> 3.2.1 主界面和出錯設計</p><p> 主界面:本游戲使用的C++編程:分為三個界面、游戲界面、結束界面;</p><p> 出錯設計:玩家錯誤,在開始界面時不滿足輸入規(guī)則發(fā)生錯誤,按Enter鍵開始游戲,其它無效;運行時錯誤,游戲界面交互時,由于本游戲由VC+
27、+編寫,較穩(wěn)定,基本不會崩潰,而且有各種游戲提示。</p><p> 3.2.2 程序流程圖完成模塊詳細設計</p><p> 圖3-1 程序流程圖</p><p> 程序復雜度的度量:V = 24-19+2 = 8;</p><p><b> 4 編碼實現(xiàn)</b></p><p>&
28、lt;b> 4.1 主控函數</b></p><p> void main()</p><p><b> {</b></p><p> Game game;</p><p> Grid grid;</p><p><b> Box box;<
29、;/b></p><p> Box next_box;</p><p> Rect game_rect = {0,0,480,520};//游戲整個界面的區(qū)域信息</p><p> Rect grid_rect = {6,8,398,502};//網格區(qū)域的位置信息</p><p> Rect score_rect
30、= {412,328,475,364};//分數區(qū)域的位置信息</p><p> Rect grade_rect = {412,282,475,300};//等級區(qū)域的位置信息</p><p> StartForm start_form(game_rect,GREEN,WHITE); </p><p> GameForm game_form(game
31、_rect,grid_rect,score_rect,grade_rect,GREEN,WHITE,25);</p><p> OverGameForm over_game_form(game_rect,GREEN,WHITE);</p><p> GameControl c(&box,&next_box,&grid,&game_form,&st
32、art_form,&game,&over_game_form);</p><p> c.StartGame(); //游戲開始</p><p><b> }</b></p><p><b> 4.2 二級函數</b></p><p> void ClearLines(Ve
33、ctInt fullLines); //清行</p><p> VectInt GetFullLines(void) const;//獲取滿行數</p><p> bool AcceptBox(const Box &box);//接收方塊</p><p> void show(void);//測試代碼,顯示網格</p>
34、<p> bool IsOccupied(int x,int y)const;//判斷指定位置的網格是否被占有</p><p> void SetOccupied(int x,int y);//填充指定位置的網格</p><p> void resetGrid();//重置網格用于游戲重新開始</p><p> void draw
35、NextBox(const Box & box)const;//下一個方塊的擦除</p><p> void drawScore(int score) const;//繪制分數</p><p> void eraseScore()const;//擦除分數</p><p> void drawGrade(int grade)c
36、onst;//繪制游戲等級</p><p> void eraseGrade()const;//擦除等級</p><p> void eraseGrid(void)const;//擦除網格</p><p> void drawGrid(const Grid &grid)const;//繪制網格</p>
37、;<p> GameForm(Rect r, Rect g,Rect s,Rect grade,</p><p> COLORREF bColor, COLORREF fColor,int size);</p><p> void draw(void) const;//繪制界面</p><p> void drawBox(con
38、st Box &box) const;//繪制方塊</p><p> void eraseBox(const Box &box) const;//擦除方塊</p><p> void flash(VectInt lines) const;//閃爍</p><p> void MoveLeft();//方塊左移</
39、p><p> void MoveRight();//方塊右移</p><p> bool Drop();//方塊下落</p><p> void Rotate();//方塊旋轉</p><p> void StraightDown();//方塊直降</p><p> bool IsObstacl
40、e();//判斷方塊是否遇到障礙</p><p> void ClearLine();//清行</p><p> void StartGame();//開始游戲</p><p> void OverGame();//結束游戲</p><p> virtual void draw(void) const = 0;
41、//繪制</p><p> void erase(COLORREF eraseColor) const;//擦除</p><p> Command readOperator(void)const;//讀取用戶指令</p><p> void MoveLeft(void);//邏輯左移</p><p> void
42、MoveRight(void);//邏輯右移</p><p> void Drop(void);//邏輯下降</p><p> void Rocate(void);//邏輯旋轉</p><p> void Init(void);//初始化方塊</p><p> void show(void);
43、//測試代碼,顯示方塊</p><p> Coord GetBoxPosition(void) const;//獲取方塊在網格中的位置</p><p> BoxCode GetBoxCode(void)const;//獲取方塊編碼</p><p> int GetBoxNo(void) const;//獲取方塊形態(tài)號</p>&
44、lt;p> int getScore(void);//獲取分數</p><p> int getGrade(void);//獲取游戲等級</p><p> void upGrade(int score);//升級</p><p> void scoring(int score);//計分</p><p> in
45、t getSpeed(void);//獲取游戲速度</p><p> bool again(void);//游戲重來一次</p><p> 4.3 各函數的代碼</p><p><b> 游戲方塊的控制:</b></p><p> void GameControl::MoveLeft() //方塊
46、左移</p><p><b> {</b></p><p> Box tempBox;</p><p> m_pGameForm->eraseBox(*m_pBox);</p><p> tempBox = *m_pBox;</p><p> m_pBox->MoveLeft
47、();</p><p> if (true == IsObstacle())</p><p><b> {</b></p><p> *m_pBox = tempBox;</p><p><b> }</b></p><p> m_pGameForm->dra
48、wBox(*m_pBox);</p><p><b> }</b></p><p> void GameControl::MoveRight() //方塊右移</p><p><b> {</b></p><p> Box tempBox;</p><p> m
49、_pGameForm->eraseBox(*m_pBox);</p><p> tempBox = *m_pBox;</p><p> m_pBox->MoveRight();</p><p> if (true == IsObstacle())</p><p><b> {</b></p>
50、;<p> *m_pBox = tempBox;</p><p><b> }</b></p><p> m_pGameForm->drawBox(*m_pBox);</p><p><b> }</b></p><p> bool GameControl::Drop(
51、) //方塊下落</p><p><b> {</b></p><p> Box tempBox;</p><p> m_pGameForm->eraseBox(*m_pBox);</p><p> tempBox = *m_pBox;</p><p> m_pBox-&g
52、t;Drop();</p><p> if (true == IsObstacle())</p><p><b> {</b></p><p> *m_pBox = tempBox;</p><p> m_pGameForm->drawBox(*m_pBox);</p><p>
53、return false;</p><p><b> }</b></p><p> m_pGameForm->drawBox(*m_pBox);</p><p> return true;</p><p><b> }</b></p><p> void Ga
54、meControl::Rotate() //方塊旋轉</p><p><b> {</b></p><p> Box tempBox;</p><p> m_pGameForm->eraseBox(*m_pBox);</p><p> tempBox = *m_pBox;</p>&l
55、t;p> m_pBox->Rocate();</p><p> if (true == IsObstacle())</p><p><b> {</b></p><p> *m_pBox = tempBox;</p><p><b> }</b></p><
56、p> m_pGameForm->drawBox(*m_pBox);</p><p><b> }</b></p><p> void GameControl::StraightDown() //方塊直降</p><p><b> {</b></p><p> while (
57、true == Drop())</p><p><b> {</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 5 系統(tǒng)測試</b></p><p><b&
58、gt; 5.1 代碼分析</b></p><p> 上次試驗描述為例的描述:主要功能為控制方塊的移動以及方塊的變形,先將原有的方塊擦除,然后重新畫出新位置的方塊,不管左移、右移、快速下降、旋轉原理都一樣。</p><p> 5.2 白盒測試用例</p><p> 圖5-1 被測試模塊流程圖</p><p> 5.3
59、 黑盒測試用例</p><p> 表3-1 游戲方塊移動模塊測試</p><p> 5.4 評價測試結果</p><p> 本次測試并沒有列舉所有功能模塊對應的測試用例,只取了一些比較常用的測試用例,初步的測試了一下系統(tǒng)的功能,測試結果顯示對應的模塊功能在測試用例的顯示下基本能正常運行,暫時未發(fā)現(xiàn)相關的BUG,日后擴展的功能將進行進一步的測試。</p&
60、gt;<p><b> 6 總結與展望</b></p><p><b> 6.1 總結</b></p><p> 游戲設計與實踐是一項復雜而且龐大的工作,在選題之后,我才意識到過程的艱難,因為以前從來沒有接觸過游戲設計,剛開始時有點迷茫和彷徨。后來通過看書和在網上查找資料,逐漸找到了一些感覺,也依照資料自己動手編寫了簡單經
61、典的游戲。</p><p> 本次設計讓我初步懂得了電子游戲所涉及到的有關技術、方法,包括電子游戲分類、選題、構思等。并實現(xiàn)幾個可演示的游戲軟件,其中有很多應用了學習的相關技術,并且做到了圖、文、聲并茂,能實際演示。此次設計過程中印象最深的收獲有:1、學到了很多新知識,并且對老知識進行了回顧。經過長時間的學習,更進一步熟悉了JAVA語言。2、通過不斷上機實驗,調試程序,總結經驗,從對課題的不理解到能夠開始動手去
62、做,提出問題并自己想辦法解決問題,自己多實踐,所以增強了動手能力。3、提高了中、英文資料的檢索能力。這次過程中我查閱了很多資料,不但有圖書館的期刊、雜志、館藏圖書,還有網絡中的電子文檔、電子書籍、網頁及下載的視頻教學課程;不但有中文資料還有英文資料。這些資料,使我的眼界更開闊,對課題的認識更加深刻,編寫程序的時候思路更加清楚,少走了很多彎路。</p><p> 但如果真的要從事游戲設計的工作,需要走的路還很長,
63、即便是對于國際知名的大公司,也是在不斷的探索和實踐中前進。但這并不表明前途就是渺茫的,通過這次實踐,進行了一次從底而上和自上而下的歸納和演繹的過程,在變化多端的游戲面前,總算領悟了一點它的奧妙。內容繁復、采用的表現(xiàn)手段多姿多彩的游戲世界,即便是再復雜,也可以通過一定程度的歸納演繹得出適應其規(guī)則和表現(xiàn)的契合點。</p><p><b> 6.2 展望</b></p><
64、p> 電子游戲自出現(xiàn)以來,經過幾十年曲折的發(fā)展,已經成為一個成熟的產業(yè),但它仍在不斷的發(fā)展之中。在我看來,游戲正朝著三維化、智能化和網絡化三個方向發(fā)展。</p><p> 三維化也就是我們通常所說的3D,以前我們玩的幾乎都是2D平面游戲,缺乏真實感和形象感。隨著旋轉、打光、材質貼圖、模型等一系列技術在游戲中的應用,以及硬件處理能力的發(fā)展,3D游戲隨之出現(xiàn)。3D游戲以其更貼近現(xiàn)實的場景,3D游戲甚至可以讓
65、人不能清晰的區(qū)分虛擬和現(xiàn)實,達到忘我的境界,讓玩家獲得極大的滿足,所以一出現(xiàn)就受到廣大玩家的熱烈歡迎。以《磨獸世界》等為代表的3D游戲給了我們以全新的感覺,將來必將有更多的3D游戲出現(xiàn)。 </p><p> 智能化也就是應用人工智能技術使計算機能像人一樣進行思考和推理。早在20年前,世界各地的計算機專家們就預測,總有一天我們的電腦能像我們一樣聰明。事實證明這并不容易,專家們也都困惑起來,人工智能也陷入
66、了低谷。但自從世界頂級象棋大師被電腦擊敗以后,似乎又讓人們看到了一些光明,因為人工智能研究者們開發(fā)的許多有用技術,非常適合游戲行業(yè)。這使得電子游戲更加接近現(xiàn)實也更容易吸引玩家,以后必將有更多的人工智能出現(xiàn)在游戲中。</p><p> 網絡化更是有目共睹的事實,現(xiàn)在我們玩的大多數游戲都是網絡游戲,網絡游戲的規(guī)模也早已大大超過了單機游戲。隨著因特網的快速發(fā)展,網絡提供了對聲音、影像、音樂、3D動畫和超文本等多媒體成
67、分的完全支持,使開發(fā)者可以在開發(fā)出基于網絡的高交互性的游戲,在游戲中可以建立一個虛擬的世界,玩家可以充當這個世界中的各種角色,并且和這個世界里的各種角色交流與合作等等。網絡使游戲變得更加奇妙和吸引人。</p><p><b> 致 謝</b></p><p> 課程設計完成之際,謹向我的導師xx老師致以衷心的謝意!</p><p> 老
68、師淵博的科學知識、敏銳的學術思維、嚴謹求實的治學態(tài)度和不斷進取的科研作風使本人受益匪淺。在設計論文撰寫期間,恩師不辭辛勞的指導以及鼓勵,對我在專業(yè)方向上的進一步發(fā)展產生了積極的影響。在此向王老師表示崇高的敬意和最衷心的感謝。</p><p> 感謝所有關心和幫助過我的老師、同學和朋友,愿他們身體健康、工作愉快!</p><p> 由于筆者經驗不足、能力有限,論文中難免有缺陷和不足,懇請
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論