俄羅斯方塊之畫(huà)布類(lèi)_第1頁(yè)
俄羅斯方塊之畫(huà)布類(lèi)_第2頁(yè)
俄羅斯方塊之畫(huà)布類(lèi)_第3頁(yè)
俄羅斯方塊之畫(huà)布類(lèi)_第4頁(yè)
俄羅斯方塊之畫(huà)布類(lèi)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(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)介

俄羅斯方塊游戲的開(kāi)發(fā)PAGEPAGE2俄羅斯方塊游戲的開(kāi)發(fā)JAVA程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告課題:俄羅斯方塊游戲的開(kāi)發(fā)姓名:薛萍萍學(xué)號(hào):200817010206同組姓名:張維鄒玉艷曾箐專(zhuān)業(yè)班級(jí):計(jì)科08102指導(dǎo)教師:湯海蓉老師設(shè)計(jì)時(shí)間:2011.2.21—2011.2.26評(píng)閱意見(jiàn):評(píng)閱意見(jiàn):評(píng)定成績(jī):指導(dǎo)老師簽名:年月日目錄一、系統(tǒng)設(shè)計(jì)概要 31.1課程設(shè)計(jì)目的 31.2課程設(shè)計(jì)要求 31.3課程設(shè)計(jì)與步驟 31.4系統(tǒng)需求 4二、分析與設(shè)計(jì) 42.1功能描述 42.2功能模塊劃分: 42.3系統(tǒng)模塊結(jié)構(gòu) 52.4模塊的實(shí)現(xiàn)方法描述 5三系統(tǒng)測(cè)試 9四、課程設(shè)計(jì)心得體會(huì) 10五、參考文獻(xiàn) 10六、源代碼 11一、系統(tǒng)設(shè)計(jì)概要1.1課程設(shè)計(jì)目的 Java是現(xiàn)在全球最時(shí)髦的開(kāi)發(fā)工具之一,它擁有一套龐大且完善的類(lèi)庫(kù),內(nèi)置了其他語(yǔ)言需要靠庫(kù)甚至是操作系統(tǒng)才能支持的功能。如今越來(lái)越多的應(yīng)用程序是由Java開(kāi)發(fā)的,用Java開(kāi)發(fā)的應(yīng)用程序可以在任何計(jì)算機(jī)平臺(tái)上安全地運(yùn)行。可以說(shuō)Java是一個(gè)萬(wàn)能的開(kāi)發(fā)平臺(tái),用Java編程已經(jīng)成為一種趨勢(shì)。俄羅斯方塊游戲具有廣泛的游戲人群,因?yàn)樗容^簡(jiǎn)單有趣,無(wú)論老少都比較適合。俄羅斯方塊游戲的設(shè)計(jì)對(duì)于每一個(gè)Java語(yǔ)言設(shè)計(jì)者進(jìn)行語(yǔ)言提高和進(jìn)階都是一個(gè)很好的鍛煉機(jī)會(huì)。所以,我們將以此為題,作為Java的課程設(shè)計(jì),來(lái)提高我們的學(xué)習(xí)能力。1.2課程設(shè)計(jì)要求 1、明確課設(shè)任務(wù),復(fù)習(xí)與查閱有關(guān)資料 2、按要求完成課設(shè)內(nèi)容,課設(shè)報(bào)告要求文字和圖工整、思路清楚、正確。 3、對(duì)應(yīng)用程序的要求:界面簡(jiǎn)單明了美觀(guān),運(yùn)行方便,簡(jiǎn)單易行。并且程序具有一定的健壯性,不會(huì)因?yàn)橛脩?hù)的操作錯(cuò)誤引起程序運(yùn)行錯(cuò)誤而中斷執(zhí)行。對(duì)輸入值的類(lèi)型、大小范圍、字符串的長(zhǎng)度等,進(jìn)行正確性檢查。對(duì)于部分功能提供說(shuō)明幫助。1.3課程設(shè)計(jì)與步驟 1、需求分析:對(duì)用戶(hù)提出的問(wèn)題提出解決的辦法和思路。 2、根據(jù)需求,設(shè)計(jì)系統(tǒng)功能模塊,并設(shè)計(jì)相應(yīng)的類(lèi)和界面。 3、根據(jù)基本思路,設(shè)計(jì)程序的算法。 4、確定用到的所有類(lèi)的描述和定義,并設(shè)計(jì)測(cè)試程序來(lái)對(duì)類(lèi)進(jìn)行測(cè)試。 5、在計(jì)算機(jī)上編譯程序,檢驗(yàn)程序的可運(yùn)行性1.4系統(tǒng)需求 1、運(yùn)行界面,包括游戲圖形區(qū)域界面、游戲速度的選擇更新界面、游戲分?jǐn)?shù)的顯示更新界面、下一個(gè)圖形方塊的顯示更新區(qū)域、開(kāi)始游戲按鈕、重新開(kāi)始游戲按鈕以及退出游戲按鈕。 2、功能擴(kuò)展:菜單設(shè)置,窗口多樣式,圖形顯示界面背景顏色,方塊顏色等,以使該俄羅斯方塊界面更為美觀(guān),功能更加齊全。二、分析與設(shè)計(jì)2.1功能描述 俄羅斯方塊是一個(gè)非常復(fù)雜但比較有趣的并且耐玩的游戲,相信很多人對(duì)俄羅斯方塊游戲并不陌生,如下圖所示,游戲中共有7種方式,每種方塊都由4個(gè)方格組成。 這7種方塊可以旋轉(zhuǎn)90°、180°、270°,因此每種方塊有四種狀態(tài),7種方塊總共有28種狀態(tài)。這28種狀態(tài)的方塊就隨機(jī)產(chǎn)生,自由下落,落下時(shí)可由玩家用鍵盤(pán)上的上、下、左、右控制鍵來(lái)控制翻轉(zhuǎn)和移動(dòng),以便以玩家所需要的形態(tài)和位置落下。如果落下時(shí),方塊的方格能填滿(mǎn)某一行,則這一行可消失,同時(shí)游戲可以給玩家加分,若由存在空格的方塊填滿(mǎn)整個(gè)窗口,則會(huì)彈出對(duì)消息框告訴玩家游戲結(jié)束。2.2功能模塊劃分:根據(jù)游戲的功能實(shí)現(xiàn)分為5個(gè)類(lèi):游戲主類(lèi)、控制面板類(lèi)、畫(huà)布類(lèi)、方塊類(lèi)和方格類(lèi)。它們的作用如下:1、游戲主類(lèi)負(fù)責(zé)游戲的全局控制。2、控制面板類(lèi)主要用來(lái)控制游戲的進(jìn)程。3、方塊類(lèi)控制塊的移動(dòng)、下落、變形等。4、方格類(lèi)是組成塊的基本元素,用自己的顏色來(lái)表示塊的外觀(guān)。5、ErsBlock線(xiàn)程類(lèi)改變畫(huà)布類(lèi)方格的顏色,畫(huà)布類(lèi)通過(guò)檢查方格的顏色來(lái)體現(xiàn)塊的移動(dòng)情況。2.3系統(tǒng)模塊結(jié)構(gòu)控制按鈕面板控制按鈕面板信息面板游戲主類(lèi)畫(huà)布界面控制界面控制類(lèi)方塊類(lèi)游戲主界面提示面板畫(huà)布類(lèi)方格類(lèi)圖1系統(tǒng)模塊結(jié)構(gòu)2.4模塊的實(shí)現(xiàn)方法描述如2.2劃分的模塊,我們小組每人負(fù)責(zé)的部分模塊。本人負(fù)責(zé)畫(huà)布類(lèi)這一模塊。A.介紹: 畫(huà)布類(lèi)GameCanvas是該游戲的一個(gè)窗口,該窗口如圖2所示。它是用一個(gè)面板來(lái) 實(shí)現(xiàn)的,是一個(gè)繼承于JPanel的類(lèi)。它的大小是根據(jù)方格來(lái)拼接起來(lái)的,從下圖中可以看出該窗口的大小是19x12個(gè)方格。 畫(huà)布類(lèi)GameCanvas的主要功能是負(fù)責(zé)方塊的繪制,而每一個(gè)方塊的有ErsBlock線(xiàn)程動(dòng)態(tài)改變它的每個(gè)方格的顏色來(lái)設(shè)置,畫(huà)布類(lèi)通過(guò)檢查方格ErsBox的顏色來(lái)顯示ErsBlock塊。如果某個(gè)方格不顯示,則設(shè)置為方格的顏色為背景色,否則為前景色。圖2畫(huà)布窗口B.畫(huà)布類(lèi)GameCanvas包含了以下方法: 1、兩種構(gòu)造方法:GameCanvas(introws,intcols)GameCanvas(introws,intcols,ColorbackColor,ColorfrontColor) 2、取得方格行數(shù)列數(shù):getCols()getRows() 根據(jù)窗口大小,調(diào)整方格尺寸:Fanning() 3、設(shè)計(jì)背景顏色,取得背景顏色 setBackgroundColor(Color)getBackgroundColor()設(shè)計(jì)方塊顏色,取得方塊顏色 setBlockColor(Color)getBlockColor()獲得成績(jī):getScore() 取得上次等級(jí)的成績(jī):getScoreForLevelUpadate() 升級(jí)后將積分清零:resetScoreForLevelUpdate() 獲得某一行某一列的方格引用:getBox(introws,intcols) 6、覆蓋JComponet類(lèi)的函數(shù),畫(huà)組件:paintComponent(Graphics) 7、滿(mǎn)行,清除,加分removeLine(int) 重置reset()畫(huà)布背景設(shè)置窗口:圖3進(jìn)入設(shè)置背景顏色圖4樣品設(shè)置顏色圖5HSB設(shè)置顏色圖6RGB設(shè)置顏色三系統(tǒng)測(cè)試運(yùn)行程序,點(diǎn)擊開(kāi)始,游戲成功運(yùn)行,可以菜單選擇,可以控制難度,可以看到下一個(gè)方塊圖形,以及得分等。游戲運(yùn)行一段時(shí)間界面如下:圖7運(yùn)行游戲圖8消格加分 以上兩幅圖是可以看出,在圖7中方塊下落后,圖8里可以看到,滿(mǎn)格的那行消除了,并且得到相應(yīng)的分?jǐn)?shù)。 除此之外,暫停游戲,停止游戲,增加難度,降低難度,改變窗口風(fēng)格等控制都正常運(yùn)行,圖略。相應(yīng)的系統(tǒng)要求全都測(cè)試成功。四、課程設(shè)計(jì)心得體會(huì) 本次課程設(shè)計(jì)花費(fèi)了小組成員一周的時(shí)間來(lái)完成。從設(shè)計(jì)開(kāi)始選擇課題到最終完成課程設(shè)計(jì),小組成員分工明確,相互合作,按時(shí)完成了相關(guān)任務(wù)。通過(guò)這次課程設(shè)計(jì),我們學(xué)習(xí)了很多Java編程知識(shí),同時(shí)對(duì)這學(xué)期的課本所學(xué)知識(shí)有了進(jìn)一步鞏固,特別是多線(xiàn)程和事件等能更加熟練的運(yùn)用。 通過(guò)本次課程設(shè)計(jì),我們發(fā)現(xiàn),動(dòng)手比看書(shū)更能獲取實(shí)際有用的知識(shí)。很多知識(shí),在書(shū)本上看似很有道理,可是這些知識(shí)在實(shí)際情況結(jié)合起來(lái)往往就會(huì)出現(xiàn)書(shū)本上沒(méi)見(jiàn)過(guò)的情況,或者之前的理解與實(shí)際的使用是截然不同的。所以,真理是從實(shí)踐中得知的,而且也只有實(shí)踐才能檢驗(yàn)真理。而這次試驗(yàn)也加強(qiáng)了我們這些方面的理解能力,對(duì)書(shū)面上的東西實(shí)際操作在具體項(xiàng)目上有了一個(gè)更加清晰的認(rèn)識(shí)。我們還意識(shí)到一個(gè)大的程序,在寫(xiě)代碼前,一定要有良好的需求分析和結(jié)構(gòu)設(shè)計(jì),應(yīng)該占整個(gè)程序設(shè)計(jì)的大部分時(shí)間,一個(gè)好的程序,分析設(shè)計(jì)應(yīng)該要非常充分,這樣才不至于代碼寫(xiě)了一半才發(fā)現(xiàn)很多錯(cuò)誤。在具體代碼操作前的設(shè)計(jì)規(guī)劃與構(gòu)建才是一個(gè)優(yōu)秀的程序設(shè)計(jì)的靈魂。 設(shè)計(jì)過(guò)程中,我們另一個(gè)大的體會(huì)是合作的好處,通過(guò)互相幫助,大大的提高了工作的效率。同時(shí)我們也發(fā)現(xiàn)了自己的不足之處。對(duì)于很多自己以為很熟悉的東西,在細(xì)節(jié)上的把握有許多的不足;有些時(shí)候想當(dāng)然,認(rèn)為它應(yīng)該是這樣,而忽略事實(shí)。這也讓我明白,做事細(xì)心是必須的,所謂細(xì)節(jié)決定成??! 程序還有很多不足,也有許多延伸的想法還未實(shí)現(xiàn),在今后的日子里,我們會(huì)虛心向老師同學(xué)請(qǐng)教,盡自己最大的努力做到最好。五、參考文獻(xiàn)[1]汪志達(dá).Java程序設(shè)計(jì)實(shí)訓(xùn)教程.北京:科技出版社,2003.[2]向傳杰.Java編程案例教程.北京:電子工業(yè)出版社,2004.[3]葉核亞.Java2程序設(shè)計(jì)實(shí)用教程.2版.北京:電子工業(yè)出版社,2007.六、源代碼importjavax.swing.*;importjavax.swing.border.EtchedBorder;//EtchedBorder為swing包中的突出或凹進(jìn)的邊框importjava.awt.*;classGameCanvasextendsJPanel{ privatestaticfinallongserialVersionUID=-376213947118913923L; //默認(rèn)的方塊的顏色為橙色,背景顏色為黑色 privateColorbackColor=Color.black,frontColor=Color.orange; privateintrows,cols,score=0,scoreForLevelUpdate=0; privateErsBox[][]boxes; privateintboxWidth,boxHeight; publicGameCanvas(introws,intcols){ this.rows=rows; this.cols=cols; //初始化rows*cols個(gè)ErsBox對(duì)象 boxes=newErsBox[rows][cols]; for(inti=0;i<boxes.length;i++){ for(intj=0;j<boxes[i].length;j++){ boxes[i][j]=newErsBox(false); } }//設(shè)置畫(huà)布的邊界 setBorder(newEtchedBorder( EtchedBorder.RAISED,Color.blue,newColor(148,145,140))); } publicGameCanvas(introws,intcols, ColorbackColor,ColorfrontColor){ this(rows,cols);//調(diào)用第一個(gè)版本的構(gòu)造函數(shù) this.backColor=backColor; this.frontColor=frontColor; //通過(guò)參數(shù)設(shè)置背景和前景顏色 } publicvoidsetBackgroundColor(ColorbackColor){ this.backColor=backColor; } publicColorgetBackgroundColor(){ returnbackColor; } publicvoidsetBlockColor(ColorfrontColor){ this.frontColor=frontColor; } publicColorgetBlockColor(){ returnfrontColor; } publicintgetRows(){ returnrows; } publicintgetCols(){ returncols; } publicintgetScore(){ returnscore; } publicintgetScoreForLevelUpdate(){ returnscoreForLevelUpdate; } publicvoidresetScoreForLevelUpdate(){ scoreForLevelUpdate-=ErsBlocksGame.PER_LEVEL_SCORE; } publicErsBoxgetBox(introw,intcol){ if(row<0||row>boxes.length-1 ||col<0||col>boxes[0].length-1) returnnull; return(boxes[row][col]); } publicvoidpaintComponent(Graphicsg){ super.paintComponent(g); g.setColor(frontColor); for(inti=0;i<boxes.length;i++){ for(intj=0;j<boxes[i].length;j++){//用前景顏色或背景顏色繪制每個(gè)方塊 g.s

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論