欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實現(xiàn)俄羅斯方塊

 更新時間:2018年06月27日 09:05:38   作者:葉應是葉  
這篇文章主要為大家詳細介紹了java實現(xiàn)俄羅斯方塊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

假期閑著無事,就用一周多的時間看了百度java吧的一位大神(alwing)發(fā)布的視頻,學著用java寫了一個俄羅斯方塊,在此就以發(fā)布源代碼以及必要講解的形式來感謝他的幫助。當然我這里也是做了一些改動,做出來的程序界面以及功能沒有和他的完全一樣。

整個程序運行起來的界面如下所示:

程序包含的功能有:

  • 俄羅斯方塊本身基本的游戲元素
  • 顯示下一輪出現(xiàn)的方塊、當前等級、分數(shù)、消行數(shù)等數(shù)值
  • 以值槽形式顯示當前等級到下一等級的距離
  • 左上角頭像以及背景圖片會隨著等級的升高而改變
  • 循環(huán)播放背景音樂

一、

整個程序的設計如下圖所示,共有七個包。因為程序原先的設計是會連接數(shù)據(jù)庫保存用戶名稱以及分數(shù)的,而我的電腦又因為數(shù)據(jù)庫軟件安裝失敗,所以功能上我做了調整。因此某些包名以及類名會與其本身功能不符。

二、

整個程序中最重要的界面編程是由UI包中的Layer類來建立的,它定義了一個方法使一張64乘64像素的圖片運用drawImage函數(shù)來切割、拉伸成預定的寬度和高度,并使之顯示在指定的坐標,從而成為一個窗口。 UI包中的各個Layer***.java類都繼承了Layer類,分別用來實現(xiàn)各個窗口界面,如游戲主窗口(LayerGame)、等級窗口(LayerLevel)、分數(shù)窗口(LayerPoint)等。此外我還在窗口表面覆蓋了一層半透明的圖片,從而實現(xiàn)了一種“朦朧感”。

三、

Img類是用來聲明所有的圖片對象的,我在聲明邊框圖片WINDOW時,又故意寫錯路徑,從而實現(xiàn)了無邊框效果。

四、

下落方塊的繪制也是采用圖片切割的方法

 

每個不同顏色的方塊都一樣大,每次使用drawImage函數(shù)來切割不同顏色的方塊。首先要把游戲主窗口看成是一個以左上角為原點的坐標系,游戲主窗口寬為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類中,實現(xiàn)了判斷是否能消行,消行操作,鍵盤相應操作等

六、

程序中使用了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數(shù)據(jù),然后根據(jù)這些數(shù)據(jù)來配置程序界面。因此只要改變了xml中的數(shù)值,就可以改變窗口的大小以及坐標。

jl1.0.1.jar則是用來播放背景音樂的,這是我自己添加的功能,通過這個jar文件提供的方法,可以很簡單地實現(xiàn)播放音樂的功能,具體實現(xiàn)在MP3Player類和Main類中,需要在Main類中新建一個線程。 具體參考方法:JavaSwing后臺播放音樂

七、

源代碼程序下載:源代碼

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • java 中 MD5加密的實例

    java 中 MD5加密的實例

    這篇文章主要介紹了java 中 MD5加密的實例的相關資料,通過本文希望能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • java實現(xiàn)學生教師管理系統(tǒng)

    java實現(xiàn)學生教師管理系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)學生教師管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 注入jar包里的對象,用@autowired的實例

    注入jar包里的對象,用@autowired的實例

    這篇文章主要介紹了注入jar包里的對象,用@autowired的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • SpringBoot?屬性配置中獲取值的方式

    SpringBoot?屬性配置中獲取值的方式

    這篇文章主要介紹了SpringBoot?屬性配置中獲取值的方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • java ReentrantLock條件鎖實現(xiàn)原理示例詳解

    java ReentrantLock條件鎖實現(xiàn)原理示例詳解

    這篇文章主要為大家介紹了java ReentrantLock條件鎖實現(xiàn)原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 解決SpringBoot jar包中的文件讀取問題實現(xiàn)

    解決SpringBoot jar包中的文件讀取問題實現(xiàn)

    這篇文章主要介紹了解決SpringBoot jar包中的文件讀取問題實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • Java實現(xiàn)調用MySQL存儲過程詳解

    Java實現(xiàn)調用MySQL存儲過程詳解

    相信大家都知道存儲過程是在大型數(shù)據(jù)庫系統(tǒng)中,一組為了完成特定功能的SQL語句集。存儲過程是數(shù)據(jù)庫中的一個重要對象,任何一個設計良好的數(shù)據(jù)庫應用程序都應該用到存儲過程。Java調用mysql存儲過程,實現(xiàn)如下,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11
  • Java優(yōu)先隊列?priority?queue

    Java優(yōu)先隊列?priority?queue

    本文主要介紹了Java優(yōu)先隊列?priority?queue,優(yōu)先隊列是一種特殊的數(shù)據(jù)結構隊列中每一個元素都被分配到一個優(yōu)先權值,出隊順序按照優(yōu)先權值來劃分。一般有兩種出隊順序高優(yōu)先權出隊或低優(yōu)先權出隊,想了解具體內容的小伙伴可以參考下文內容,希望對你有所幫助
    2021-12-12
  • 淺談Java生命周期管理機制

    淺談Java生命周期管理機制

    最近有位細心的朋友在閱讀筆者的文章時,對java類的生命周期問題有一些疑惑,筆者打開百度搜了一下相關的問題,看到網上的資料很少有把這個問題講明白的,主要是因為目前國內java方面的教材大多只是告訴你“怎樣做”,但至于“為什么這樣做”卻不多說
    2016-01-01
  • Java真題實練掌握哈希表的使用

    Java真題實練掌握哈希表的使用

    哈希表是一種根據(jù)關鍵碼去尋找值的數(shù)據(jù)映射結構,該結構通過把關鍵碼映射的位置去尋找存放值的地方,說起來可能感覺有點復雜,我想我舉個例子你就會明白了,最典型的的例子就是字典
    2022-07-07

最新評論