muy buenas tardes Foreros, estoy empezando a usar JAVA para un materia y nos pidieron desarrollar un juego sencillo. he estado intentando hacer el clásico "cuadritos" o "puntos y cuadrados", el juego donde a travès de lineas se armas cuadrados y gana quien màs halla formado.
el programa està compuesto actualmente por los mètodos "crearTablero", "clicLinea", "paint" el problema està en que yo trabajo las lìneas como un todo al intentar tomar las coordenadas de donde se hace clic, solo puedo calcular las lìneas verticales u horizontales, pero no ambas a la vez.
me dijeron que tomara cada lìnea como objeto y que el objeto se activara al darle click sobre èl, pero no sè como hacerlo.
alguien me podrìa orientar con ello?
acà el còdigo hasta ahora:
Código java:
Ver original/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package paqGrilla;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JFrame;
public class Grilla
extends JFrame { public int celdas = 10;
private int TAM = celdas + 1; // tamaño de la tabla
private int LARGO = 40; // Largo de la línea
private int lineaVisible[][][][] = new int[TAM][TAM][TAM][TAM]; // 0 oculto; 1 visible
private int celda[][] = new int[TAM][TAM];
private int estado = 0; // 0 inicio; 1 final
private int lineasVistas = 0;
public Grilla() {
setTitle("Mi Grilla");
setSize(440,460);
setVisible(true);
setResizable(true);
crearTablero();
if (estado==0) {
int x = me.getXOnScreen();
int y = me.getYOnScreen();
int x1 = x/40;
int y1 = (y-40)/40;
int x2 = x/40;
int y2 = y/40;
clicLinea(x1,y1,x2,y2);
}
}
});
}
});
}
public void clicLinea (int x1, int y1, int x2, int y2) {
if (lineaVisible[x1][y1][x2][y2]==0) {
lineaVisible[x1][y1][x2][y2]=1;
lineasVistas++;
repaint();
}
}
public void crearTablero(){
for (int p1=0; p1<TAM; p1++) {
for (int p2=0; p2<TAM; p2++) {
int x1 = p1;
int y1 = p2;
int x2 = p1;
int y2 = p2+1;
if (y2<TAM) {
for (int p3=0; p3<2; p3++) {
if (p3==0) { // Vertical
lineaVisible[x1][y1][x2][y2] = 0;
} else { // Horizontal
lineaVisible[y1][x1][y2][x2] = 0;
}
}
celda[x1][y1]=0;
}
}
}
estado = 0;
lineasVistas = 0;
}
paint(g);
}
g.
setFont(new Font("Arial",
Font.
BOLD,
10)); g.clearRect(0, 0, getWidth(), getHeight());
for (int p1=0; p1<TAM; p1++) {
for (int p2=0; p2<TAM; p2++) {
int x1 = p1*40;
int y1 = p2*40;
int x2 = p1*40;
int y2 = (p2+1)*40;
if (y2<TAM*40) {
for (int p3=0; p3<2; p3++) {
if (p3==0) { // Vertical
if (lineaVisible[x1/40][y1/40][x2/40][y2/40]==1) {
} else {
g.
setColor(Color.
LIGHT_GRAY); }
g.drawLine(x1+20, y1+40, x2+20, y2+40);
} else { // Horizontal
if (lineaVisible[y1/40][x1/40][y2/40][x2/40]==1) {
} else {
g.
setColor(Color.
LIGHT_GRAY); }
g.drawLine(y1+20, x1+40, y2+20, x2+40);
}
}
}
}
}
}
/**
* @param args the command line arguments
*/
public static void main
(String[] args
) { new Grilla();
}
}