📄 map.java
字号:
package map;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import tools.Tools;
import src.MyCanvas;
public class Map implements Mapinter {
public final int DOWN_MAP = 0;
public final int UP_MAP = 1;
int[][] mapArrayD;// 底层数组
int[][] mapArrayU;// 覆盖层数组
int[][] mapArrayP;// 碰撞层数组
Image img_mapArray[];
private int FramW, FramH;
static public int mapX, mapY;
private int mapW, mapH;// 地图宽高
public Map(String mapName, int array[][], int array1[][], int array2[][],
int frmW, int framH) {
FramW = frmW;
FramH = framH;
mapInit(mapName, array, array1, array2);
}
/**
* 根据一个地图坐标计算地图的显示坐标
*
* @param x
* @param y
*/
public void setXY(int x, int y) {
mapX = (MyCanvas.canvasW >> 1) - x;
mapY = (MyCanvas.canvasH >> 1) - y;
if (mapX > 0) {
mapX = 0;
}
if (mapY > 0) {
mapY = 0;
}
if (mapX < MyCanvas.canvasW - mapW) {
mapX = MyCanvas.canvasW - mapW;
}
if (mapY < MyCanvas.canvasH - mapH) {
mapY = MyCanvas.canvasH - mapH;
}
}
public void mapInit(String mapName, int array[][], int array1[][],
int array2[][]) {
img_mapArray = Tools
.getImageArry(Tools.getImage(mapName), FramW, FramH);
mapArrayD = array;
mapArrayU = array1;
mapArrayP = array2;
mapW = mapArrayD[0].length * FramW;
mapH = mapArrayD.length * FramH;
// for (int i = 0; i < 1000; i++) {
// System.out.println("_______________________");
// }
}
/**
* 绘制地图
*
* @param g
*/
public void showMap(Graphics g, int showType) {
for (int i = 0; i < mapArrayD.length; i++) {
for (int j = 0; j < mapArrayD[i].length; j++) {
if (mapX + j * FramW > -FramW
&& mapX + j * FramW < MyCanvas.canvasW
&& mapY + i * FramH > -FramH
&& mapY + i * FramH < MyCanvas.canvasH) {
switch (showType) {
case DOWN_MAP:
if (mapArrayD[i][j] - 1 >= 0) {
g.drawImage(img_mapArray[mapArrayD[i][j] - 1], mapX
+ j * FramW, mapY + i * FramH, 20);
}
break;
case UP_MAP:
if (mapArrayU[i][j] - 1 >= 0) {
g.drawImage(img_mapArray[mapArrayU[i][j] - 1], mapX
+ j * FramW, mapY + i * FramH, 20);
}
break;
}
}
}
}
}
public int getMapData(int x, int y) {
if (y / FramH >= 0 && y / FramH < mapArrayP.length && x / FramW >= 0
&& x / FramW < mapArrayP[0].length) {
return mapArrayP[y / FramW][x / FramH];
}
return -1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -