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