Foros del Web » Programación para mayores de 30 ;) » Java »

3 dudas

Estas en el tema de 3 dudas en el foro de Java en Foros del Web. Saludos, soy nuevo en esto de la programacion asi que tengo bastantes dudas claramente basicas xD. 1.- Cree un juego del buscaminas (bastante mas feito) ...
  #1 (permalink)  
Antiguo 27/02/2013, 14:57
 
Fecha de Ingreso: febrero-2013
Ubicación: Santiago
Mensajes: 10
Antigüedad: 11 años, 2 meses
Puntos: 0
3 dudas

Saludos, soy nuevo en esto de la programacion asi que tengo bastantes dudas claramente basicas xD.

1.- Cree un juego del buscaminas (bastante mas feito) en donde hice un tablero de 9x9 con botones, el problema es cuando le adjunto imagenes los botones quedan con marcos sin colorear y por muy grande que sea la imagen ese marco sigue alli. ¿existe alguna forma de eliminar ese marco o hacer que el boton sea igual de grande que la imagen?.

2.- Tambien tengo un juego del gato (o 3 en raya) en donde guardo 9 imagenes en un arreglo y luego pinto cruz o circulo si es que el usuario hizo click sobre un area vacia del tablero. El problema es que tengo que guardar las 9 areas posibles a seleccionar son sus respectivas coordenadas x,y y me preguntaba si habia una forma mas eficiente de hacerlo ya que imaginemos si tuviera que guardar 81 imagenes (la cantidad exacta es debido al siguiente proyecto que tengo en mente) tendria que crear una brutalidad enorme.

Adjunto codigo del gato(o 3 en raya)

Atributos,constructor y el metodo paintComponent:
Código:
public class panel extends JPanel implements MouseListener{

	ImageIcon gato,cruz,circulo;
	ImageIcon imagenes[];
	Point punto;
	int jugada=0;
	
	public panel(){
		gato=new ImageIcon("gato.png");
		cruz=new ImageIcon("cruz.png");
		circulo=new ImageIcon("circulo.png");
		punto= new Point(0,0);
		imagenes=new ImageIcon[9];
		this.addMouseListener(this);
		this.setVisible(true);
		this.setSize(400,400);
	}
	
	public void paintComponent(Graphics g){
		super.paintComponents(g);
		gato.paintIcon(this, g, 0, 0);
		agregarImagenes(g);
	}

