TiledLayer, para J2SE???

Iniciado por egyware, 27 Diciembre 2007, 17:27 PM

0 Miembros y 1 Visitante están viendo este tema.

egyware

hola a todos ::)
como ya algunos saben no existe tal clase para J2SE solo J2ME
pero ami se me ocurrio como hacerla pero al probarla (osea realizar un mapa) no me funcionaba y todas las piezas estaban desordenadas
como no traje mi codigo voy a tratar de acordarme como lo escribi en mi casa
espero que alguien encuentre el problema
Código (java) [Seleccionar]

public class TiledLayer /*extends Layer*/{
//el aporte de la clase Layer es solo nombre a metodos
private BufferedImage tiles[];
private BufferedImage new;
private int map[];
//gran problema aqui
public TilesLayer(int row,int column,BufferedImage img, int width,int heigth){
int ancho =  (int)(img.getWidth()/width);//tomo las cantidad de columnas
int alto =  (int)(img.getHeigth()/heigth);//tomo la cantida de filas
tiles = new BufferedImage[ancho*alto];/*defino mi array de imagenes por la cantidad que necesito*/
new = BufferedImage(row*heigth,column*width,BufferedImage.INT_TYPE_ARGB);
//no me acuerdo bien de la constante que necesito
//y aqui voy a hacer pedasos la imagen BufferedImage.INT_TYPE_ARGB
//no se si ta bien escrita pero en mi casa sip lo está
int posicion = 0;
for(int i = 0;i<ancho;i++)
for(int j = 0;j<alto;j++){
tiles[posicion] = img.getSubImage(i*width,j*heigth,width,heigth);
posicion++;
}//fin for i y j
}// fin del constructor
public void setMap(int map[]){ //gran problema aqui por copy paste
this.map = map;
for(int i = 0;i<map.length;i++){
int c = i % row;
int r = (c - i) * column;
setCell(r,c,i);
}//fin for i
}//fin del metodo
public void setCell(int row, int column,int index){//problema aqui
Graphics g = new.getGraphics();
g.drawImage(tiles[index],row*heigth,column*width,null);
}//fin del metodo
}//fin de la clase

bueno espero que puedan encontrar el problema y si por algun motivo me equivoque en ortografia no es mi culpa es culpa del eclipse que no alcanzo de escribir y me completa la frase  :P
bueno pienso que hasta el momento el problema esta en el contructor
mañana si me acuerdo voy a colocar lo demas del codigo que creo que tambien tengo problema al setear correctamente el mapa  :-(
xauu
gracias
pd:
aqui tengo el code que hice
Código (java) [Seleccionar]

package egyware.empires.graphics;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
/**
* @author Edgardo
*
*/
public class TiledLayer /*extends Layer*/ {
private int[] map;
private BufferedImage[]res;
private BufferedImage tiledImage;
private int row,col;
private int x,y;
private int w,h;
private boolean visible;
public TiledLayer(int row, int c,BufferedImage bi,int w,int h){
int an = bi.getWidth()/w;
int al = bi.getHeight()/h;
this.res = new BufferedImage[(an*al)];
this.row = row;
this.col = c;
this.h = h;
this.w = w;
int a = 0;
tiledImage = new BufferedImage(col*w,row*h,BufferedImage.TYPE_INT_ARGB);
for (int i = 0;i<an;i++)
for (int j = 0;j<al;j++){
try {
//System.out.println("r"+(j*h)+" "+w);
//System.out.println("c"+(i*c)+" "+h);
res[a] = bi.getSubimage(i*w,j*h,w,h);


a++;
}catch(Exception e){
System.err.println(e.getMessage());
}/**/
/*for (int i=0; i < an*al; i++) {
      int column = i % col;
      int brow = (i - column) / this.row;
      try{
      res[i] = bi.getSubimage(column*w,brow*h,w,h);
      }catch(Exception e){
System.err.println(e.getMessage());
}
    }  */   
}

}
public void setMap(int[] map){
this.map = map;
for (int i=0; i < map.length; i++) {
      int column = i % col;
      int row = (i - column) / this.row;
      //System.out.println(map[i]);
      setCell(column,row,map[i]);
    }     

}
public int[] getMap(){
return map;
}
/* (non-Javadoc)
* @see egyware.empires.graphics.Layer#getX()
*/
public int getX() {
return x;
}
public void setCell(int c,int r,int i){
Graphics g = tiledImage.getGraphics();
g.drawImage(res[i],c*w,r*h,null);
}
/*public int getCell(int c,int r){
return map[r][c];
}*/
public int getCellHeight(){
return h;
}
public int getCellWidth(){
return w;
}
public int getColumns(){
return col;
}
public int getRows(){
return row;
}
/* (non-Javadoc)
* @see egyware.empires.graphics.Layer#getY()
*/
public int getY() {
return y;
}

/* (non-Javadoc)
* @see egyware.empires.graphics.Layer#setX(int)
*/
public void setX(int nx) {
x = nx;
}

/* (non-Javadoc)
* @see egyware.empires.graphics.Layer#setY(int)
*/
public void setY(int ny) {
y = ny;
}

/* (non-Javadoc)
* @see egyware.empires.graphics.Layer#paint(java.awt.Graphics)
*/
public void paint(Graphics g) {
if(visible){
g.drawImage(tiledImage,x,y,null);
/*int a = 0;
for (int i = 0;i<col;i++)
for (int j = 0;j<w;j++){
try {
g.drawImage(res[a],x,y,null);
a++;
}catch(Exception e){
System.err.println(e.getMessage());
}
}*/}

}
public boolean isVisible() {
return visible;
}
public void setVisible(boolean b) {
visible = b;

}

}

mmm... que tristesa pero hoy a sido el peor día de mi vida  :-( :-( :-( :-X

egyware

#1
mmm veo que nadie ha encontrado mi problema  :( a que tristeza tengo bueno tratare de arreglarlo

PD:jijijij jajaja
ya lo tengo casi listo jijiji
realize un estudio a fondo solo me queda cambiar el source
jajajaaj ;D ::)