




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、河南城建學(xué)院課程設(shè)計報告書專 業(yè):計算機(jī)科學(xué)與技術(shù) 課程設(shè)計名稱:Java高級應(yīng)用題 目:俄羅斯方塊 班 級:學(xué) 號: 設(shè) 計 者: 同 組 人 員: 指 導(dǎo) 老 師: 完 成 時 間:2016年06月08目錄一、設(shè)計目的1二、需求分析22.1游戲功能的需求分析22.2方塊及旋轉(zhuǎn)變換需求分析32.3游戲運(yùn)行需求分析42.4消行和分?jǐn)?shù)統(tǒng)計需求分析5三、模塊分析及設(shè)計63.1 總體設(shè)計思想63.2功能模塊6四、制作過程及要點(diǎn)94.1 游戲一個單元塊的設(shè)計與實(shí)現(xiàn)94.2俄羅斯方塊的控制設(shè)計94.3 俄羅斯方塊的設(shè)計與實(shí)現(xiàn)104.4要點(diǎn)分析10五、設(shè)計總結(jié)12六、參考資料13一、 設(shè)計目的 在個人電腦
2、日益普及的今天,一些有趣的桌面游戲已經(jīng)成為人們在使用計算機(jī)進(jìn)行工作或?qū)W習(xí)之余休閑娛樂的首選,而俄羅斯方塊游戲是人們最熟悉的小游戲之一,它以其趣味性強(qiáng),易上手等諸多特點(diǎn)得到了大眾的認(rèn)可,因此開發(fā)此游戲軟件可滿足人們的一些娛樂的需求。 此俄羅斯方塊游戲可以為用戶提供一個可在普通個人電腦上運(yùn)行的,界面美觀的,易于控制的俄羅斯方塊游戲。俄羅斯方塊是家喻戶曉的益智小游戲,它由俄羅斯人阿列克謝帕基特諾夫(Alexey Pazhitnov)在1984年6月利用空暇時間編寫的游戲程序,故此得名。俄羅斯方塊的基本規(guī)則是移動、旋轉(zhuǎn)和擺放游戲隨機(jī)產(chǎn)生的各種方塊,使之排列成完整的一行或多行并且消除得分。它看似簡單卻變
3、化無窮,俄羅斯方塊上手極其簡單,且游戲過程變化無窮,作為游戲本身很有魅力,但是要熟練掌握其中的操作和擺放技巧,難度卻不低。此軟件給用戶提供了一個展現(xiàn)自己高超技藝的場所,在這里,它不僅放松自己,還能感受到游戲中的樂趣。游戲區(qū)域會從頂部不斷隨機(jī)落下7種方塊類型的一種,游戲區(qū)域右上角有一個區(qū)域可以顯示下一個方塊的形狀,玩家可以控制俄羅斯方塊移動、旋轉(zhuǎn)。通過玩家的操作,下墜物在游戲區(qū)域以“擺積木”的形式出現(xiàn)。下墜物在一行或多行堆滿后就可以自動消除,消行后會得到相應(yīng)的分?jǐn)?shù),如果當(dāng)前下墜物堆積至窗口頂端,則游戲結(jié)束。二、需求分析2.1游戲功能的需求分析先分析一下整個游戲的具體實(shí)現(xiàn),首先,游戲有開始、幫助、
4、切換界面、結(jié)束游戲等操作接口,而在游戲過程中,隨著玩家的按鍵,會出現(xiàn)下墜物的形態(tài)變化、擺放下墜物件、銷毀填滿的行以及分?jǐn)?shù)的增加和等級速度、產(chǎn)生下一個方塊、退出等功能。先分析游戲的特點(diǎn),游戲需要產(chǎn)生不同種類的俄羅斯方塊,要對俄羅斯方塊進(jìn)行左右移動,旋轉(zhuǎn),加速下落等功能,然后對這些功能一一進(jìn)行細(xì)化,寫出對應(yīng)的實(shí)現(xiàn)的代碼,并美化游戲界面,從而完成整個游戲的設(shè)計。 2.1.1游戲方塊控制功能當(dāng)玩家按下相應(yīng)的操作鍵位時,通過條件判斷,判斷該操作是否可行,如果可行就執(zhí)行相應(yīng)的操作。主要的操作有游戲方塊的左移,右移,旋轉(zhuǎn)變形以及方塊加速。例如當(dāng)按下左移按鈕時,方塊會進(jìn)行判斷是否可左移,返回值為真時可以左移,
5、否則不能。 2.1.2方塊的生成及顯示功能游戲中會有兩個地方產(chǎn)生俄羅斯方塊,一個是游戲區(qū)域上方會有俄羅斯方塊落下,還有就是在屏幕右上角,也會產(chǎn)生下一個俄羅斯方塊,該俄羅斯方塊為游戲區(qū)域下一個要產(chǎn)生的方塊。同時當(dāng)游戲俄羅斯方塊左右移動,下落,旋轉(zhuǎn)變形時,要與先前的游戲方塊重合并完成消除行功能,還要求出被操作后的方塊坐標(biāo),用新坐標(biāo)重繪下一個游戲方塊。2.1.3方塊的擺放消行功能當(dāng)方塊落到底部的時候,通過條件判斷,把方塊擺放在屏幕底部并持續(xù)顯示,當(dāng)某行或者某幾行被填滿的時候,要把這幾行消除,并且被消除的行數(shù)上方的方塊整體下移。2.1.4游戲分?jǐn)?shù)統(tǒng)計功能記錄游戲積分,每當(dāng)有行被消除時,游戲積分會根據(jù)一
6、次消除的行數(shù)而增加相應(yīng)的分?jǐn)?shù),分?jǐn)?shù)要設(shè)置一個最高值,當(dāng)?shù)竭_(dá)最高分時等級增加,難度增大。 2.1.5游戲速度更新功能當(dāng)游戲積分達(dá)到某一條件時,系統(tǒng)將自動為玩家提高難度。難度增加的時候,方塊的下降速度會加快,增加游戲可玩性和趣味性。2.1.6游戲等級更新功能當(dāng)游戲積分達(dá)到某一條件時,系統(tǒng)將自動為玩家提高難度。難度增加的時候,方塊的下降速度會加快,相應(yīng)的等級也會增加,增加游戲可玩性和趣味性。2.1.7游戲結(jié)束控制功能通過判斷,如果擺放的方塊超過屏幕頂端的時候,則游戲結(jié)束,可以返回菜單重新開始游戲。也可通過點(diǎn)擊退出按鈕,結(jié)束游戲,退出游戲界面。2.2方塊及旋轉(zhuǎn)變換需求分析本游戲共有7種類型的方塊,而每
7、種類型方塊還可以通過旋轉(zhuǎn)變換成4種不同形態(tài)的方塊進(jìn)行擺放。方塊生成后可以將它們擺放在一個游戲顯示運(yùn)行的區(qū)域內(nèi),該區(qū)域可以看作是有許多個等面積小方格構(gòu)成的區(qū)域,而這些區(qū)域的狀態(tài)只有兩種,被方塊占據(jù)或空閑。因此,對于整個游戲區(qū)域的空間是占據(jù)或空閑,可以用一位數(shù)來標(biāo)識,對于7種方塊和它們旋轉(zhuǎn)后的形態(tài)我們可以用不同的標(biāo)識進(jìn)行標(biāo)記。對于旋轉(zhuǎn),游戲中所有方塊都是按照順時針旋轉(zhuǎn)的規(guī)則進(jìn)行的,而且在旋轉(zhuǎn)過程中它們不會因為旋轉(zhuǎn)而下降,總會保持在同一高度,但是在同一高度最多旋轉(zhuǎn)三次,就會下降一格,任何下墜物經(jīng)過一個旋轉(zhuǎn)周期還會變回原型。2.3游戲運(yùn)行需求分析游戲開始后會隨機(jī)產(chǎn)生一個方塊,顯示在游戲區(qū)域,同時右上角
8、也會隨機(jī)產(chǎn)生一個新的方塊,該方塊為游戲區(qū)域下一個將要產(chǎn)生的方塊,游戲區(qū)域不再隨機(jī)生成方塊。當(dāng)游戲區(qū)域的方塊下落到底后,新的方塊再次進(jìn)入游戲區(qū)域,如此循環(huán),直到游戲結(jié)束,這就是游戲的正常工作。當(dāng)用戶進(jìn)行一定的操作交互的時候,運(yùn)行程序可以根據(jù)用戶的操作指示對方塊進(jìn)行控制,而這些操作都是響應(yīng)相關(guān)的按鍵而執(zhí)行的。按游戲中定義的旋轉(zhuǎn)鍵,此事件實(shí)現(xiàn)下墜方塊旋轉(zhuǎn)操作,方塊并非任何情況都能旋轉(zhuǎn),如果旋轉(zhuǎn)后與已擺放好的方塊有沖突或超出邊界時,均不能發(fā)生旋轉(zhuǎn)。因此首先要判斷是否有足夠的空間進(jìn)行旋轉(zhuǎn),然后決定是否旋轉(zhuǎn)。按游戲左鍵,此事件實(shí)現(xiàn)下墜方塊左移操作,首先要判斷此方塊是否能夠發(fā)生左移,當(dāng)越界或被其他擺放好的方
9、塊阻擋時,則不能左移。按游戲右鍵,此事件實(shí)現(xiàn)下墜方塊右移操作。首先要判斷此方塊是否能夠發(fā)生右移,當(dāng)越界或被其他擺放好的方塊阻擋時,則不能右移。2.4消行和分?jǐn)?shù)統(tǒng)計需求分析 當(dāng)一個方塊下落到游戲區(qū)域底部進(jìn)行擺放后就要進(jìn)行一次消行檢測,檢測是否有行被填滿,檢測時從剛擺放的方塊最上面那一行開始往下檢測,由于方塊的形狀限制可知每次最多只能消除四行,所以只需檢測四行即可。檢測到一行被填滿時該行上面的方塊整體下移一行,包括空洞,然后繼續(xù)檢測下一行,直到四行都被檢測完。消行以后要統(tǒng)計游戲的積分,根據(jù)每次消除的行數(shù)t的不同而累加不同的積分,游戲積分通過公式score+=t*t*100來計算,消除一行得100分
10、,消除兩行得400分,消除三行得900分,消除四行得1600分。設(shè)置最高分?jǐn)?shù),當(dāng)分?jǐn)?shù)達(dá)到最高分?jǐn)?shù)后,游戲等級增加,游戲速度數(shù)值會增加以及加快速度,游戲速度有一個最大值,當(dāng)?shù)竭_(dá)這個值時,游戲速度將不再加快。分?jǐn)?shù)統(tǒng)計和消除行是連貫動作,在消除行后要對分?jǐn)?shù)進(jìn)行增加,同時頁面更新,頁面上的分?jǐn)?shù),等級,速度都會更新,游戲區(qū)域的方塊也更新,有一行被消除,游戲繼續(xù)。當(dāng)方塊落到底部的時候,通過條件判斷,把方塊擺放在屏幕底部并持續(xù)顯示,當(dāng)某行或者某幾行被填滿的時候,要把這幾行消除,并且被消除的行數(shù)上方的方塊整體下移。三、模塊分析及設(shè)計3.1 總體設(shè)計思想俄羅斯方塊游戲設(shè)計主要從9個方面進(jìn)行構(gòu)思。(1)游戲主界面
11、的設(shè)計。(2)方塊的設(shè)計。(3)方塊的旋轉(zhuǎn)。(4)方塊的運(yùn)動情況(包括向左、向右)(5)方塊的自動消行功能。(6)游戲速度的調(diào)節(jié)。(7)游戲積分的計算。(8)游戲開始菜單的設(shè)計。(9)游戲結(jié)束界面的設(shè)計。3.2功能模塊3.2.1開始和退出游戲模塊首先開始和退出游戲按鈕出現(xiàn)在進(jìn)入游戲界面和游戲界面,需要在xml下加入Button按鈕,當(dāng)點(diǎn)擊按鈕時跳轉(zhuǎn)到目標(biāo)界面或者開始游戲。例如點(diǎn)擊進(jìn)入游戲的開始按鈕,會進(jìn)入游戲界面,游戲界面也可點(diǎn)擊開始按鈕才能開始游戲,游戲開始后可以點(diǎn)擊退出按鈕,終止當(dāng)前游戲,返回到進(jìn)入游戲界面,或者當(dāng)方塊滿時,游戲自動結(jié)束,退出游戲界面。 圖3.1 圖3.23.2.2游戲控制
12、模塊俄羅斯方塊包括對游戲中的方塊進(jìn)行的操作,如左(右)移動,旋轉(zhuǎn),下落加速等功能。 圖3.3 圖3.43.2.3游戲幫助功能在游戲的開始界面上,當(dāng)玩家對該游戲不熟悉時可點(diǎn)擊幫助按鈕。 圖3.5 圖3.6 四、制作過程及要點(diǎn)4.1 游戲一個單元塊的設(shè)計與實(shí)現(xiàn)每一個俄羅斯方塊包括四個四個單元塊,設(shè)置一個單元塊的大小,對單元塊的位置用坐標(biāo)表示,根據(jù)繪制好的網(wǎng)格定義單元格坐標(biāo),判斷單元格的一些功能的實(shí)現(xiàn),例如旋轉(zhuǎn),左右移動,是否與其他單元塊接觸。通過檢測單元塊是否超界來判斷,并把結(jié)果返回。4.2俄羅斯方塊的控制設(shè)計方塊是游戲最基本的元素,俄羅斯方塊所有的操作都是建立在對方塊的操作上。對方塊的控制,實(shí)際
13、就是對每一個小方塊的控制,一個俄羅斯方塊單元是由4個小方塊構(gòu)成,通過計算每一個小方塊的橫縱坐標(biāo)來表現(xiàn)出一個下落或者一個已經(jīng)擺放好的俄羅斯方塊單元。由此來布置游戲區(qū)域方塊的顯示,方塊的控制主要在TetrisBlock類里實(shí)現(xiàn),用來判斷方塊的各種操作是否可行,如果可行則執(zhí)行相應(yīng)的操作,否則操作無效??刂品綁K時,首先要判斷該操作是否可以執(zhí)行,判斷方法主要有判斷方塊是否可以左右移動,判斷方塊是否碰壁,判斷方塊是否觸頂。判斷方塊是否可以左移。包括方塊的翻轉(zhuǎn)以及當(dāng)某一行的方塊滿后的消除功能。首先對俄羅斯方塊的定義進(jìn)行初始化,如種類,方向,顏色,以及存放用的數(shù)組。俄羅斯方塊需進(jìn)行判斷,需要對每個單元塊進(jìn)行判
14、斷,例如是否能旋轉(zhuǎn),需要每一個單元塊都能旋轉(zhuǎn),整個方塊才能旋轉(zhuǎn),接著是判斷是否接觸邊界,如果已接觸邊界,則不能左(右)移動,否則可左(右)移動,方塊下落過程中可加速,需判斷是否接觸底端或與其他方塊接觸,接觸則不能加速,反之可加速。4.3 俄羅斯方塊的設(shè)計與實(shí)現(xiàn)通過構(gòu)造函數(shù),定義隨機(jī)產(chǎn)生方塊種類以及對應(yīng)填充色,可隨機(jī)產(chǎn)生一個俄羅斯方塊。對俄羅斯方塊的位置用坐標(biāo)表示,判斷當(dāng)一行滿之后,消除這一行并相應(yīng)的分?jǐn)?shù)增加。4.4要點(diǎn)分析完成這個項目主要有幾個問題要處理: 邊界問題,即如何判斷俄羅斯方塊是否已經(jīng)到達(dá)邊界,主要是在左右移動和下降過程中,判斷俄羅斯方塊是否已經(jīng)抵達(dá)邊界,使其不超越邊界。 接觸問題,
15、即如何判斷俄羅斯方塊已經(jīng)與其他俄羅斯方塊接觸,此時應(yīng)該停止方塊的下落,或者避免方塊間重合。 旋轉(zhuǎn)問題,俄羅斯方塊要旋轉(zhuǎn)很簡單,只要用轉(zhuǎn)換公式即可,但問題是如何判斷旋轉(zhuǎn)后的位置是否不合法,即有沒有可能觸及邊界,或者與其他俄羅斯方塊重合。 消去問題,當(dāng)網(wǎng)格中有一行填滿了方塊,需要消去此行,并將在其上的所有方塊均向下移動一行,更新分?jǐn)?shù)等相關(guān)信息。第 和第個問題類似,每個俄羅斯方塊(TetrisBlock)對象包含四個更小的塊單元(BlockUnit), 在處理這兩個問題的時候只要在塊單元類當(dāng)中添加判斷塊單元對象是否接觸邊界或者其他俄羅斯方塊的塊單元的方法,然后俄羅斯方塊類的判斷接觸邊界或其他俄羅斯方
16、塊的方法,只需依次調(diào)用該俄羅斯方塊對象的所有塊單元對象的判斷方法,若其中一個塊單元接觸邊界,則該俄羅斯方塊接觸邊界。而邊界和方塊接觸問題都可以大致分為兩類,a. 接觸兩側(cè)邊界或在兩側(cè)接觸其他俄羅斯方塊,b. 接觸網(wǎng)格底部邊界或者方塊接觸其下的其他俄羅斯方塊。這兩類問題需要分開處理,因為方塊的下落和左右移動是分開進(jìn)行的,當(dāng)方塊左右移動時不能穿過兩側(cè)邊界或與其他俄羅斯方塊重合,當(dāng)方塊下落時,則不能穿過底部邊界或穿過其下的俄羅斯方塊。第個問題,先克隆一個下落的俄羅斯方塊,對其進(jìn)行旋轉(zhuǎn)操作,然后判斷其是否超越邊界或者與其他俄羅斯方塊重合,若其狀態(tài)合法則將下落的俄羅斯方塊進(jìn)行旋轉(zhuǎn)操作,否則結(jié)束操作并返回
17、。第個問題,用一個數(shù)組標(biāo)記每行塊單元個數(shù),并計算每行最多可填入多少個塊單元,若某一行已經(jīng)填滿則,刪除每個俄羅斯方塊中在該行上的塊單元,并且將在該行之上的塊單元全部向下移動一行。五、設(shè)計總結(jié)通過這次俄羅斯方塊課程設(shè)計,不能說對這門課學(xué)到了很多,而是對俄羅斯方塊這個游戲加深了了解,通過它的設(shè)計過程,在代碼部分我知道了它每一種功能實(shí)現(xiàn)的特點(diǎn)及怎樣實(shí)現(xiàn)的,俄羅斯方塊是一個很經(jīng)典的游戲。首先我負(fù)責(zé)完成的部分是俄羅斯方塊單元塊的基本設(shè)計和控制,在完成過程中,出現(xiàn)了許多的問題,開始我不知道怎么去編寫,上網(wǎng)查資料,資料很多,但是理解是個問題,最后我通過選擇,開始了俄羅斯方塊代碼的分析,因為需要判斷每一個單元塊,所以需要構(gòu)造函數(shù),接著對單元塊進(jìn)行判斷,首先是超界,這些代碼是網(wǎng)上資料查到的,但是不懂意思,再同組人把網(wǎng)格畫出之后,進(jìn)行了理解,產(chǎn)生俄羅斯方塊的時候,需要填充顏色,開始是每一種方塊定義一個顏色,后又改成隨機(jī)產(chǎn)生填充色,使方塊下落時更美觀,在俄羅斯方塊下落時需進(jìn)行一些判斷,開始沒想到需要對每一個單元塊進(jìn)行判斷,后經(jīng)驗證修改完成。在俄羅斯方塊一行滿之后要進(jìn)行消除并更新游戲區(qū)域,
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024桂林學(xué)院輔導(dǎo)員招聘筆試真題
- 法律盡職調(diào)查(技術(shù)方向)考試試卷及答案
- 高端旅游體驗師筆試試題及答案
- 2025年乙丙醇胺項目建議書
- 2025年湖南省生態(tài)環(huán)境廳下屬事業(yè)單位招聘考試筆試試題【答案】
- 項目合作管理制度
- 活動總結(jié)范文大學(xué)活動結(jié)束后的總結(jié)怎么寫
- 項目大管理圖表
- 2025年無功功率自動補(bǔ)償裝置項目建議書
- 2025城市規(guī)劃工作計劃
- 2025年廣東高考政治試卷真題答案詳解講評(課件)
- 卡口及道路交通智能監(jiān)控系統(tǒng)方案設(shè)計
- 2025年家庭照護(hù)師職業(yè)資格考試試題及答案
- 呼吸機(jī)相關(guān)性肺炎的預(yù)防和護(hù)理
- 2025年綏化市中考化學(xué)試題卷(含答案解析)
- 門診口腔院感基礎(chǔ)知識培訓(xùn)
- 論詠嘆調(diào)《媽媽不在》的形象刻畫與唱段處理
- 危重病人觀察和護(hù)理要點(diǎn)
- 砌體工程培訓(xùn)課件
- GB/T 45719-2025半導(dǎo)體器件金屬氧化物半導(dǎo)體(MOS)晶體管的熱載流子試驗
- 2025-2030中國醫(yī)藥商業(yè)行業(yè)盈利態(tài)勢與投資潛力分析報告
評論
0/150
提交評論