📄 separadatosmapa.java
字号:
/*
GAEM - Graphical Adventure Engine for Mobiles (version 0.1)
Copyright (C) 2005 Victor Borrull
This file is part of GAEM.
GAEM is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
GAEM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program;
if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
import javax.microedition.lcdui.game.TiledLayer;
/**
* Esta clase recibe el String que contiene todo el fichero 'nombreNivel_mapa_numeroMapa.dat' por medio del constructor,
* separa los datos e invoca a creaEscenario() pas醤dole los parametros necesarios para que retorne un TiledLayer
* que se almacena en {@link CanvasJuego#escenario CanvasJuego.escenario}.
*/
public class SeparaDatosMapa {
/**Array unidimensional donde se guarda el mapa.*/
private int [] mapita;
/**Char de datos leido.*/
private char letrita;
/**Cadena resultado de ir concatenando la variable {@link #letrita letrita}.*/
private String cadena;
/**Cuenta las comas leidas.*/
private int contadorDeLetritas;
/**N鷐ero de campo a partir del cual viene el mapa.*/
private int contadorDefault;
/**Tama駉 del mapa.*/
private int mCol, mRow;
/**Ruta al fichero de las Tiles.*/
private String mTiles;
/**Tama駉 en pixeles de las Tiles.*/
private int mTAncho, mTAlto;
/**Posici髇 inicial del personaje en el mapa.*/
private int posX, posY;
/**Guarda la referencia a CanvasJuego.*/
private CanvasJuego canvasJ;
private String mDesc;
/** El constructor se encarga de separar los datos.
* @param enBruto Datos leidos del fichero del mapa.
* @param canvas
*/
public SeparaDatosMapa(String enBruto, CanvasJuego canvas, boolean fondo) {
/** Inicializo variables*/
canvasJ = canvas;
letrita = ' ';
cadena = "";
contadorDeLetritas = 0;
contadorDefault = 9;
mCol = 0;
mRow = 0;
mTiles = "";
mTAncho = 16;
mTAlto = 16;
posX = 0;
posY = 0;
mDesc = "";
if (fondo)
contadorDeLetritas = 3; //los archivos del background no tienen posiciones de inicio ni descripcion.
for (int i = 0; i < enBruto.length(); i++) {
letrita = enBruto.charAt(i);
if (letrita == '|') {
contadorDeLetritas++;
switch (contadorDeLetritas) {
case 1:
mDesc = cadena;
break;
case 2:
posX = canvasJ.mPosXProta = Integer.parseInt(cadena) * 16;
break;
case 3:
posY = canvasJ.mPosYProta = Integer.parseInt(cadena) * 16;
break;
case 4: {
mCol = Integer.parseInt(cadena);
break;
}
case 5: {
mRow = Integer.parseInt(cadena);
mapita = new int[mRow*mCol]; //ha de ser global para inicializarse aqui
break;
}
case 6: {
mTiles = cadena;
break;
}
case 7: {
mTAncho = Integer.parseInt(cadena);
break;
}
case 8: {
mTAlto = Integer.parseInt(cadena);
break;
}
default: { //guarda el mapa
if (contadorDeLetritas == contadorDefault) {
mapita[contadorDefault-9] = Integer.parseInt(cadena);
contadorDefault++;
}
break;
}
}
cadena = "";
} else {
cadena += letrita;
}
}
}
/** Devuelve el escenario leido por el {@link #SeparaDatosMapa(String, CanvasJuego) el constructor} en forma de TiledLayer.
* La llamada a {@link CanvasJuego#creaEscenarioNW(int, int, String, int, int, int[]) CanvasJuego.creaEscenarioNW(int, int, String, int, int, int[])}
* se hace desde este m閠odo.
*/
public TiledLayer devuelveEscenario() {
//CREO EL ESCENARIO
return canvasJ.creaEscenarioNW(mDesc, mCol, mRow, mTiles, mTAncho, mTAlto, mapita);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -