在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要根据自己游戏背景的大小进行相应的修改。