多个背景的处理

8 篇文章 0 订阅
7 篇文章 0 订阅
通常卷轴设计类的游戏都会有好几个关口,或者叫做等级。不同的关口的背景地图是不一样的。这里简单起见,设立两个关口。
这时遇到的一个问题是,不同的关口对应不同的背景地图,而将这些设定都放在GameScreen类里就不怎么合适了。为了便于管理和以后的扩展,新建一个GameMap类来管理背景地图。
    public GameMap(int screenHeight) throws Exception {
        this.screenHeight = screenHeight;
        setMap(2); // default to set to terrain 1
    }
 
    // Set Appropriate Terrain and Map
    public void setMap(int level) throws Exception {
        Image tileImages = null;
        switch (level) {
        case 1:
            tileImages = Image.createImage("/terrain1.png");
            currentMap = map1;
            groundColor = 0xF8DDBE;
            break;
        case 2:
            tileImages = Image.createImage("/terrain2.png");
            currentMap = map2;
            groundColor = 0xDECE6B;
            break;
        default:
            tileImages = Image.createImage("/terrain1.png");
            currentMap = map1;
            groundColor = 0xF8DDBE;
            break;
        }
 
        terrain = new TiledLayer(TILE_NUM_COL, TILE_NUM_ROW, tileImages,
                TILE_WIDTH, TILE_HEIGHT);
        // Map Terrain Map with actual graphic from terrain.png
        for (int row = 0; row < TILE_NUM_ROW; row++) {
            for (int col = 0; col < TILE_NUM_COL; col++) {
                terrain.setCell(col, row, currentMap[row][col]);
            }
        }
        terrainScroll = 1 - (terrain.getCellHeight() * terrain.getRows())
                + screenHeight;
        terrain.setPosition(0, terrainScroll);
    }
 
    public void scrollTerrain() {
        if (terrainScroll < 0) {
            terrainScroll += 2;
            terrain.setPosition(0, terrainScroll);
        }
    }
 
    // Terrain Getter
    public TiledLayer getTerrain() {
        return terrain;
    }
 
    // Ground/Floor color Getter
    public int getGroundColor() {
        return groundColor;
    }
打包的代码和资源文件在: http://www.j2medev.com/bbs/dispbbs.asp?boardid=11&id=4028&star=1#21815
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值