零起點VC-14課_第1頁
零起點VC-14課_第2頁
零起點VC-14課_第3頁
零起點VC-14課_第4頁
零起點VC-14課_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程第第14課課 俄羅斯方塊游戲俄羅斯方塊游戲w 本課要點本課要點w 具體要求具體要求w 本課導(dǎo)讀本課導(dǎo)讀w 上機練習上機練習Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程本課要點本課要點w 游戲原理分析游戲原理分析w 游戲制作過程游戲制作過程w 完善應(yīng)用程序界面完善應(yīng)用程序界面Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程具體要求具體要求w 了解俄羅斯方塊游戲原理了解俄羅斯方塊游戲原理w 掌握俄羅斯方塊數(shù)據(jù)結(jié)構(gòu)掌握俄羅斯方塊數(shù)據(jù)結(jié)構(gòu)w 掌握俄羅斯方塊的顯示掌握俄羅斯方塊的顯示w 掌握俄羅斯方塊游戲的鍵盤控制掌握俄羅斯方塊游戲的鍵盤控

2、制w 熟悉使用界面庫完善程序界面熟悉使用界面庫完善程序界面Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程本課導(dǎo)讀本課導(dǎo)讀隨著現(xiàn)代社會生活節(jié)奏愈發(fā)加快,游戲隨著現(xiàn)代社會生活節(jié)奏愈發(fā)加快,游戲已經(jīng)普遍成為大多人為緩解工作壓力和生活已經(jīng)普遍成為大多人為緩解工作壓力和生活壓力的消遣對象,游戲制作也愈發(fā)顯得重要。壓力的消遣對象,游戲制作也愈發(fā)顯得重要。本課時將制作一個相對簡單的俄羅斯方塊游本課時將制作一個相對簡單的俄羅斯方塊游戲,并對其原理以及算法進行詳細講解。戲,并對其原理以及算法進行詳細講解。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.1 游戲原理分析游戲原理分析前面的課時已經(jīng)基

3、本上介紹完了前面的課時已經(jīng)基本上介紹完了Visual C+程序設(shè)計的語言基礎(chǔ)、可視化程序設(shè)計的語言基礎(chǔ)、可視化設(shè)計以及一些高級應(yīng)用等知識,本課時將設(shè)計以及一些高級應(yīng)用等知識,本課時將利用已學的知識制作一個綜合實例利用已學的知識制作一個綜合實例俄俄羅斯方塊游戲。羅斯方塊游戲。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.1 游戲原理分析游戲原理分析14.1.1 實例效果預(yù)覽實例效果預(yù)覽14.1.2 實例制作分析實例制作分析Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.1.1 實例效果預(yù)覽實例效果預(yù)覽Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.1.2 實例制作

4、分析實例制作分析俄羅斯方塊的游戲規(guī)則比較簡單,游戲開始時按下鍵盤上的某俄羅斯方塊的游戲規(guī)則比較簡單,游戲開始時按下鍵盤上的某些按鍵對下落的方塊進行左移、右移或旋轉(zhuǎn)等操作,使下落的方塊些按鍵對下落的方塊進行左移、右移或旋轉(zhuǎn)等操作,使下落的方塊依次填滿游戲主界面的行即可獲得相應(yīng)的獎勵分數(shù),同時被填滿的依次填滿游戲主界面的行即可獲得相應(yīng)的獎勵分數(shù),同時被填滿的行將被消去,位于該行上方的行依次往下降一行。另外得到足夠的行將被消去,位于該行上方的行依次往下降一行。另外得到足夠的分數(shù)后,游戲的級別也將發(fā)生相應(yīng)變化,級別越高,方塊下落的速分數(shù)后,游戲的級別也將發(fā)生相應(yīng)變化,級別越高,方塊下落的速度越快。度越

5、快。游戲中使用的方塊是由游戲中使用的方塊是由4個正方形小方塊根據(jù)不同的擺放組成的,個正方形小方塊根據(jù)不同的擺放組成的,本實例使用的方塊形狀有本實例使用的方塊形狀有7種,其中種,其中6種基本方塊又可以按上、下、種基本方塊又可以按上、下、左、右左、右4個方向旋轉(zhuǎn)變成不同的形狀。通過分析可知,只需定義個方向旋轉(zhuǎn)變成不同的形狀。通過分析可知,只需定義7個個三維數(shù)組即可表示方塊。三維數(shù)組即可表示方塊。本實例將要制作的俄羅斯方塊游戲是基于本實例將要制作的俄羅斯方塊游戲是基于MFC對話框應(yīng)用程序?qū)υ捒驊?yīng)用程序的。為了使得應(yīng)用程序界面比較美觀,本案例將使用一個按鈕界面的。為了使得應(yīng)用程序界面比較美觀,本案例將

