您好,登錄后才能下訂單哦!
假期閑著無事,就用一周多的時間看了百度java吧的一位大神(alwing)發布的視頻,學著用java寫了一個俄羅斯方塊,在此就以發布源代碼以及必要講解的形式來感謝他的幫助。當然我這里也是做了一些改動,做出來的程序界面以及功能沒有和他的完全一樣。
整個程序運行起來的界面如下所示:
程序包含的功能有:
一、
整個程序的設計如下圖所示,共有七個包。因為程序原先的設計是會連接數據庫保存用戶名稱以及分數的,而我的電腦又因為數據庫軟件安裝失敗,所以功能上我做了調整。因此某些包名以及類名會與其本身功能不符。
二、
整個程序中最重要的界面編程是由UI包中的Layer類來建立的,它定義了一個方法使一張64乘64像素的圖片運用drawImage函數來切割、拉伸成預定的寬度和高度,并使之顯示在指定的坐標,從而成為一個窗口。 UI包中的各個Layer***.java類都繼承了Layer類,分別用來實現各個窗口界面,如游戲主窗口(LayerGame)、等級窗口(LayerLevel)、分數窗口(LayerPoint)等。此外我還在窗口表面覆蓋了一層半透明的圖片,從而實現了一種“朦朧感”。
三、
Img類是用來聲明所有的圖片對象的,我在聲明邊框圖片WINDOW時,又故意寫錯路徑,從而實現了無邊框效果。
四、
下落方塊的繪制也是采用圖片切割的方法
每個不同顏色的方塊都一樣大,每次使用drawImage函數來切割不同顏色的方塊。首先要把游戲主窗口看成是一個以左上角為原點的坐標系,游戲主窗口寬為9,高為16,則右下角的坐標應該是(15,8),這樣就可以為下落方塊定義坐標了。再采用List < Point[] >來保存下落方塊中各個小方塊的坐標。
下落方塊應該是如下七種形狀:
則方塊0到方塊6自由下落時的初始坐標應是:
TYPE_CONFIG=new ArrayList<Point[]>(7); TYPE_CONFIG.add(new Point[]{new Point(4,0),new Point(3,0),new Point(5,0),new Point(6,0)}); TYPE_CONFIG.add(new Point[]{new Point(4,0),new Point(3,0),new Point(5,0),new Point(4,1)}); TYPE_CONFIG.add(new Point[]{new Point(4,0),new Point(3,0),new Point(5,0),new Point(3,1)}); TYPE_CONFIG.add(new Point[]{new Point(4,0),new Point(5,0),new Point(3,1),new Point(4,1)}); TYPE_CONFIG.add(new Point[]{new Point(4,0),new Point(5,0),new Point(4,1),new Point(5,1)}); TYPE_CONFIG.add(new Point[]{new Point(4,0),new Point(3,0),new Point(5,0),new Point(5,1)}); TYPE_CONFIG.add(new Point[]{new Point(4,0),new Point(3,0),new Point(4,1),new Point(5,1)});
每一個方塊都有一個中心點,當方塊旋轉時,方塊以該中心點位圓心進行90°的旋轉。 旋轉方法如下:
五、
游戲的邏輯控制主要在GameService類中,實現了判斷是否能消行,消行操作,鍵盤相應操作等
六、
程序中使用了dom4j-1.6.1.jar和jl1.0.1.jar兩個額外的jar包。 dom4j-1.6.1.jar用來讀取xml文件。在config文件夾中有個cfg.xml文件,當中設置了各個窗口的大小以及位置。在程序中使用dom4j-1.6.1.jar來讀取xml數據,然后根據這些數據來配置程序界面。因此只要改變了xml中的數值,就可以改變窗口的大小以及坐標。
jl1.0.1.jar則是用來播放背景音樂的,這是我自己添加的功能,通過這個jar文件提供的方法,可以很簡單地實現播放音樂的功能,具體實現在MP3Player類和Main類中,需要在Main類中新建一個線程。 具體參考方法:JavaSwing后臺播放音樂
七、
源代碼程序下載:源代碼
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。