在J2ME手机游戏开发中,游戏背景、地图的绘制是非常关键的一环,它可能会影响整个游戏的品质。下面的这个类GameMap实现了游戏图片的切割和绘制的功能,实现的原理是:先建立一个空数组;再切割图片到这个空数组中;然后将切割好的图片数组按游戏要求绘制在屏幕上。

public class GameMap
    int frameWidth, frameHight;// 单元图片的宽、高
    private Image img;
    Image[] imgs;
// 切割后的图片数组
    private int mapArray[][];

    public BombardMap(Image image, int frameWidth, int frameHight, int[][] array) {
        this.img = image;
        this.frameWidth = frameWidth;
        this.frameHight = frameHight;
        mapArray
= array;
     }

    // 切割矩形图对图片切割放到数组里!
    protected void image() {
        imgs
= new Image[frameWidth * frameHight];
        for (int i = 0; i < frameHight; i++) {
            for (int j = 0; j < frameWidth; j++) {
                imgs[i
* Width + j] = Image.createImage(img, j * frameWidth, i* frameHight, 16, 16, 0);
            }
        }
    }

    public void drawBack(Graphics g) {// 画背景或地图
        for (int j = 0; j < 13; j++) { // 判断当前屏幕列上显示的块(X)
            for (int i = 0; i < 11; i++) { // 判断当前屏幕行上显示的块(Y)
                if (mapArray[j][i] > 0) { // 判断绘制处是否空白
                    g.drawImage(imgs[mapArray[j][i] - 1], i * frameWidth, j* frameHight, Graphics.TOP |                                      Graphics.LEFT);
                }
            }
        }
    }

}

上面的类GameMap.java经过简单的修改,可以直接应用在自己的游戏中。

注意:在函数drawBac()中,13和11要根据自己游戏背景的大小进行相应的修改。

 

posted on 2008-07-19 23:03  雪斌  阅读(1732)  评论(0编辑  收藏  举报