zoukankan      html  css  js  c++  java
  • 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。但是我还是不会用,有谁会用这些编辑器实现图形界面的编辑,一起分享一下!

  • 相关阅读:
    冒险岛数据封包分析
    【转】安装版系统封装入门详细解说
    拦截其它程序的网络数据封包
    封包加密解密-01
    vs2010下载Microsoft Visual Studio 2010 Express(vs2010中文版下载)速成官方合集正式版
    《Visual C++开发实战1200例 第1卷》扫描版[PDF]
    《Visual Basic开发实战1200例》包括第I卷、第II卷共计1200个例子,本书是第I卷,共计600个例子。
    服务器上常见软件
    HDU1686
    HDU3336
  • 原文地址:https://www.cnblogs.com/pengwang/p/2024781.html
Copyright © 2011-2022 走看看