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

  • 相关阅读:
    start tag, end tag issues in IE7, particularly in xslt transformation
    用SandCastle为注释生成chm文档
    Firebug
    架构的重点
    Linux Shell常用技巧(十) 管道组合
    Linux JDK升级
    Linux Shell常用技巧(十二) Shell编程
    Packet Tracer 5.0实验(一) 交换机的基本配置与管理
    Linux Shell常用技巧(六) sort uniq tar split
    Linux Shell常用技巧(二) grep
  • 原文地址:https://www.cnblogs.com/pengwang/p/2024781.html
Copyright © 2011-2022 走看看