Si estaba viendo eso, no había leído de la recursividad hasta ahora. pasa que si quiero separar los elementos visuales de las acciones de cada botón, me veo obligado a hacer eso.
tengo dos opciones:
o pongo en la misma clase los elementos visuales del frame y los eventos de cada uno.
o le pongo un limite de recursividad por ejemplo que esta de por si es un lio por que me tendria que poner a contar cuantas veces interactuan el primero con el segundo
hay otra forma?
dejo el codigo cambiado hasta ahora.
Aca escribiendo esto se me ocurrio que si puedo poner asignarle a los botones el "addActionListener" desde la clase eventos, podria separar botones de eventos no?
voy a ver si me sale
ejecutable que ya ni me acuerdo para que lo queria poner en una clase a parte:
Código Java:
Ver originalpublic class Ejecutable extends MainVentana{
public static void main
(String [] args
){ MainVentana a=new MainVentana();
}
}
MainVentana - Saque todos los botones y solo deje los atributos del jframe y la posicion de los botones
Código Java:
Ver originalpublic class MainVentana extends BotonesJuego{
BotonesJuego boton=new BotonesJuego();
public MainVentana(){
//definir atributo del frame--------
hola.setTitle("TATETI - Tres En Raya");
hola.setLayout(null);
hola.setResizable(false);
hola.
setBackground(Color.
black); hola.
setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE); hola.setVisible(true);
hola.setBounds(400, 300, 350, 290);
boton.BJuego3x3();
boton.BJuego4x4();
boton.menu();
menupantalla();
BJuego3x3();
BJuego4x4();
}
//agrega los botnes y les da su posicion inicial-------------------------------
public void BJuego3x3(){
boton.BJuego3x3();
for (int i=0;i<boton.tateti3.length;i++){
for (int j=0;j<boton.tateti3[i].length;j++){
hola.add(boton.tateti3[i][j]);
}
}
boton.tateti3[0][0].setBounds(10, 10, 50, 50);
boton.tateti3[0][1].setBounds(70, 10, 50, 50);
boton.tateti3[0][2].setBounds(130, 10, 50, 50);
boton.tateti3[1][0].setBounds(10, 70, 50, 50);
boton.tateti3[1][1].setBounds(70, 70, 50, 50);
boton.tateti3[1][2].setBounds(130, 70, 50, 50);
boton.tateti3[2][0].setBounds(10, 130, 50, 50);
boton.tateti3[2][1].setBounds(70, 130, 50, 50);
boton.tateti3[2][2].setBounds(130, 130, 50, 50);
}//fin de metodo BJuego3x3
public void BJuego4x4(){
boton.BJuego4x4();
boton.tateti4[0][0].setBounds(10, 10, 30, 30);
boton.tateti4[0][1].setBounds(60, 10, 30, 30);
boton.tateti4[0][2].setBounds(110, 10, 30, 30);
boton.tateti4[0][3].setBounds(160, 10, 30, 30);
boton.tateti4[1][0].setBounds(10, 60, 30, 30);
boton.tateti4[1][1].setBounds(60, 60, 30, 30);
boton.tateti4[1][2].setBounds(110, 60, 30, 30);
boton.tateti4[1][3].setBounds(160, 60, 30, 30);
boton.tateti4[2][0].setBounds(10, 110, 30, 30);
boton.tateti4[2][1].setBounds(60, 110, 30, 30);
boton.tateti4[2][2].setBounds(110, 110, 30, 30);
boton.tateti4[2][3].setBounds(160, 110, 30, 30);
boton.tateti4[3][0].setBounds(10, 160, 30, 30);
boton.tateti4[3][1].setBounds(60, 160, 30, 30);
boton.tateti4[3][2].setBounds(110, 160, 30, 30);
boton.tateti4[3][3].setBounds(160, 160, 30, 30);
for (int i=0;i<boton.tateti4.length;i++){
for (int j=0;j<boton.tateti4[i].length;j++){
hola.add(boton.tateti4[i][j]);
}
}//fin de for
}//fin de metodo
public void menupantalla(){
boton.menu();
boton.opciones[0].setBounds(200, 10, 120, 30);
boton.opciones[1].setBounds(200, 50, 120, 30);
boton.opciones[2].setBounds(200, 90, 120, 30);
boton.opciones[3].setBounds(200, 130, 120, 30);
boton.opciones[4].setBounds(200, 170, 120, 30);
boton.opciones[5].setBounds(200, 210, 120, 30);
Estado2.setBounds(10, 220, 170, 20);
Estado.setBounds(10, 190, 170, 20);
hola.add(Estado2);
hola.add(Estado);
hola.add(boton.opciones[0]);
hola.add(boton.opciones[1]);
hola.add(boton.opciones[2]);
hola.add(boton.opciones[3]);
hola.add(boton.opciones[4]);
hola.add(boton.opciones[5]);
}
}
y los botones y el ActionListener, despues tengo otras 2 clases mas que es la parte ""logica""
Código Java:
Ver original
String opt
[]={"Un Jugador",
"Dos Jugadores",
"Tres X Tres",
"Cuatro X Cuatro",
"Nuevo Juego",
"Salir"}; Juego3x3 tres=new Juego3x3();
int a,b;
boolean unJug=false,movmaq=false;
//------------------atributos de botones---------------------------------------
public void BJuego3x3(){
for (int i=0;i<tateti3.length;i++){
for (int j=0;j<tateti3[i].length;j++){
tateti3[i][j].setVisible(false);
tateti3[i][j].addActionListener(this);
}
}
}
public void BJuego4x4(){
for (int i=0;i<tateti4.length;i++){
for (int j=0;j<tateti4[i].length;j++){
tateti4[i][j].setVisible(false);
tateti4[i][j].addActionListener(this);
}
}
}
public void menu(){
for (int i=0;i<opciones.length;i++){
opciones[i].setVisible(true);
opciones[i].addActionListener(this);
}
Estado.setEditable(false);
Estado.setVisible(true);
Estado2.setEditable(false);
Estado2.setVisible(true);
}
//----------------- acciones de botones OPCIONES-------------------------------
public void unJugador(){
opciones[0].setEnabled(false);
opciones[1].setEnabled(false);
unJug=true;
}
public void DosJugadores(){
opciones[0].setEnabled(false);
opciones[1].setEnabled(false);
unJug=false;
}
public void tabla3x3(){
for (int i=0;i<tateti3.length;i++){
for (int j=0;j<tateti3[i].length;j++){
tateti3[i][j].setVisible(true);
}}
opciones[2].setEnabled(false);
opciones[3].setEnabled(false);
tres.inicializarTablero();
}
public void tabla4x4(){
for (int i=0;i<tateti4.length;i++){
for (int j=0;j<tateti4[i].length;j++){
tateti4[i][j].setVisible(true);
}
}
opciones[2].setEnabled(false);
opciones[3].setEnabled(false);
}
//-------------------accion de botones 3x3---------------------------------------
public void mensajetxt3(){
if(tres.enJuego){
if(tres.turno1){
Estado.setText(tres.tImpreso);
Estado.
setForeground(Color.
red); }else{
Estado.setText(tres.tImpreso);
Estado.
setForeground(Color.
blue); }
}else{
Estado.setText("Felicidades jugador " +tres.Ganador);
for (int i=0;i<tateti3.length;i++){
for(int j=0;j<tateti3[i].length;j++){
if (tres.tablero[i][j]==0){
tateti3[i][j].setEnabled(false);
}
}
}
}
}
//-------------------ActionEvent----------------------------------------------
if(opciones[0]==e.getSource()){unJugador();}
if(opciones[1]==e.getSource()){DosJugadores();}
if(opciones[2]==e.getSource()){tabla3x3();}
if(opciones[3]==e.getSource()){tabla4x4();}
if(opciones[4]==e.getSource()){unJugador();}
if(opciones
[5]==e.
getSource()){System.
exit(0);}
//------------------------accion botones juego 3x3----------------------------
if(unJug){
for (int i=0;i<tateti3.length;i++){
for (int j=0;j<tateti3[i].length;j++){
if(tateti3[i][j]==e.getSource()){
if(tres.turno1){
tres.tablero[i][j]=1;
tateti3[i][j].setEnabled(false);
tateti3
[i
][j
].
setBackground(Color.
red); tres.cambiarJugador();
tres.juegoTerminado();
mensajetxt3();
}else{
tres.tablero[i][j]=2;
tateti3[i][j].setEnabled(false);
tateti3
[i
][j
].
setBackground(Color.
blue); tres.cambiarJugador();
tres.juegoTerminado();
mensajetxt3();
}
}
}
}
}else{
if (tres.turno1){
for (int i=0;i<tateti3.length;i++){
for (int j=0;j<tateti3[i].length;j++){
if(tateti3[i][j]==e.getSource()){
tres.tablero[i][j]=1;
tateti3[i][j].setEnabled(false);
tateti3
[i
][j
].
setBackground(Color.
red); tres.cambiarJugador();
tres.juegoTerminado();
mensajetxt3();
}
}
}
}else{
movmaq=true;
do{
a
=(1+(int)(Math.
random()*3))-1; b
=(1+(int)(Math.
random()*3))-1; if(tres.tablero[a][b]==0){
tres.tablero[a][b]=2;
tateti3[a][b].setEnabled(false);
tateti3
[a
][b
].
setBackground(Color.
blue); tres.cambiarJugador();
tres.juegoTerminado();
mensajetxt3();
movmaq=false;
}
}while(movmaq);
}
}
//----------------------------------------------------------------------------
}
}