elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Juego Gato
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Juego Gato  (Leído 9,896 veces)
Lain0x

Desconectado Desconectado

Mensajes: 72


Ver Perfil
Juego Gato
« en: 21 Marzo 2011, 20:30 pm »

Hola, quería pedir algunos consejos, estoy tratando de hacer un gato, y aún nose exactamente como hacerlo o que recurso ocupar.
La idea que tengo es poner 9 jTextfield dentro de un Jpanel, y con un botón aparecerá el círculo o la x dentro del cuadro, pero me doy cuenta que no es tan sencillo, ubicarse en el cuadro que uno desee a la hora de jugar.

Así me quedó:



Ojala me puedan brindar ideas sobre como puedo mejorarlo, o que librería usar, etc.

Gracias


En línea

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: Juego Gato
« Respuesta #1 en: 22 Marzo 2011, 05:35 am »

-me pregunto que harás cuando tengas que crear un juego de mesa que tenga 100 cuadriculas o si creas un panel donde se visualicen las mesas de un restaurante y te obliguen a que puedas dibujar de forma arbitraria una cantidad indigerida de mesas
-esto es un caso de los que hablo donde el ide estorba y crea más problemas de los que resuelve
-mi recomendación que primero estudies como usar el patron observador y que aprendas a crear formularios a mano
-otra recomendación es que aprendas a hacer pruebas unitarias
-es una mala idea que pongas 9 labels en primer lugar porque los leves no se pueden editar por el usuario y luego tu tendrás que hacer alguna operación rara que le agrega dificultad para editarlo
-si empiezas a pensar en componentes swing entonces ya sabes que tienes un problema grave
-yo lo resolví con botones y cree un botón genérico heredando y luego lo las instancias con un for otra opción es crear la lógica de los botones en una clase genérica y luego la agrega instancias de esa clase genérica a cada botón


En línea

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: Juego Gato
« Respuesta #2 en: 22 Marzo 2011, 05:43 am »

Código:
package com.elhacker.ejemplo;

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;

public class ApliacionMichi {
public static void main(String arg[]) {
JFrame jFrame = new JFrame();
jFrame.setLayout(new BorderLayout());
jFrame.add(new PanelPrincipal(), BorderLayout.CENTER);
jFrame.setSize(new Dimension(400, 400));
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setLocationRelativeTo(null);
jFrame.setVisible(true);

}
}

Código:
package com.elhacker.ejemplo;

import javax.swing.JButton;

public class BotonCeldaMichi extends JButton {

private static final long serialVersionUID = 1L;
private int fila;
private int columna;

public BotonCeldaMichi(int fila, int columna) {
super();
this.fila = fila;
this.columna = columna;
}

public int getFila() {
return fila;
}

public int getColumna() {
return columna;
}

}

package com.elhacker.ejemplo;

public interface ObservadorDeVictoria {
public void cuandoGano(TableroMichi tableroMichi);
}

Código:
package com.elhacker.ejemplo;

public enum OpcionMarca {

X("x"), O("o");

private String nombre = "";

private OpcionMarca(String nombre) {
this.nombre = nombre;
}

public OpcionMarca getOpcionOpuesta() {
if (this == OpcionMarca.O) {
return OpcionMarca.X;
} else {
return OpcionMarca.O;
}
}

@Override
public String toString() {
return nombre;
}
}


Código:

package com.elhacker.ejemplo;

import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class PanTablero extends JPanel {
private static final long serialVersionUID = 1L;
private final GridLayout gridLayout = new GridLayout(3, 3);
private final TableroMichi tableroMichi;

public PanTablero() {
this(new TableroMichi());
}

public PanTablero(TableroMichi tableroMichi) {
super();
this.tableroMichi = tableroMichi;
inicialisa();
}

public void inicialisa() {
setLayout(gridLayout);
agregaBotonesYEventos();
agregaEventosMichi();
}

private void agregaEventosMichi() {
tableroMichi.agregarObserVador(new ObservadorDeVictoria() {

@Override
public void cuandoGano(TableroMichi tableroMichi) {
ganaste();

}
});
}

private void ganaste() {
JOptionPane.showMessageDialog(null, new Label("felicidades"));

}

private void agregaBotonesYEventos() {
for (int fila = 1; fila <= 3; fila++) {
for (int columna = 1; columna <= 3; columna++) {
BotonCeldaMichi botonCeldaMichi = new BotonCeldaMichi(fila,
columna);
agreagEventos(botonCeldaMichi);
add(botonCeldaMichi);
}
}
}

private void agreagEventos(BotonCeldaMichi botonCeldaMichi) {
botonCeldaMichi.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent actionEvent) {
presionoAlgunBoton(actionEvent);
}

});
}