6、使用一個按鈕界面庫來制作特效按鈕。庫來制作特效按鈕。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.2 游戲制作過程游戲制作過程本實例的制作過程大體上分為本實例的制作過程大體上分為4部分,部分,下面分別進行講解。下面分別進行講解。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.2 游戲制作過程游戲制作過程14.2.1 創(chuàng)建應(yīng)用程序創(chuàng)建應(yīng)用程序14.2.2 定義方塊數(shù)據(jù)結(jié)構(gòu)定義方塊數(shù)據(jù)結(jié)構(gòu)14.2.3 繪制方塊圖像繪制方塊圖像14.2.4 游戲流程及其控制游戲流程及其控制Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.2.1 創(chuàng)建應(yīng)用程序創(chuàng)建應(yīng)用程序由于本案例是基于

7、對話框的,因此首先應(yīng)創(chuàng)由于本案例是基于對話框的,因此首先應(yīng)創(chuàng)建建MFC對話框應(yīng)用程序,其具體操作參見圖書對話框應(yīng)用程序,其具體操作參見圖書內(nèi)容。內(nèi)容。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.2.2 定義方塊數(shù)據(jù)結(jié)構(gòu)定義方塊數(shù)據(jù)結(jié)構(gòu)由由14.1.2小節(jié)分析得出,每種基本方塊可以使小節(jié)分析得出,每種基本方塊可以使用一個三維數(shù)組來表示,為了體現(xiàn)面向?qū)ο缶幊逃靡粋€三維數(shù)組來表示,為了體現(xiàn)面向?qū)ο缶幊痰奶攸c,本案例采用類的方式為每種基本方塊定的特點,本案例采用類的方式為每種基本方塊定義一個類,然后在類中定義一個三維數(shù)組存儲方義一個類,然后在類中定義一個三維數(shù)組存儲方塊數(shù)據(jù)塊數(shù)據(jù)。首先定

8、義一個方塊基類,并在其構(gòu)造函數(shù)中首先定義一個方塊基類,并在其構(gòu)造函數(shù)中將三維數(shù)組元素初始化為將三維數(shù)組元素初始化為0。定義了方塊基類后,。定義了方塊基類后,7種基本方塊類可直接派生于該基類,并在各自種基本方塊類可直接派生于該基類,并在各自的構(gòu)造函數(shù)中對三維數(shù)組的構(gòu)造函數(shù)中對三維數(shù)組PieceMap進行初始化。進行初始化。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.2.3 定義方塊數(shù)據(jù)結(jié)構(gòu)定義方塊數(shù)據(jù)結(jié)構(gòu)1定義方塊定義方塊 類類2定義方塊定義方塊 類類3定義方塊定義方塊 類類4定義方塊定義方塊 類類5定義方塊定義方塊 類類6定義方塊定義方塊 類類7定義方塊定義方塊 類類Visual

9、 C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程1定義方塊定義方塊 類類該方塊旋轉(zhuǎn)后可以得出兩種不同的形該方塊旋轉(zhuǎn)后可以得出兩種不同的形狀,定義時需添加的代碼參見圖書內(nèi)容。狀,定義時需添加的代碼參見圖書內(nèi)容。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程2定義方塊定義方塊 類類 該方塊旋轉(zhuǎn)后可以得出四種不同的形該方塊旋轉(zhuǎn)后可以得出四種不同的形狀,定義時需添加的代碼參見圖書內(nèi)容。狀,定義時需添加的代碼參見圖書內(nèi)容。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程3定義方塊定義方塊 類類該方塊旋轉(zhuǎn)得出的方塊形狀只有一種,該方塊旋轉(zhuǎn)得出的方塊形狀只有一種,定義時需添加的代碼參見圖書內(nèi)容。定義時需添

10、加的代碼參見圖書內(nèi)容。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程4定義方塊定義方塊 類類 該方塊旋轉(zhuǎn)后可以得出兩種不同的形該方塊旋轉(zhuǎn)后可以得出兩種不同的形狀,定義時需添加的代碼參見圖書內(nèi)容。狀,定義時需添加的代碼參見圖書內(nèi)容。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程5定義方塊定義方塊 類類該方塊旋轉(zhuǎn)后可以得出兩種不同的形該方塊旋轉(zhuǎn)后可以得出兩種不同的形狀,定義時需添加的代碼參見圖書內(nèi)容。狀,定義時需添加的代碼參見圖書內(nèi)容。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程6定義方塊定義方塊 類類該方塊旋轉(zhuǎn)后可以得出兩種不同的形該方塊旋轉(zhuǎn)后可以得出兩種不同的形狀,定義時需

11、添加的代碼參見圖書內(nèi)容。狀,定義時需添加的代碼參見圖書內(nèi)容。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程7定義方塊定義方塊 類類該方塊旋轉(zhuǎn)后可以得出兩種不同的形該方塊旋轉(zhuǎn)后可以得出兩種不同的形狀,定義時需添加的代碼參見圖書內(nèi)容。狀,定義時需添加的代碼參見圖書內(nèi)容。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.2.3 繪制方塊圖像繪制方塊圖像定義了方塊的數(shù)據(jù)結(jié)構(gòu)后,就可以在定義了方塊的數(shù)據(jù)結(jié)構(gòu)后,就可以在主對話框的客戶區(qū)對方塊進行繪制。方塊主對話框的客戶區(qū)對方塊進行繪制。方塊的繪制區(qū)域包括兩個部分,第一部分是游的繪制區(qū)域包括兩個部分,第一部分是游戲主界面區(qū),第二部分是預(yù)覽界面

12、區(qū),并戲主界面區(qū),第二部分是預(yù)覽界面區(qū),并且實現(xiàn)方塊的形狀和顏色的隨機產(chǎn)生。且實現(xiàn)方塊的形狀和顏色的隨機產(chǎn)生。方塊的繪制原理是根據(jù)三維數(shù)組的值方塊的繪制原理是根據(jù)三維數(shù)組的值來確定的,如果元素值為來確定的,如果元素值為1則繪制正方形則繪制正方形小方塊,為小方塊,為0則不畫,其具體操作參見圖則不畫,其具體操作參見圖書內(nèi)容。書內(nèi)容。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.2.4 游戲流程及其控制游戲流程及其控制 初始化了游戲主界面和預(yù)覽界面后,初始化了游戲主界面和預(yù)覽界面后,就可以對游戲流程和游戲控制進行設(shè)計。就可以對游戲流程和游戲控制進行設(shè)計。該部分內(nèi)容是整個游戲制作的關(guān)鍵,涉

13、及該部分內(nèi)容是整個游戲制作的關(guān)鍵,涉及的內(nèi)容大體上包括動態(tài)顯示方塊、鍵盤控的內(nèi)容大體上包括動態(tài)顯示方塊、鍵盤控制方塊移動或旋轉(zhuǎn)、游戲的開始、暫停以制方塊移動或旋轉(zhuǎn)、游戲的開始、暫停以及停止等。及停止等。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.2.4 游戲流程及其控制游戲流程及其控制1動態(tài)顯示方塊動態(tài)顯示方塊2鍵盤控制鍵盤控制3游戲的開始、暫停及停止游戲的開始、暫停及停止Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程1動態(tài)顯示方塊動態(tài)顯示方塊首先從定義的基本方塊類中獲得方塊首先從定義的基本方塊類中獲得方塊對象,然后設(shè)置計時器讓方塊往下落并重對象,然后設(shè)置計時器讓方塊往下落

14、并重畫游戲主界面,當方塊不能下落時填充游畫游戲主界面,當方塊不能下落時填充游戲主界面,最后從預(yù)覽界面獲得下一個下戲主界面,最后從預(yù)覽界面獲得下一個下落的方塊,具體操作請參見圖書內(nèi)容。落的方塊,具體操作請參見圖書內(nèi)容。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程2鍵盤控制鍵盤控制本實例將使用鍵盤上的本實例將使用鍵盤上的4個方向鍵和空個方向鍵和空格鍵來控制方塊的移動或旋轉(zhuǎn),其中按下格鍵來控制方塊的移動或旋轉(zhuǎn),其中按下左或右方向鍵實現(xiàn)方塊向左或向右移動一左或右方向鍵實現(xiàn)方塊向左或向右移動一格,按下向上方向鍵實現(xiàn)方塊的旋轉(zhuǎn),按格,按下向上方向鍵實現(xiàn)方塊的旋轉(zhuǎn),按下向下方向鍵或空格鍵實現(xiàn)方塊的快

