Android游戏开发中地图图层开发

地图图层开发

游戏中不免会要绘制地图图层,到底要怎么绘制呢。

1.得到屏幕的长度和宽度的像素,比如320*480;

2.游戏中的地图都是由很多的小的图元构成的,路径啦,陷阱啦,环境啦,都是一个个小的图元组成的。设计好图元的大小,比如20*20。

据此,可以将屏幕用16*24个图元绘制而成。这样就好办了。

3.编写一个GameMap类,类中包括地图信息,同是提供获取地图信息的成员方法getMap()

public class GameMap{

  static byte [][][]map={

                     {0,0,1,0,0,0,1,.........},//16列

                      .....

                      .....

                     {1,0,0,2,3,0,1..........}//共24行

                 }

        {............//第二个地图数据},

        {............//第二个地图数据},

                      ........

            };

//其中每个二维数组即存放了地图信息,比如0表示路径,1表示陷阱,2表示家等等,

//可以根据自己游戏的需求设计各个图元。当然,事先要有每个图元的图像资源。

public static byte [][]  getMap(int level){
     return   map[level-1];

   }

}

4.接下来就可以绘制地图了。

byte [][] currMap;//定义一个当前地图

currMap=getMap(level);//获得当前的地图信息

//初始化图片资源
 public void initBitmap(Game father){
  Resources r = father.getResources();
  hole = BitmapFactory.decodeResource(r,R.drawable.hole);
  ball = BitmapFactory.decodeResource(r,R.drawable.ball);
  endPoint = BitmapFactory.decodeResource(r,R.drawable.goal);
  background = BitmapFactory.decodeResource(r,R.drawable.back);
  .......  

 }

//绘制地图
 public void drawMap(Canvas canvas){
  for(int i=0;i<currMap.length;i++){
   for(int j=0;j<currMap[i].length;j++){//逐个图元位置扫描,在相应位置绘制相应的图元,从而生成地图
    switch(currMap[i][j]){
    case 1:
     canvas.drawBitmap(hole, j*tileSize, i*tileSize, null);
          break;
    case 2:
     canvas.drawBitmap(ball, j*tileSize, i*tileSize, null);
          break;
    case 3:
     canvas.drawBitmap(endPoint, j*tileSize, i*tileSize, null);
          break;
    }
   }
  }
 }

这样,就可以绘制出所需要的地图了。

关于图片分割的实现,可以用地图编辑器实现,Mappy、Tiled、TILE STUDIO。但是我还是不会用,有谁会用这些编辑器实现图形界面的编辑,一起分享一下!

原文地址:https://www.cnblogs.com/pengwang/p/2024781.html