俄羅斯方塊網(wǎng)頁小游戲設(shè)計開發(fā)畢業(yè)設(shè)計
《俄羅斯方塊網(wǎng)頁小游戲設(shè)計開發(fā)畢業(yè)設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《俄羅斯方塊網(wǎng)頁小游戲設(shè)計開發(fā)畢業(yè)設(shè)計(41頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 摘 要 隨著internet的迅速發(fā)展,社會已經(jīng)進入了網(wǎng)絡(luò)時代。電子商務(wù),網(wǎng)上購物,網(wǎng)上調(diào)查,網(wǎng)上學(xué)校等等已經(jīng)確實地存在于我們身邊了,而掌握網(wǎng)頁和網(wǎng)站的設(shè)計技術(shù)已經(jīng)成為程序員的必備技能,將一些編程技術(shù)融入網(wǎng)站設(shè)計中,可以建立出強大功能的動態(tài)網(wǎng)頁。該建立出具有強大功能的動態(tài)網(wǎng)頁,該論文就是基于以上目的的,通過html技術(shù)來完成網(wǎng)站的設(shè)計。 本系統(tǒng)就是利用javaapplet,應(yīng)用html技術(shù)和采用java語言來構(gòu)成網(wǎng)頁游戲應(yīng)用的基本代碼,完成了基于html的網(wǎng)頁小游戲。它操作簡單,結(jié)果清晰。本文只要介紹了俄羅斯方塊網(wǎng)頁小游戲設(shè)計開發(fā)的整個過程,本網(wǎng)頁在開發(fā)方法上采用了結(jié)構(gòu)化模
2、塊的設(shè)計方法,根據(jù)用戶的需求及程序的應(yīng)用與響應(yīng),將程序各個部分置于不同的模塊當(dāng)中,一一實現(xiàn)各模塊,進而完成整個系統(tǒng)的開發(fā)。 本游戲界面由網(wǎng)頁框架,游戲主屏幕,操作按鈕,游戲狀態(tài)組成。主要模塊分別是圖形產(chǎn)生模塊,圖形移動模塊,障礙物模塊,中央處理模塊,面板顯示模塊。 最后,對本次設(shè)計取得的成績和不足做出概況性的總結(jié),并對未來的工作進行展望。 關(guān)鍵詞: 互聯(lián)網(wǎng);俄羅斯方塊網(wǎng)頁小游戲;javaapplet Abstract With the rapid development of Internet, the society has entered the Internet
3、age. E-commerce, online shopping, online surveys, online schools have indeed exist around us, and the master page and site design technology has become an essential skill of the programmer, programming technology into the website design, you can create a powerful dynamic web pages. The establishment
4、 of a powerful dynamic pages, the paper is based on the above purpose, html technology to complete the design of the site. The system is the use of javaapplet application html and java language to constitute the application of the basic code of web games, html-based web game. It is simple, clear re
5、sults. This article as long as the the the whole process of of the the web pages of the Russian box small game design and development is introduced the, this web page in the your development method, on the the uses a the the design method of of the structured module, according to the the the applica
6、tion of and response of the the needs of users and procedures, will the the various parts of of the procedures placed in the different modules among the, one by one each module to achieve, and then complete the the the development of of the the entire system. The game interface consists of a web fr
7、amework, the main game screen, the buttons, the game state. The to main module is or module, Graph moving module, obstructions module, the central processing module Transportation, Panel the display module in if you are, respectively is the Graph-generating. Finally, make an overview summary of the
8、 achievements and shortcomings of the design, and future work prospects. Key words: Internet;the web pages of the Russian box small game;javaapplet 目錄 1 緒論 1 1.1 開發(fā)背景 1 2 系統(tǒng)開發(fā)平臺 2 2.1 開發(fā)工具簡介 2 2.1.1 JDK 2 2.1.2 Eclipse 4.2 2 2.2 系統(tǒng)配置
9、 2 2.2.1 安裝JDK 2 2.2.2 Eclipse的安裝 3 2.2.2.1 Eclipse軟件安裝 3 2.2.2.2 Eclipse插件安裝 3 3 系統(tǒng)分析 6 3.1 需求分析 6 3.2 可行性研究 6 4 系統(tǒng)設(shè)計 7 4.1 功能概述 7 4.1.1 網(wǎng)頁框架功能 7 4.1.2 游戲功能 7 5 詳細設(shè)計 8 5.1網(wǎng)頁框架設(shè)計 8 5.2 游戲設(shè)計 9 5.2.1 游戲主要框架 9 5.2.2 java程序功能與實現(xiàn) 10 5.2.2.1 俄羅斯方塊背景棋盤的產(chǎn)生 10 5.2.2.2 俄羅斯方塊功能按鈕
10、的產(chǎn)生 12 5.2.2.3 俄羅斯方塊的事件處理 17 5.2.2.3.1開始按鈕 17 5.2.2.3.2重新開始按鈕 18 5.2.2.3.3暫停按鈕 20 5.2.2.3.4繼續(xù)按鈕 20 5.2.2.3.5關(guān)于按鈕 21 5.2.2.3.6游戲結(jié)束事件處理 22 5.2.2.4 俄羅斯方塊的產(chǎn)生 23 5.2.2.5 俄羅斯方塊預(yù)覽區(qū)方塊的產(chǎn)生 29 5.2.2.6 俄羅斯方塊關(guān)數(shù)以及分?jǐn)?shù)的處理 31 6 結(jié)論 34 主要參考文獻: 35 致 謝 36 V 1 緒論 1.1 開發(fā)背景 中國互聯(lián)網(wǎng)絡(luò)信息中心(以下簡稱CNNIC)自200
11、8年開始,以每年2次的互聯(lián)網(wǎng)發(fā)展統(tǒng)計報告為基礎(chǔ),對于中國網(wǎng)絡(luò)游戲行業(yè)進行進一步細分研究,連續(xù)開展了2008年和2009年網(wǎng)絡(luò)游戲用戶調(diào)研并撰寫了《中國網(wǎng)絡(luò)游戲用戶調(diào)研分析報告》,取得了一定的效果。為了更加完善的了解中國網(wǎng)絡(luò)游戲市場狀況,CNNIC互聯(lián)網(wǎng)發(fā)展研究部將網(wǎng)絡(luò)游戲類型進一步細化,針對正處于高速發(fā)展期的網(wǎng)頁游戲(Web Game/Browser Game)做出專項調(diào)研。 中國網(wǎng)頁游戲近兩年發(fā)展迅速,盡管在用戶規(guī)模上與傳統(tǒng)網(wǎng)絡(luò)游戲還存在很大差距,但在我國整體網(wǎng)絡(luò)游戲用戶增長速度趨于放緩的情況下,網(wǎng)頁游戲卻持續(xù)增長,已經(jīng)成為帶動網(wǎng)絡(luò)游戲發(fā)展的新生力量。與此同時,網(wǎng)頁游戲出現(xiàn)了一些問題:首先,
12、由于網(wǎng)頁游戲的進入門檻相對于傳統(tǒng)網(wǎng)絡(luò)游戲低,主要以中小企業(yè)為主,其自身原創(chuàng)力不足,抄襲、復(fù)制問題嚴(yán)重,導(dǎo)致盲目量產(chǎn)、同質(zhì)化現(xiàn)象嚴(yán)重;其次,在發(fā)展過程中,企業(yè)缺乏清晰的盈利模式,忽視社會責(zé)任和行業(yè)發(fā)展?fàn)顩r,僅僅考慮短期利益;第三,由于產(chǎn)品品質(zhì)和服務(wù)等原因,造成個人用戶生命周期短,更新?lián)Q代速度過快,用戶黏性低;最后,網(wǎng)頁游戲中類似“色情”、“暴力”、“賭博”等方面的內(nèi)容,也會對用戶的行為產(chǎn)生負面影響,眾多因素決定了政府和企業(yè)對網(wǎng)頁游戲市場了解的迫切需求。 綜上所述,中國互聯(lián)網(wǎng)絡(luò)信息中心(CNNIC)互聯(lián)網(wǎng)發(fā)展研究部開展此次2010年中國網(wǎng)頁游戲研究,對于該游戲類型的用戶行為與態(tài)度、心理認(rèn)知等狀況做
13、出調(diào)查,了解該游戲類型市場狀況以及存在的問題,為政府以及運營商發(fā)展提供有力的支持。 2 系統(tǒng)開發(fā)平臺 2.1 開發(fā)工具簡介 本系統(tǒng)的開發(fā)主要使用的是javaapplet[1],所以開發(fā)工具只用了eclipse和記事本,而語言則選擇了java[2]。 2.1.1 JDK JDK(Java Development Kit) [3]是Sun Microsystems針對Java開發(fā)員的產(chǎn)品。自從Java推出以來,JDK已經(jīng)成為使用最廣泛的Java SDK。JDK是整個Java的核心,包括了Java運行環(huán)境,Java工具和Java基礎(chǔ)的類庫。JDK是學(xué)好Java的第一步。而專門
14、運行在x86平臺的Jrocket[4]在服務(wù)器端運行效率也要比Sun JDK好很多。從SUN的JDK1.5開始,提供了泛型等非常使用的功能,其版本也不斷更新,運行效率得到了非常大的提高。現(xiàn)在JDK的最新版本為JDK1.7,本系統(tǒng)使用的是JDK1.6。 2.1.2 Eclipse 4.2 Eclipse[9] 是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,Eclipse 附帶了一個標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(Java Development Kit,JDK)。 2.2 系統(tǒng)配置 2.2.1
15、 安裝JDK u 將JDK 1.6安裝到 C:\Program Files目錄下,然后配置環(huán)境變量 u 進系統(tǒng)-->高級-->環(huán)境變量,在系統(tǒng)環(huán)境變量中新建下列環(huán)境變量,并賦值如下[10]: u java_home=C:\Program Files\Java\jdk1.6 u catalina_home=C:\apache-tomcat-6.0.18 u classpath=.;C:\ProgramFiles\Java\jdk1.6\lib path=%path%;%java_home%\bin;%java_home%\lib;%catalina_home%\bin; u %c
16、atalina_home%\lib 2.2.2 Eclipse的安裝 2.2.2.1 Eclipse軟件安裝 Eclipse是一款綠色軟件,安裝很方便,只要將下載的壓縮包文件解壓到指定目錄即可。可以在http://www.eclipse.org/downloads/下載相關(guān)軟件。 在Eclipse安裝目錄下找到eclipse.exe執(zhí)行文件,雙擊就可以啟動Eclipse。 啟動后選擇工作空間(即您用于存放項目文檔的文件夾,就進入Eclipse的歡迎界面,在這里,您可以了解到Eclipse的新功能、新動態(tài)等。 至此,Eclipse就安裝完成了。 2.2.2.2 Eclip
17、se插件安裝 Eclipse插件的安裝方法大體有以下三種[5]: 第一種:直接復(fù)制法 假設(shè)Eclipse的安裝目錄在C:\eclipse,解壓下載的eclipse 插件或者安裝eclipse 插件到指定目錄AA(如:c:\AA)文件夾,打開AA 文件夾,在AA文件夾里分別包含兩個文件夾features和plugins ,然后把兩個文件夾里的文件分別復(fù)制到C:\eclipse下所對應(yīng)的文件夾下的features 和plugins 下,一般的把插件文件直接復(fù)制到eclipse目錄里是最直接也是最愚蠢的一種方法!因為日后想要刪除這些插件會非常的困難,不推薦使用。 注意:直接將插件包解壓到
18、plugins文件夾下之后,重啟eclipse,可能不會加載新的插件。 解決方法是: 1、打開命令行,到當(dāng)前eclipse的目錄下,輸入eclipse -clean,重新啟動eclipse,這樣eclipse就會加 上新的插件了。 2、如果插件不能生效,則請將eclipse\configuration\org.eclipse.update目錄刪除后再啟動eclipse; 你可以在eclipse的菜單"Help"-->"About Eclipse SDK"-->"Feature Details" 和"Plug-in Details"中看到新安裝的插件。 第二種:使用link文件法
19、 a.假設(shè)Eclipse的安裝目錄在C:\eclipse,在該文件夾下,新建這樣的目錄結(jié)構(gòu)C:\eclipse\PluginsEclipse\jode\eclipse; b.解壓下載的eclipse 插件或者安裝eclipse 插件到指定目錄BB(如:C:\BB)文件夾,打開BB文件夾,然后把 BB文件夾里的兩個文件夾features和plugins復(fù)制到剛剛新建好C:\eclipse\PluginsEclipse\jode\eclipse,這樣eclipse中就有了兩個插件目錄features and plugins下。 c.在C:\eclipse目錄中新建links(C:\eclip
20、se\links)目錄,在links目錄中建立一個以link為擴展名的文本文件如jode.link,內(nèi)容如下path=C:/eclipse/PluginsEclipse/jode 或者path=C:\\eclipse\\PluginsEclipse\\jode(插件的目錄),保存后重啟eclipse插件就會安裝完成。 注意:link文件中path=插件目錄的path路徑分隔要用\\或是/ Java代碼/eclipse/links/jode.linkwebtools.linkupdateManager.link ... ... /eclipse/ links/ jode.link we
21、btools.link updateManager.link ... ... 可以在eclipse的菜單"Help"-->"About Eclipse SDK"-->"Feature Details" 和"Plug-in Details"中看到新安裝的插件。 第三種:使用eclipse自帶圖形界面安裝[6] 選擇Help > Software Updates > Manager Configuration,再選擇Add > Extension Location 找到你要安裝插件的目錄就可以了。使用eclipse的help->SoftwareUpdates ->Find and instal
22、l... search for new features... 輸入軟件安裝地址進行安裝強烈推薦這種方法,優(yōu)點很多比如可以方便的添加刪除,也不用自己寫link文件! 備注:Eclipse插件的目錄結(jié)構(gòu) Java代碼/eclipse-plugins/eclipse/.eclipseextensionfeatures/ plugins/ 第2.3種方法所指向的目錄都指的是"eclipse"目錄, 如果用第3種方法,在eclipse這個目錄下必須有文件.eclipseextension,如果下載的插件沒有這個文件,那就隨便eclipse安裝目錄下的那個文件拷過去就行,只有有這么個文件就可以
23、了,內(nèi)容沒什么用,主要是一些版本信息。例如: Java代碼 id=org.eclipse.platform name=Eclipse Platform version=3.1.1 id=org.eclipse.platform name=Eclipse Platform version=3.1.1 3 系統(tǒng)分析 3.1 需求分析 網(wǎng)頁游戲有著方便快捷、相應(yīng)配置低的優(yōu)點。網(wǎng)頁游戲的出現(xiàn)彌補了有端網(wǎng)游對于上班人群的空白,而隨著網(wǎng)頁游戲的不斷發(fā)展,目前網(wǎng)頁游戲的受眾群已上至六旬下至青少年,網(wǎng)頁游戲的特性使得網(wǎng)頁游戲老少皆宜而有端網(wǎng)游往往只針對部分人群。
24、 眾所周知,下載一款網(wǎng)絡(luò)游戲往往需要好3到10多個小時不等,而下載完后不喜歡又得卸載再重新下載其他有端網(wǎng)游,過程繁瑣。打開網(wǎng)頁就能玩的優(yōu)點,是網(wǎng)頁游戲趕超有端網(wǎng)游的有利條件。 3.2 可行性研究 無可爭議,《俄羅斯方塊》是有史以來最偉大的游戲之一。它是永恒的娛樂經(jīng)典,但它實際上又和那些傳統(tǒng)的經(jīng)典娛樂方式不同,因為它的本質(zhì)是電子化的,所以它的確屬于現(xiàn)代產(chǎn)物?!抖砹_斯方塊》舉世聞名的游戲性,在該游戲新鮮出爐時就顯得非常直觀。某些與墜落的玩具碎片和它們的形狀有關(guān)的東西,使得哪怕新手也會很自然地企圖把它們排列起來,并加以適當(dāng)組合,就好似《俄羅斯方塊》觸動了我們某些內(nèi)在的感官,使得哪
25、怕是我們當(dāng)中最雜亂無章的人也要把事情整理妥當(dāng)。 在曾經(jīng)發(fā)布過的所有游戲中,《俄羅斯方塊》還被認(rèn)為是僅有的一個能夠真正吸引廣泛人群的作品。某些批評家也許會聲稱,《俄羅斯方塊》要比過去二十年間出現(xiàn)的任何東西都要浪費人們的時間。至于我們,則要欣然提名它為GameSpot評選出的歷史上最偉大游戲之一。 4 系統(tǒng)設(shè)計 4.1 功能概述 本系統(tǒng)分為網(wǎng)頁框架與游戲兩個部分。 4.1.1 網(wǎng)頁框架功能 作為讓java程序在網(wǎng)頁運行的容器。 4.1.2 游戲功能 l 用戶點擊開始游戲,游戲運行。 l 用戶運行游戲時顯示當(dāng)前游戲分?jǐn)?shù)和難度指數(shù)。 l 用
26、戶得到一定分?jǐn)?shù),難度自動提高。 l 用戶點擊暫停游戲,游戲暫停,然后點擊繼續(xù)游戲,游戲繼續(xù)運行。 l 用戶點擊重新開始游戲,當(dāng)前分?jǐn)?shù)清零,難度初始化,游戲界面也重新開始運行游戲。 l 用戶點擊關(guān)于,顯示游戲玩法。 l 用戶關(guān)閉瀏覽器當(dāng)前頁面,游戲關(guān)閉。 5 詳細設(shè)計 本系統(tǒng)分為網(wǎng)頁框架與游戲兩個部分。 5.1網(wǎng)頁框架設(shè)計 作為一個網(wǎng)頁游戲,網(wǎng)頁是必不可少的,但是由于本系統(tǒng)的重點在于游戲,所以網(wǎng)頁做得比較簡單。 圖5.1網(wǎng)頁框架 如圖5.1所示只有一個背景圖片和標(biāo)題。 代碼如下:
27、俄羅斯方塊
俄羅斯方塊
28、Canvas,GameEvent,GameThread,NextGameCanvas。 l Block是畫圖形以及圖形的操作類。 l GameCanvas是游戲中的畫布類[7],用于畫各種方塊。 l GameEvent是游戲中的事件處理類,用于各個事件的處理。 l GameThread是游戲的線程類,管理游戲的運行。 l NextGameCanvas也是游戲中的畫布類,但是與GameCanvas不同,是用于預(yù)覽下一個出現(xiàn)圖形的畫布類。 l Main是游戲的主界面類,用于呈現(xiàn)整個游戲。 5.2.2 java程序功能與實現(xiàn) 5.2.2.1 俄羅斯方塊背景棋盤的產(chǎn)生 游戲背景
29、的棋盤是利用Canvas類畫出來的,如圖5.2所示。 圖5.2棋盤背景 代碼如下: class GameCanvas extends Canvas implements KeyListener { int i = 0, j = 0; int rowNum=15,columnNum=10;//畫圖形的行數(shù)與列數(shù) int[][] scrArr;//屏幕數(shù)組 Color bgcolor;//用于獲得背景顏色 Main haha ; GameCanvas(Main q) { haha = q; sc
30、rArr = new int[16][16];//標(biāo)記界面 初始值全為零 //初始化屏幕,并將屏幕數(shù)組清零的方法 for (int i = rowNum; i >=0; i--) for (int j = columnNum; j >=0 ; j--) scrArr[i][j] = 0; setSize(315,465); bgcolor = getBackground();//得到背景顏色 repaint(); } public synchronized v
31、oid paint(Graphics g)//重新刷新畫布方法 (同步) { for( i = 0; i <=rowNum; i++){ g.drawLine(10,30*i+10,310,30*i+10); //畫橫線 g.drawLine(10,30*i+13,310,30*i+13); //畫橫線 } for( i = 0; i <=columnNum; i++) { g.drawLine(30*i+10,10,30*i+10,460); //畫縱線
32、 g.drawLine(30*i+13,10,30*i+13,460); //畫縱線 } //繪制圖形 for (i = 0; i < rowNum; i++) { for(j = 0; j < columnNum; j++) { switch (scrArr[i][j]) { case 0: break; case 1:
33、 { g.setColor(Color.BLACK); //方塊的背景顏色為黑色 g.fillRect(j * 30 + 10, i * 30 + 10, 29, 29);////畫正在下落的方塊 +1是保持線不被覆蓋 } case 2: { g.setColor(Color.blue); //方塊的前背景顏色為藍色 g.fillRect(j*30+13,i*30+13,29,28);b
34、reak; //畫已經(jīng)落下的方法 } } } } g.dispose(); } 5.2.2.2 俄羅斯方塊功能按鈕的產(chǎn)生 俄羅斯方塊的功能按鈕是在Main類種產(chǎn)生的如圖5.3所示,。 圖5.3功能按鈕 代碼如下: public void init()//初始化界面 { gamecanvas = new GameCanvas(this);//游戲界面繪制類
35、nextgamecanvas = new NextGameCanvas();//游戲預(yù)覽區(qū)的對象 block = new Block(gamecanvas,nextgamecanvas);//方塊類的對象并將GameCanvas 與NextGameCanvas 的對象傳遞給它 gameevent = new GameEvent(this,block);//按鈕功能實現(xiàn)類 gamethread = new GameThread(block,this); setBackground(Color.LIGHT_GRAY);//設(shè)置界面的背景顏色為銀灰色 //對象的初始化
36、 panel1 = new Panel(); panel2 = new Panel(); panel3 = new Panel(); // but1=new Button("降低難度"); // but2=new Button("提高難度"); but3=new Button("重新開始"); but4=new Button("開 始"); but5=new Button("暫 停"); but6=new Button("繼 續(xù)"); but7=new Button("關(guān)于"); label1=new Label("得分
37、:"); label2=new Label("關(guān)數(shù): "); label3=new Label("下一個圖形"); label4=new Label("0"); label5=new Label("1"); label6=new Label("計應(yīng)1005班 易申制作"); //分別設(shè)置組建上的字樣 // but1.setFont(new Font("Dialog",Font.BOLD,15)); // but2.setFont(new Font("Dialog",Font.BOLD,15)); but3.setFont(new Font("
38、Dialog",Font.BOLD,15)); but4.setFont(new Font("Dialog",Font.BOLD,15)); but5.setFont(new Font("Dialog",Font.BOLD,15)); but6.setFont(new Font("Dialog",Font.BOLD,15)); but7.setFont(new Font("Dialog",Font.BOLD,15)); label1.setFont(new Font("Dialog",Font.BOLD,15)); label2.setFont(new Fo
39、nt("Dialog",Font.BOLD,15)); label3.setFont(new Font("Dialog",Font.BOLD,15)); label4.setFont(new Font("Dialog",Font.BOLD,15)); label5.setFont(new Font("Dialog",Font.BOLD,15)); label6.setFont(new Font("Dialog",Font.BOLD,12)); label4.setForeground(Color.blue); label5.setForeground(Col
40、or.blue); label6.setForeground(Color.yellow); //設(shè)置字體大小 this.add(panel1);//主面板 panel1.setLayout(null); panel1.setBounds(0,0,430,500); // 主面板中添加各種組件 panel1.add(label3); label3.setBounds(330,10,80,30); panel1.add(label1); label1.setBounds(340,120,65,25); panel1.a
41、dd(label4); label4.setBounds(340,150,65,25); panel1.add(label2); label2.setBounds(340,180,65,25); panel1.add(label5); label5.setBounds(340,210,65,25); // panel1.add(but1); // but1.setBounds(340,250,65,25); // panel1.add(but2); // but2.setBounds(340,290,65,25); panel1.add(bu
42、t3); but4.setBounds(340,250,65,25); panel1.add(but4); but3.setBounds(340,300,65,25); panel1.add(but5); but5.setBounds(340,350,65,25); panel1.add(but6); but6.setBounds(340,400,65,25); panel1.add(but7); but7.setBounds(340,450,65,25); panel1.add(label6); label6.setBoun
43、ds(70,475,365,25); // 注冊監(jiān)聽按鈕 // but1.addActionListener(this); // but2.addActionListener(this); but3.addActionListener(this); but4.addActionListener(this); but5.addActionListener(this); but6.addActionListener(this); but7.addActionListener(this); //添加游戲圖形的界面 panel1.add(pane
44、l2); panel2.setBounds(5,1,315,470);//設(shè)置游戲圖形界面的大小 panel2.setBackground(Color.gray);//設(shè)置游戲圖形界面的顏色 panel2.add(gamecanvas);// 在panel2 中添加圖形繪制類的對象 gamecanvas.addKeyListener(gamecanvas);//為gamecanvas 添加鍵盤事件 //添加游戲圖形預(yù)纜區(qū)的界面 panel1.add(panel3); panel3.setBounds(340,45,80,75); panel3.s
45、etBackground( Color.WHITE); panel3.add(nextgamecanvas);// 在panel3 中添加圖形預(yù)覽繪制類的對象 } 5.2.2.3 俄羅斯方塊的事件處理 5.2.2.3.1開始按鈕 圖5.4開始圖片 如圖5.4所示點擊開始游戲,游戲開始。代碼如下: public void bagin()// 游戲開始 { if (haha.gameFlag == false && zanting == false) { block.drawBlock
46、(); haha.gamethread.start(); haha.gameFlag = true; haha.gamecanvas.requestFocus(); } else if (zanting == true) { JOptionPane.showMessageDialog(this, "游戲已經(jīng)開始", "俄羅斯方塊", JOptionPane.WARNING_MESSAGE); haha.gamecanvas.requestFocus(); } haha.gamecanvas.requestFocus();
47、 } 5.2.2.3.2重新開始按鈕 圖5.5重新開始 如圖5.5所示用戶點擊重新開始游戲,當(dāng)前分?jǐn)?shù)清零,難度初始化,游戲界面也重新 開始運行游戲。代碼如下: public void asBagin()// 重新開始 { if (haha.gameFlag || haha.gamethread.gameover || zanting == true)// 游戲已經(jīng)開始 { for (int i = 0; i < haha.gamecanvas.rowNum; i++) for (int j = 0; j < haha.gamecanvas.
48、columnNum; j++) haha.gamecanvas.scrArr[i][j] = 0;// 游戲界面重新設(shè)置為零 block.drawBlock();// 產(chǎn)生一個新的方塊 if (haha.gamethread.gameover)// 游戲結(jié)束時的從新開始 { haha.gamethread.gameover = false; haha.gameFlag = true; haha.gamethread.resume(); } haha.gamecanvas.repaint();// 游戲界面的重新繪
49、制 haha.gamesum = 1; haha.gamescore = 0; haha.gamethread.gametime = 1000; haha.label4.setText("0"); haha.label5.setText("1"); } else { JOptionPane.showMessageDialog(this, "游戲還沒有開始,請單擊開始按鈕。", "俄羅斯方塊", JOptionPane.WARNING_MESSAGE); } haha.gamecanvas.requestFoc
50、us();// 使游戲界面獲得焦點 用以判斷鍵盤的輸入 } 5.2.2.3.3暫停按鈕 用戶點擊暫停按鈕,游戲暫停。代碼如下: public synchronized void stop()// 游戲暫停 { if (haha.gamethread != null && haha.gameFlag == true) { haha.gamethread.suspend(); haha.gameFlag = false; zanting = true; } haha.gamecanvas.requestFocus(); }
51、 5.2.2.3.4繼續(xù)按鈕 用戶點擊繼續(xù)按鈕,游戲繼續(xù)。代碼如下: public synchronized void over()// 游戲繼續(xù) { if (haha.gamethread != null && haha.gameFlag == false&&zanting==true) { haha.gamethread.resume(); haha.gameFlag = true; zanting = false; } haha.gamecanvas.requestFocus(); } 5.2.2.3.5關(guān)于按鈕
52、 圖5.6關(guān)于按鈕 如圖5.6所示用戶點擊關(guān)于按鈕,彈出游戲玩法。代碼如下: public void about()// 關(guān)于 { // JOptionPane.showMessageDialog(this,"游戲結(jié)束了!haha.gamescore","俄羅斯方塊",JOptionPane.WARNING_MESSAGE); haha.gamethread.suspend(); JOptionPane.showMessageDialog(this, "本游戲由計應(yīng)1005班易申制作~" + "\n" + "游戲玩法:用鍵盤方向鍵控制游戲。\n"
53、 + "左右鍵移動方塊位置。\n"+"向上鍵和空格鍵使方塊變形。\n"+"祝您玩的愉快哦,親~~", "俄羅斯方塊", JOptionPane.WARNING_MESSAGE); haha.gamethread.resume(); haha.gamecanvas.requestFocus(); } 5.2.2.3.6游戲結(jié)束事件處理 圖5.7游戲結(jié)束 如圖5.7所示游戲結(jié)束,彈出游戲結(jié)束事件。代碼如下: if(!haha.gameFlag) { haha.gameevent.gameOve
54、r(); gameover = true; haha.gameFlag = false ; haha.gamecanvas.repaint(); suspend();//游戲結(jié)束時暫停游戲 } public void gameOver()// 游戲結(jié)束觸發(fā)事件 { // JOptionPane.showMessageDialog(this,"游戲結(jié)束了!haha.gamescore","俄羅斯方
55、塊",JOptionPane.WARNING_MESSAGE); JOptionPane.showMessageDialog(this, "很遺憾,您的游戲結(jié)束了~" + "\n" + "您的分?jǐn)?shù)是:" + haha.gamescore + "\n祝愿您下次獲得更高的分?jǐn)?shù)。", "俄羅斯方塊", JOptionPane.WARNING_MESSAGE); } 5.2.2.4 俄羅斯方塊的產(chǎn)生 圖5.8俄羅斯方塊產(chǎn)生 如圖5.8所示,畫方塊的代碼如下: switch(blockmessage)//得到(11...14,21...24,31...34...
56、....74) { case 11: {}//畫橫條 case 13://畫橫條 { nextscrArr[1][0] = 1 ; nextscrArr[1][1] = 1 ; nextscrArr[1][2] = 1 ; nextscrArr[1][3] = 1 ; break;
57、 } case 12: {}//畫豎條 case 14://畫豎條 { nextscrArr[0][1] = 1 ; nextscrArr[1][1] = 1 ; nextscrArr[2][1] = 1 ; nextscrArr[3][1] = 1 ; break; }
58、 case 21://畫土狀方塊 正 { nextscrArr[1][1] = 1 ; nextscrArr[2][0] = 1 ; nextscrArr[2][1] = 1 ; nextscrArr[2][2] = 1 ; break; } case 22://
59、畫土狀方塊 左 { nextscrArr[1][2] = 1 ; nextscrArr[2][2] = 1 ; nextscrArr[3][2] = 1 ; nextscrArr[2][1] = 1 ; break; } case 23://畫土狀方塊 下 {
60、 nextscrArr[1][0] = 1 ; nextscrArr[1][1] = 1 ; nextscrArr[1][2] = 1 ; nextscrArr[2][1] = 1 ; break; } case 24://畫土狀方塊 右 { nextscrArr[1][1] = 1 ;
61、 nextscrArr[2][1] = 1 ; nextscrArr[3][1] = 1 ; nextscrArr[2][2] = 1 ; break; } case 31: {}//畫田字方塊 case 32: {}//畫田字方塊 case 33: {}//畫田字方塊 ca
62、se 34: {}//畫田字方塊 { nextscrArr[1][1] = 1 ; nextscrArr[1][2] = 1 ; nextscrArr[2][1] = 1 ; nextscrArr[2][2] = 1 ; break; } case 41:{}//畫Z狀
63、方塊 case 43://畫Z狀方塊 { nextscrArr[1][1] = 1 ; nextscrArr[2][1] = 1 ; nextscrArr[2][2] = 1 ; nextscrArr[3][2] = 1 ; break; } case 42:{}//畫Z狀方
64、塊 case 44://畫Z狀方塊 { nextscrArr[2][0] = 1 ; nextscrArr[2][1] = 1 ; nextscrArr[1][1] = 1 ; nextscrArr[1][2] = 1 ; break; } c
65、ase 51:{}//畫反Z狀方塊 case 53:{}//畫反Z狀方塊 { nextscrArr[1][2] = 1 ; nextscrArr[2][2] = 1 ; nextscrArr[2][1] = 1 ; nextscrArr[3][1] = 1 ; break; }
66、 case 52://畫反Z狀方塊 case 54://畫反Z狀方塊 { nextscrArr[1][1] = 1 ; nextscrArr[1][2] = 1 ; nextscrArr[2][2] = 1 ; nextscrArr[2][3] = 1 ; break; } case 61://畫反F狀方塊 正 { nextscrArr[1][1] = 1 ; nextscrArr[1][2] = 1 ; nextscrArr[2][2] = 1 ;
- 溫馨提示:
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)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《有機化合物的合成》
- 某知名化妝品公司各部門職責(zé)
- 八年級數(shù)學(xué)上冊 第13章 全等三角形 13.4 三角形的尺規(guī)作圖優(yōu)質(zhì)課件 (新版)冀教版
- 化學(xué)九上人教版第六單元課題3第1課時
- 長春版小學(xué)五年級下《桂林山水甲天下》
- 現(xiàn)代社會更需要通才-攻辯
- 海底兩萬里(康塞爾)
- 客戶經(jīng)理積分考核介紹
- 現(xiàn)代教育技術(shù)培訓(xùn)
- 混凝土預(yù)制樁、鋼樁施工
- 氨基酸類藥物
- 威尼斯建筑與藝術(shù)雙年展掠影
- 地產(chǎn)營銷操作手冊課件
- 15機械的效率和自鎖222
- 建筑施工事故案例分析