15、速或下向下方向鍵或空格鍵實現(xiàn)方塊的快速或最快下落,其具體操作請參見圖書內(nèi)容。最快下落,其具體操作請參見圖書內(nèi)容。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程3游戲的開始、暫停及停止游戲的開始、暫停及停止游戲的開始、暫停及停止是控制游戲進游戲的開始、暫停及停止是控制游戲進程的基本功能,本實例將使用按鈕的方式程的基本功能,本實例將使用按鈕的方式實現(xiàn)這些功能,其具體操作請參見圖書內(nèi)實現(xiàn)這些功能,其具體操作請參見圖書內(nèi)容。容。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.3 完善應(yīng)用程序完善應(yīng)用程序俄羅斯方塊游戲已經(jīng)制作完畢,但是俄羅斯方塊游戲已經(jīng)制作完畢,但是我們發(fā)現(xiàn)其界面比較粗

16、糙,功能也比較少。我們發(fā)現(xiàn)其界面比較粗糙,功能也比較少。本節(jié)將講解應(yīng)用程序界面和功能的完善。本節(jié)將講解應(yīng)用程序界面和功能的完善。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.3 完善應(yīng)用程序完善應(yīng)用程序14.3.1 完善界面完善界面14.3.2 完善功能完善功能Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.3.1 完善界面完善界面該部分內(nèi)容包括修改應(yīng)用程序圖標和該部分內(nèi)容包括修改應(yīng)用程序圖標和光標、制作特效按鈕等,下面分別對它們光標、制作特效按鈕等,下面分別對它們進行講解。進行講解。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.3.1 完善界面完善界面1修改

17、應(yīng)用程序圖標和光標修改應(yīng)用程序圖標和光標2制作特效按鈕制作特效按鈕Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程1修改應(yīng)用程序圖標和光標修改應(yīng)用程序圖標和光標要修改應(yīng)用程序圖標,只需把該圖標刪掉,然要修改應(yīng)用程序圖標,只需把該圖標刪掉,然后把新的圖標放在該文件夾下,并將文件名改為后把新的圖標放在該文件夾下,并將文件名改為“TETRIS.ico”即可。即可。修改應(yīng)用程序的光標可以按下面兩個步驟進行。修改應(yīng)用程序的光標可以按下面兩個步驟進行。(1)選擇)選擇【插入插入】【資源資源】命令,在打開的對話命令,在打開的對話框的框的【資源類型資源類型】欄中選擇欄中選擇【Cursor】項,然后單項,然

18、后單擊擊【導(dǎo)入導(dǎo)入】按鈕,將需要的光標文件添加到工程。按鈕,將需要的光標文件添加到工程。(2)在主對話框類)在主對話框類CTETRISDlg的成員函數(shù)的成員函數(shù)OnInitDialog中輸入代碼。中輸入代碼。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程2制作特效按鈕制作特效按鈕本實例將使用一個界面庫類本實例將使用一個界面庫類CButtonST來實現(xiàn)按鈕的特效,如透明、圖標按鈕以來實現(xiàn)按鈕的特效,如透明、圖標按鈕以及具有提示功能的按鈕等特效。及具有提示功能的按鈕等特效。制作特效按鈕的具體操作請參見圖書內(nèi)制作特效按鈕的具體操作請參見圖書內(nèi)容。容。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.3.2 完善功能完善功能該部分內(nèi)容包括游戲的初始級別設(shè)置該部分內(nèi)容包括游戲的初始級別設(shè)置以及動態(tài)修改應(yīng)用程序的背景色等功能,以及動態(tài)修改應(yīng)用程序的背景色等功能,主要是使用類主要是使用類CButtonST的成員函數(shù)的成員函數(shù)SetMenu為為 按鈕關(guān)聯(lián)下拉菜單實現(xiàn),下按鈕關(guān)聯(lián)下拉菜單實現(xiàn),下面分別對它們進行講解。面分別對它們進行講解。Visual C+ 程序設(shè)計培訓教程程序設(shè)計培訓教程14.

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論