摘要:利用Flash和Photoshop軟件,結(jié)合動(dòng)作腳本語言Actionscript,設(shè)計(jì)開發(fā)了經(jīng)典的俄羅斯方塊游戲。詳細(xì)介紹了游戲的開發(fā)工具、設(shè)計(jì)思路以及實(shí)現(xiàn)的關(guān)鍵技術(shù)。測試和應(yīng)用表明,該游戲運(yùn)行流暢,且界面美觀,適合在網(wǎng)絡(luò)上傳播和使用。
關(guān)鍵詞:Flash;俄羅斯方塊游戲;游戲設(shè)計(jì);動(dòng)作編程語言
中圖分類號(hào):TP311.52
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1006-8228(2011)08-20-02
引言
隨著互聯(lián)網(wǎng)的發(fā)展和Flash軟件功能的不斷增強(qiáng),F(xiàn)lash已成為制作網(wǎng)絡(luò)動(dòng)畫、小游戲和網(wǎng)頁游戲的一種重要工具?;贔lash開發(fā)的網(wǎng)絡(luò)游戲,玩家不需要安裝專門的插件,并且圖形表現(xiàn)力強(qiáng),客戶端可以實(shí)時(shí)下載,運(yùn)行穩(wěn)定,占用資源少?;谶@些優(yōu)勢,F(xiàn)lash通常成為二維游戲開發(fā)的首選。俄羅斯方塊游戲由俄羅斯人阿列克謝·帕基特諾夫發(fā)明,由于它上手簡單、老少皆宜,從而家喻戶曉,風(fēng)靡世界。本文將采用Flash CS3和Photoshop CS3等工具設(shè)計(jì)開發(fā)俄羅斯方塊游戲。
1、俄羅斯方塊游戲的開發(fā)工具
1.1 Flash CS3
Flash CS3是Adobe公司收購Macromedia公司后將Macromedia Flash更名后的一款動(dòng)畫軟件。Adobe FlashCS3擁有獨(dú)立的視頻編碼器,可以用較小的文件產(chǎn)生可與當(dāng)今最佳視頻編解碼器相媲美的視頻。Adobe Flash CS3的繪圖功能也非常豐富,它使用功能強(qiáng)大的形狀繪制工具,可以自然、直觀的方式輕松彎曲、擦除、扭曲、斜切和組合矢量形狀,還可以通過使用它的內(nèi)置濾鏡實(shí)現(xiàn)神奇效果(如陰影效果、模糊、高光、斜面、漸變斜面和顏色調(diào)整等)。
1.2 Photoshop CS3
Adobe Photoshop是公認(rèn)的最好的通用平面美術(shù)設(shè)計(jì)軟件。其界面友好,功能完善,性能穩(wěn)定,深受廣大平面設(shè)計(jì)者喜愛。Photoshop CS3具有許多重要特性,諸如支持寬屏顯示器的新式版面、集20多個(gè)窗口于一身的dock、占用面積更小的工具欄、多張照片自動(dòng)生成全景、靈活的黑白轉(zhuǎn)換、更易調(diào)節(jié)的選擇工具、智能的濾鏡、改進(jìn)的消失點(diǎn)特性、更好的32位HDR圖像支持等,自Photoshop CS3發(fā)布以來就成為數(shù)字圖像處理產(chǎn)品系列的旗艦產(chǎn)品。
1.3 動(dòng)作編程語言Actionscript
ActionSeript是一種基于ECMAScript的編程語言,可用來編寫Adobe Flash電影和應(yīng)用程序,它標(biāo)志著Flash PlayerRunfime演化過程中的一個(gè)重要階段。ActionScript 3為基于Web的應(yīng)用程序提供了更多的可能性。它進(jìn)一步增強(qiáng)了功能,提供了出色的性能,簡化了開發(fā)的過程,因此更適合高度復(fù)雜的Web應(yīng)用程序和大數(shù)據(jù)集。ActionScript 3可以為以FlashPlayer為目標(biāo)的內(nèi)容和應(yīng)用程序提供高性能和開發(fā)效率。
2、俄羅斯方塊游戲的設(shè)計(jì)
2.1 游戲規(guī)則設(shè)計(jì)
俄羅斯方塊游戲的基本規(guī)則是移動(dòng)、旋轉(zhuǎn)和擺放游戲自動(dòng)輸出的各種方塊,使之排列成完整的一行或多行并且消除得分。俄羅斯方塊的基本元素和規(guī)則如下:
(1)一個(gè)用于擺放小型正方形的平面虛擬場地,其標(biāo)準(zhǔn)大小是行寬為10,列高為20,以每個(gè)小正方形為單位。
(2)一組由4個(gè)小型正方形組成的規(guī)則圖形,稱為方塊。方塊共有7種,分別以S、Z、L、J、I、O、T這7個(gè)字母的形狀來命名。
(3)通過設(shè)計(jì)者預(yù)先設(shè)置的隨機(jī)發(fā)生器不斷地輸出單個(gè)方塊到場地頂部,以一定的規(guī)則進(jìn)行移動(dòng)、旋轉(zhuǎn)、下落和擺放,鎖定并填充到場地中。
(4)每次擺放如果將場地的一行或多行完全填滿,則組成這些行的所有小正方形將被消除,并且以此來換取一定的積分。而未被消除的方塊會(huì)一直累積,并對后來的方塊擺放造成各種影響。
(5)如果未被消除的方塊堆放的高度超過場地所規(guī)定的最大高度,則游戲結(jié)束。
2.2 游戲菜單設(shè)計(jì)
一個(gè)完整的游戲,必須要具有一個(gè)功能基本齊全的游戲主菜單。游戲的主菜單能引導(dǎo)玩家更迅速更準(zhǔn)確地進(jìn)行游戲,大大地提高玩家的游戲速率。本游戲的菜單分為主菜單和界面菜單。
主菜單位于游戲界面的頂端,設(shè)置有“文件”、“查看”、“控制”和“幫助”四個(gè)下拉菜單。界面菜單分為“游戲介紹”、“選擇關(guān)卡”、“開始”三個(gè)按鈕?!坝螒蚪榻B”用來介紹游戲的操作方法;“選擇關(guān)卡”的作用是進(jìn)入游戲的關(guān)卡選擇界面,并允許玩家進(jìn)行關(guān)卡的自由選擇;“開始”的作用是進(jìn)入游戲界面,并開始游戲。
2.3 游戲方塊形狀設(shè)計(jì)
俄羅斯方塊游戲中,方塊是十分重要的元素之一。一個(gè)方塊是由四個(gè)小方塊組成的,所以要首先制作小方塊。方塊有七種顏色,所以小方塊也必須有七種顏色類型。七種顏色分別是淺藍(lán)色、橙色、深藍(lán)色、紫色、黃色、紅色、綠色。
在游戲進(jìn)行的時(shí)候,游戲代碼利用七種顏色即時(shí)地生成不同形狀的方塊,每種顏色的小方塊只能組合生成—種形狀的方塊。
2.4 各種顯示框設(shè)計(jì)
顯示框的作用是用來顯示游戲各種信息的。在游戲進(jìn)行界面中需要顯示很多游戲的信息,包括得分、最高記錄分?jǐn)?shù)、關(guān)卡數(shù)、剩余過關(guān)消行數(shù)、下一個(gè)下落方塊以及停止提示框。如圖1所示的顯示框位于方塊下落范圍框的右邊,數(shù)量一共有五個(gè),由高到低分別顯示:下一個(gè)下落方塊、剩余過關(guān)消行數(shù)、關(guān)卡數(shù)、得分?jǐn)?shù)、最高記錄分?jǐn)?shù)。如圖2所示的顯示框是停止信息顯示框,是在游戲進(jìn)行時(shí)按鍵盤“P”鍵停止游戲的時(shí)候,出現(xiàn)在方塊下落范圍框里面的顯示框,當(dāng)再次按停止鍵的時(shí)候,提示框也會(huì)消失。
3、俄羅斯方塊游戲的實(shí)現(xiàn)
俄羅斯方塊游戲是一款用鍵盤操縱方塊進(jìn)行運(yùn)動(dòng)的游戲,整個(gè)游戲都是在圍繞著方塊的移動(dòng)、旋轉(zhuǎn)、消除中進(jìn)行的。所以游戲的實(shí)現(xiàn)必須有支持方塊進(jìn)行以上動(dòng)作的功能。游戲中的關(guān)鍵技術(shù)包括三大方面,分別是方塊的生成與旋轉(zhuǎn)、方塊的控制以及消除判定與得分計(jì)算。
3.1 方塊的生成
游戲中的每個(gè)方塊都由四個(gè)小方塊組成。游戲設(shè)定有七種不同形狀不同顏色的方塊,那么它們共有7種不同的排列方法。將20*20的方塊作為一個(gè)MC,這就是游戲中出現(xiàn)的最小--單位圖象。這時(shí)可以建立—個(gè)二維數(shù)組,通過確定一個(gè)中心小方塊,和另外三塊方塊的排列位置關(guān)系來確定圖形,以此辦法來構(gòu)造七種形狀的方塊。
3.2 方塊的控制原則
方塊在下落過程中可以進(jìn)行左移、右移、加速下落和旋轉(zhuǎn)等動(dòng)作。只是無論左移、右移、加速下落和旋轉(zhuǎn)都是有限制的,也就是說,在某些情況發(fā)生時(shí),某些動(dòng)作是不被允許的。當(dāng)方塊貼緊游戲空間的左邊緣時(shí),方塊就不能作左移動(dòng)作;當(dāng)方塊貼緊游戲空間的右邊緣時(shí),方塊的右移動(dòng)作也是被禁止的;而當(dāng)方塊不緊貼左右邊緣時(shí),方塊的左移、右移、加速下落動(dòng)作都能允許進(jìn)行。
方塊的旋轉(zhuǎn),其實(shí)是重新生成方塊的過程,以“中心小方塊”為中心,每次旋轉(zhuǎn)都是順時(shí)針轉(zhuǎn)動(dòng)九十度。判斷方塊能否進(jìn)行旋轉(zhuǎn)運(yùn)動(dòng),就要考慮方塊旋轉(zhuǎn)痕跡上是否有阻礙物存在。我們采用了生成若干個(gè)透明的檢測方塊來判斷方塊是否能被允許旋轉(zhuǎn)。
3.3 消除判定
俄羅斯方塊游戲的最基本目標(biāo),不是考慮方塊是否疊得高,也不是考慮方塊是否疊得美觀,而是要考慮消除方塊的行數(shù)是否多。只有滿足條件時(shí),“行”才能被消除?!靶小北幌螅幌靶小币陨系摹靶小睂?huì)下降,覆蓋被消除的“行”。具體流程如圖3所示。
3.4 得分計(jì)算
游戲得分的前提是方塊被消行,一次性消行的行數(shù)不同,得分也會(huì)不同。由于方塊的構(gòu)造問題,一次性消行的行數(shù)最多只有四行。與傳統(tǒng)的俄羅斯方塊一樣,一次清除的行數(shù)越多,得分就越高。在得分的情況下需要做兩件事情,一是清除得分行的方塊,二是將該行以上的方塊都向下移動(dòng)一行的距離。具體的流程如圖4所示。
4、結(jié)束語
本文主要利用Flash開發(fā)了俄羅斯方塊游戲,詳細(xì)介紹了設(shè)計(jì)的關(guān)鍵技術(shù)。設(shè)計(jì)開發(fā)的游戲經(jīng)過測試和使用,取得了良好的效果。在以后的工作中,我們將進(jìn)一步完善游戲的界面、增加游戲的背景音樂和過關(guān)音效等。
參考文獻(xiàn):
[1]馬俊偉.利用VB開發(fā)俄羅斯方塊游戲[J].電腦編程技巧與維護(hù),2009.21.
[2]王彥朝.二維數(shù)組在俄羅斯方塊游戲編程中的應(yīng)用[J].信息與電腦,2010.4.
[3]蔡莉.基于Flash的教育網(wǎng)絡(luò)游戲的設(shè)計(jì)與開發(fā)[J].中國電化教育,2009.12.
[4]杜恩寬.基于Flash圖形引擎的RTS游戲[J].計(jì)算機(jī)工程,2007.15.