程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 使用MIDP2.0開發游戲(4)改進的地圖生成方式

使用MIDP2.0開發游戲(4)改進的地圖生成方式

編輯:JAVA編程入門知識

  

  上次我們用Sprite實現了背景,但是這樣不便於通過地圖數據生成地圖。通常,游戲中的地圖都被分成NxN的方格,一般僅有幾種圖案。幸運的是,SUN在MIDP 2.0已經考慮到了游戲開發者需要的這個功能,TiledLayer便是通過貼圖實現的層,它的使用同樣異常簡單!

  首先預備好我們需要的小塊區域,在坦克大戰的地圖中,一共有下面5種:

  使用MIDP2.0開發游戲(4)改進的地圖生成方式 (注重這是放大的jpg格式,你需要處理成40x8的png格式)

  分別是冰面,磚塊,巖石,河流,樹木,具體有什麼用玩過的肯定都知道,我就不多說了。

  首先讀入Image:Image.createImage("/res/img/tile.png");

然後就可以創建TiledLayer了:new TiledLayer(4, 4, image, 8, 8);

  前兩個參數指定NxN的方格數,後兩個參數指定方格大小(也不一定非得是方格),我們用8x8的大小,這樣讀入的40x8的png圖片便被分成了5個小塊,編號是1-5。為什麼不從0開始編號?因為0是用來表示透明塊的。

  下面定義一個二維數組,表示地圖數據:

  int[][] map = new int[][] {
      {0, 0, 1, 4},
      {1, 1, 2, 4},
      {0, 1, 2, 4},
      {0, 1, 1, 3},
  };

  最後用TiledLayer.setCell(col, row, index);就給每個小塊貼上對應的圖片。假如index為0,則該小塊是透明的。

  OK,我們把上次的spriteBackground改成layerBackground:

  public class TankGameCanvas extends GameCanvas implements Runnable {
      ...
      private TiledLayer layerBackground;
  
      // ConstrUCtor and initialization
      public TankGameCanvas() {
          ...
          try {
              layerBackground = new TiledLayer(22, 22, Image.createImage("/res/img/tile.png"), 8, 8);
              int EMP = 0;
              int ICE = 1;
              int BRK = 2;
              int ROC = 3;
              int RIV = 4;
              int TRE = 5;
              // 地圖太大了!!!
              int[][] map = new int[][] { // 22X22
                  {EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP},
                  {EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP, EMP},
                  {ROC, ROC, ROC, ROC, EMP, EMP, EMP, EMP, EMP, EMP, ICE, ICE, ICE, ICE, ICE, ICE, BRK, BRK, BRK, BRK, BRK, BRK},
                  {ROC, ROC, ROC, ROC, EMP, EMP, EMP, EMP, EMP, EMP, ICE, ICE, ICE, ICE, ICE, ICE, BRK, BRK, BRK, BRK, BRK, BRK},

  
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved