王立友
摘 要:《俄羅斯方塊》作為一款益智類小游戲,一度風(fēng)靡全球。游戲操作簡(jiǎn)單靈活,趣味性強(qiáng)。本文闡述了利用Java語(yǔ)言實(shí)現(xiàn)俄羅斯方塊游戲的整個(gè)流程。通過(guò)對(duì)游戲過(guò)程的分析,闡述《俄羅斯方塊》實(shí)現(xiàn)過(guò)程中的架構(gòu)設(shè)計(jì)和技術(shù)難點(diǎn)。
關(guān)鍵詞:俄羅斯方塊游戲;Java
俄羅斯方塊名字的來(lái)由源自于希臘語(yǔ),含義為4,因?yàn)橛螒蛑兴蟹綁K的設(shè)計(jì)均為四個(gè)方塊的組合。俄羅斯方塊游戲是一款經(jīng)久不衰的益智類小游戲[1],游戲規(guī)則簡(jiǎn)單明了,趣味性強(qiáng)。對(duì)于 Java 編程愛(ài)好者而言,是一個(gè)不錯(cuò)的訓(xùn)練項(xiàng)目,難度適中,在游戲的開(kāi)發(fā)設(shè)計(jì)過(guò)程中,不僅可以檢驗(yàn)Java編程知識(shí)的綜合運(yùn)用,提升開(kāi)發(fā)技能,同時(shí)還可以激發(fā)開(kāi)發(fā)者的學(xué)習(xí)興趣。
一、俄羅斯方塊游戲總體設(shè)計(jì)
(一)游戲功能模塊系統(tǒng)構(gòu)成
游戲主要包括3個(gè)功能模塊:方塊控制功能、方塊預(yù)覽功能、游戲積分統(tǒng)計(jì)功能[2]。
1.方塊控制功能:主要通過(guò)條件判斷,來(lái)實(shí)現(xiàn)方塊在下落的過(guò)程中向左移動(dòng)、向右移動(dòng)、方塊旋轉(zhuǎn)、方塊觸邊、方塊觸塊、方塊觸底及滿行消除功能。
2.方塊預(yù)覽功能:當(dāng)游戲界面出現(xiàn)一個(gè)游戲方塊時(shí),游戲方塊預(yù)覽區(qū)域中將隨機(jī)生成下一個(gè)游戲方塊,便于游戲玩家判斷方塊堆疊的走勢(shì),更好地布局方塊的具體下落位置。
3.游戲積分統(tǒng)計(jì)功能:每消除一行得100分,如果一次消除兩行則可以得100+200即300分,以此類推,當(dāng)游戲分?jǐn)?shù)累積到一定程度,系統(tǒng)游戲難度會(huì)增加,共有5個(gè)難度等級(jí),難度系數(shù)1級(jí)最簡(jiǎn)單,5級(jí)最難。當(dāng)游戲失敗時(shí),記錄當(dāng)前分?jǐn)?shù)與歷史最高分相比較,如果超過(guò)歷史最高分,則將當(dāng)前分?jǐn)?shù)記作歷史最高分,并返回游戲初始界面。
(二)游戲運(yùn)行流程
游戲開(kāi)始時(shí),在控制面板頂部隨機(jī)生成方塊,方塊自由下落,判斷下落中是否到達(dá)頂部,如果到達(dá)頂部則表示游戲結(jié)束,否則判斷是否到底或者是否碰到障礙物,如果沒(méi)有碰到障礙物,方塊繼續(xù)下落,如果碰到障礙物,則停止下落,判斷是否有滿行,滿行就消除并累加分?jǐn)?shù)。
二、Java語(yǔ)言實(shí)現(xiàn)俄羅斯方塊游戲
(一)俄羅斯方塊的形態(tài)
方格是組成塊的基本元素,用自己的顏色來(lái)表示塊的外觀(默認(rèn)為黃色),塊類繼承自線程類(Thread),由 4 * 4方格構(gòu)成一個(gè)塊,即一個(gè)塊占4行4列。塊的樣式一共有7種,分別是長(zhǎng)條、方塊型、T型、反‘Z、‘Z型、‘7型、反‘7型。每個(gè)樣式含4種形態(tài)(方塊旋轉(zhuǎn)改變狀態(tài)),共計(jì)28個(gè)形態(tài)。
(二)游戲顯示界面的設(shè)計(jì)
1.游戲背景的設(shè)計(jì):設(shè)置畫(huà)布的寬度和高度分別為315像素和392像素,游戲在初始化過(guò)程中,背景界面整個(gè)被分為一個(gè)20行、12列,讓游戲界面顯示在屏幕正中央位置,即利用屏幕的寬度減掉游戲界面寬度的差除以2以及屏幕的高度減掉游戲界面的高度的差除以2(代碼設(shè)計(jì):(screenSize.width - getSize().width) / 2,(screeSize.height - getSize().height) / 2);)。
2.方塊的生成及預(yù)覽窗口的設(shè)計(jì):利用數(shù)組定義俄羅斯方塊的28個(gè)形態(tài),在背景頂部隨機(jī)生成一個(gè)俄羅斯方塊(4*4方格),并在游戲預(yù)覽界面生成下一個(gè)要出現(xiàn)的方塊形態(tài)。
3.等級(jí)、積分顯示設(shè)計(jì):等級(jí)及積分的設(shè)計(jì)主要利用2個(gè)Label標(biāo)簽和2個(gè)Text文本框進(jìn)行設(shè)計(jì),Label標(biāo)簽的主要作用是解釋說(shuō)明,本文2個(gè)標(biāo)簽的Text屬性值分別是:等級(jí)、積分,用于解釋其下方TextBox文本框內(nèi)容的含義。當(dāng)前游戲的等級(jí)設(shè)置共有5個(gè)等級(jí)(5~9),等級(jí)越高,方塊下落的速度越快,難度越大。當(dāng)積分達(dá)到一定要求時(shí),系統(tǒng)會(huì)自動(dòng)改變等級(jí)標(biāo)簽下面文本框中的數(shù)值,提示用戶難度增加,積分標(biāo)簽下面的TextBox文本框主要顯示游戲玩家當(dāng)前的積分值。
4.系統(tǒng)控制按鍵設(shè)計(jì):主要利用Jpanel容器存放游戲界面上的各個(gè)控制按鈕,包括游戲開(kāi)始、暫停、終止、增加游戲難度、減小游戲難度等按鈕,為了符合玩家的習(xí)慣,將鍵盤(pán)上的上下左右四個(gè)按鍵與方塊的旋轉(zhuǎn)、快速下落、左移、右移等操作一一對(duì)應(yīng)。增加游戲的可操作性。
(三)游戲事件處理程序的設(shè)計(jì)
由于事件處理程序相對(duì)較為繁雜,本文僅提供了游戲設(shè)計(jì)過(guò)程中的主要事件處理程序總覽,包括游戲開(kāi)始、繪制背景、畫(huà)塊、繪制預(yù)覽方塊、左移、右移、旋轉(zhuǎn)、快速下落、擦除組塊、重繪畫(huà)布、觸塊及觸底、消除滿行及積分累加、是否觸頂、游戲結(jié)束等事件處理,主要目的是控制游戲的進(jìn)程。
結(jié)語(yǔ)
本文利用Java語(yǔ)言實(shí)現(xiàn)了俄羅斯方塊游戲,可以讓廣大編程愛(ài)好者更好地學(xué)習(xí)Java語(yǔ)言的應(yīng)用,提高Java實(shí)戰(zhàn)能力,激發(fā)自身的學(xué)習(xí)興趣,對(duì)自己動(dòng)手編寫(xiě)Java應(yīng)用程序的能力會(huì)有很大的益處。
參考文獻(xiàn)
[1] 翟亞靜,成麗君.基于 Android的2048小游戲的簡(jiǎn)單實(shí)現(xiàn)[J].電子技術(shù)與軟件工程,2017(12):251-252.
[2] 馬巧梅,張麗娜.基于C語(yǔ)言的俄羅斯方塊游戲的設(shè)計(jì)[J].微型電腦應(yīng)用,2017(33):7-9.