	public void mouseClicked(MouseEvent e) {
		punto= e.getPoint();
		repaint();
	}
...
Metodos en cuestion:
agrega las imagenes a un arreglo de imagenes si estan dentro de un margen establecido
Código:
	public void agregarImagenes(Graphics g){
		if(punto.x>5 && punto.x<95 && punto.y>5 && punto.y<95 && imagenes[0]==null){
			if(jugada==0){
				imagenes[0]=cruz;
				jugada++;
			}else{
				imagenes[0]=circulo;
				jugada=0;
			}
		}else if(punto.x>105 && punto.x<195 && punto.y>5 && punto.y<95 && imagenes[1]==null){
			if(jugada==0){
				imagenes[1]=cruz;
				jugada++;
			}else{
				imagenes[1]=circulo;
				jugada=0;
			}
		}else if(punto.x>205 && punto.x<295 && punto.y>5 && punto.y<95 && imagenes[2]==null){
			if(jugada==0){
				imagenes[2]=cruz;
				jugada++;
			}else{
				imagenes[2]=circulo;
				jugada=0;
			}
		}else if(punto.x>5 && punto.x<95 && punto.y>105 && punto.y<195 && imagenes[3]==null){
			if(jugada==0){
				imagenes[3]=cruz;
				jugada++;
			}else{
				imagenes[3]=circulo;
				jugada=0;
			}
		}else if(punto.x>105 && punto.x<195 && punto.y>105 && punto.y<195 && imagenes[4]==null){
			if(jugada==0){
				imagenes[4]=cruz;
				jugada++;
			}else{
				imagenes[4]=circulo;
				jugada=0;
			}
		}else if(punto.x>205 && punto.x<295 && punto.y>105 && punto.y<195 && imagenes[5]==null){
			if(jugada==0){
				imagenes[5]=cruz;
				jugada++;
			}else{
				imagenes[5]=circulo;
				jugada=0;
			}
		}else if(punto.x>5 && punto.x<95 && punto.y>205 && punto.y<295 && imagenes[6]==null){
			if(jugada==0){
				imagenes[6]=cruz;
				jugada++;
			}else{
				imagenes[6]=circulo;
				jugada=0;
			}
		}else if(punto.x>105 && punto.x<195 && punto.y>205 && punto.y<295 && imagenes[7]==null){
			if(jugada==0){
				imagenes[7]=cruz;
				jugada++;
			}else{
				imagenes[7]=circulo;
				jugada=0;
			}
		}else if(punto.x>205 && punto.x<295 && punto.y>205 && punto.y<295 && imagenes[8]==null){
			if(jugada==0){
				imagenes[8]=cruz;
				jugada++;
			}else{
				imagenes[8]=circulo;
				jugada=0;
			}
		}
		pintarImagenes(g);
	}
pinta el arreglo de imagenes en pantalla
Código:
	public void pintarImagenes(Graphics g){
		if(imagenes[0]!=null){
			imagenes[0].paintIcon(this, g, 10, 10);
		}if(imagenes[1]!=null){
			imagenes[1].paintIcon(this, g, 110, 10);
		}if(imagenes[2]!=null){
			imagenes[2].paintIcon(this, g, 210, 10);
		}if(imagenes[3]!=null){
			imagenes[3].paintIcon(this, g, 10, 110);
		}if(imagenes[4]!=null){
			imagenes[4].paintIcon(this, g, 110, 110);
		}if(imagenes[5]!=null){
			imagenes[5].paintIcon(this, g, 210, 110);
		}if(imagenes[6]!=null){
			imagenes[6].paintIcon(this, g, 10, 210);
		}if(imagenes[7]!=null){
			imagenes[7].paintIcon(this, g, 110, 210);
		}if(imagenes[8]!=null){
			imagenes[8].paintIcon(this, g, 210, 210);
		}
	}

3.-¿que libro es bueno para aprender java?. Lo dijo xq encuentro insolito y ridiculo que todo libro que e encontrado asume que se como 3 tipos diferentes de lenguajes para aprender. Curioso fue encontrar libros para aprender C++ que pedian aprender C y libros de C que pedian C++ como requisitos.


De antemano, gracias.
  #2 (permalink)  
Antiguo 28/02/2013, 08:59
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: 3 dudas

Hola:

1. Echa un ojo a la API de JButton y clases padre. Los métodos setMargin() y setBorder() seguramente te permitan quitar ese espacio.

2. Por supuesto no es necesario ir con todas las áreas una a una, basta con algo de matemáticas. Haz un bucle de filas y otro dentro de columnas. Con eso y alguna formulilla puedes calcular el resto de cosas. Te pongo una aproximación, aunque tendrás que revisar y ajustar

Código java:
Ver original
  1. for (int fila=0;i<3;i++){
  2.    for (int columna=0;i<3;i++) {
  3.         int bordeIzquierdoX = fila * 100 + 5;   // da 5, 105, 205, ...
  4.         int bordeDerechoX = fila * 100 + 95;   // da 95, 195, 295, ...
  5.         int bordeSuperiorY = columna * 100 + 5;   // da 5, 105, 205, ...
  6.         int bordeInferiorY = columna + 100 + 95;   // da 95, 195, 295, ..
  7.         int indiceImagen = fila*3+columna;     // da 0, 1, 2, 3, ....
  8.         // Aquí el código que tienes dentro de cualquiera  de los if, reemplazando los valores fijos
  9.         // por la variable adecuada.
  10.    }
  11. }

3. No te puedo aconsejar, nunca he leído un libro de java entero.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 28/02/2013, 15:24
 
Fecha de Ingreso: febrero-2013
Ubicación: Santiago
Mensajes: 10
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: 3 dudas

Muchas gracias por la 2da duda, la verdad la primera la solucione revisando practicamente todos los metodos set de la clase y me sirvio setPreferredSize().

Curioso fue q se me habia ocurrio practicamente la misma solucion en el 3 en raya pero lo vi en mi mente y no sabia como hacer calzar todo ahora q lo veo escrito se ve clarito.

Etiquetas: dudas, metodo, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:50.