private void presionoAlgunBoton(ActionEvent actionEvent) {
BotonCeldaMichi botonCeldaMichi = (BotonCeldaMichi) actionEvent
.getSource();
ponerMarcaAlBoton(botonCeldaMichi);
tableroMichi.marcar(botonCeldaMichi.getFila(),
botonCeldaMichi.getColumna());

}

private void ponerMarcaAlBoton(BotonCeldaMichi botonCeldaMichi) {
botonCeldaMichi.setText(tableroMichi.getUltimaOpcion().toString());
}
}


Código:
package com.elhacker.ejemplo;

import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

public class TableroMichi {
private OpcionMarca ultimaOpcion;

private final TableModel tabla = new DefaultTableModel(3, 3);
private ObservadorDeVictoria observador;

public TableroMichi() {
this(OpcionMarca.X);
}

public TableroMichi(OpcionMarca primeraOpcionMarca) {
ultimaOpcion = primeraOpcionMarca.getOpcionOpuesta();
}

public void marcar(int fila, int columa) {
//no te la dejo tan facil :-)

}

public void agregarObserVador(final ObservadorDeVictoria observador) {
//no te la dejo tan facil :-)
}

public OpcionMarca getMarcaEnPocision(int fila, int columna) {
                //no te la dejo tan facil :-)
return null;
}

public OpcionMarca getUltimaOpcion() {
return ultimaOpcion;
}

public boolean isVicotoria() {
return ganoEnRecta() || ganoEnDiagonal();
}

public boolean ganoEnRecta() {
                  //no te la dejo tan facil :-)
              return false;
}

public boolean ganoEnFila(int fila) {
//no te la dejo tan facil :-)
return false;
}

public boolean ganoEnColumna(int columna) {
//no te la dejo tan facil :-) return false;
}

public boolean ganoEnDiagonal() {
return diagonalDeFilasYColumnasIguales()
|| diagonalDeFilasYColumnasDiferentes();
}

public boolean diagonalDeFilasYColumnasIguales() {
//no te la dejo tan facil :-)
return false;
}

public boolean diagonalDeFilasYColumnasDiferentes() {
return false;
}

private boolean sonMismasMarcas(OpcionMarca marca, OpcionMarca otraMarca) {
//no te la dejo tan facil :-)
return false;
}

public void limpiar() {
//no te la dejo tan facil :-)
}

}


[code]

solo tienes que hacer pruebas unitarias y hacer que todos los metodos pasen correctamente luego todo va a funcionar como por arte de magia
[/code]
« Última modificación: 22 Marzo 2011, 05:46 am por sapito169 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Juego Gato Inteligente.
Programación C/C++
xcoverdalex 5 7,858 Último mensaje 2 Septiembre 2010, 15:00 pm
por xcoverdalex
la curiosidad mato al gato, alguna vez fuiste tu el gato?
Foro Libre
flacc 1 2,526 Último mensaje 27 Enero 2012, 15:09 pm
por D4RIO
Juego del gato « 1 2 »
Programación C/C++
m@o_614 13 22,518 Último mensaje 30 Abril 2012, 03:41 am
por s00rk
juego del gato
Java
m@o_614 4 5,118 Último mensaje 8 Mayo 2012, 22:04 pm
por m@o_614
Ayuda con el juego del gato
Programación C/C++
Dieux Rablia 3 3,846 Último mensaje 20 Mayo 2012, 18:59 pm
por Dieux Rablia
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines