Como hacer un Tic Tac Toe (Gato) en Java
jueves, 27 de diciembre de 2012
lunes, 22 de octubre de 2012
miércoles, 11 de abril de 2012
En este caso voy a postear el código de una tarea que me dejaron en Programación III, se puede correr por modo de consola o con un IDE, ya sea NetBeans o Eclipse.
Clase Vista Principal:
package Gato.vista;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import Gato.control.MiBoton;
public class VistaPrincipal extends JFrame{
//---------------------Atributos-----------------------------
private MiBoton boton1, boton2, boton3, boton4, boton5, boton6, boton7, boton8, boton9;
private JPanel grid;
//---------------------Metodos-------------------------------
public VistaPrincipal(){
inicializarVista();
inicializarComponentes();
inicializarDiseno();
}
//---------------------Setters&Getters-----------------------
public void setBoton1(MiBoton b1){this.boton1 = b1;}
public void setBoton2(MiBoton b2){this.boton2 = b2;}
public void setBoton3(MiBoton b3){this.boton3 = b3;}
public void setBoton4(MiBoton b4){this.boton4 = b4;}
public void setBoton5(MiBoton b5){this.boton5 = b5;}
public void setBoton6(MiBoton b6){this.boton6 = b6;}
public void setBoton7(MiBoton b7){this.boton7 = b7;}
public void setBoton8(MiBoton b8){this.boton8 = b8;}
public void setBoton9(MiBoton b9){this.boton9 = b9;}
public MiBoton getBoton1(){return this.boton1;}
public MiBoton getBoton2(){return this.boton2;}
public MiBoton getBoton3(){return this.boton3;}
public MiBoton getBoton4(){return this.boton4;}
public MiBoton getBoton5(){return this.boton5;}
public MiBoton getBoton6(){return this.boton6;}
public MiBoton getBoton7(){return this.boton7;}
public MiBoton getBoton8(){return this.boton8;}
public MiBoton getBoton9(){return this.boton9;}
//---------------------Metodos Listener----------------------
public void agregarListenerBoton1(MouseListener listener){this.getBoton1().addMouseListener(listener);}
public void agregarListenerBoton2(MouseListener listener){this.getBoton2().addMouseListener(listener);}
public void agregarListenerBoton3(MouseListener listener){this.getBoton3().addMouseListener(listener);}
public void agregarListenerBoton4(MouseListener listener){this.getBoton4().addMouseListener(listener);}
public void agregarListenerBoton5(MouseListener listener){this.getBoton5().addMouseListener(listener);}
public void agregarListenerBoton6(MouseListener listener){this.getBoton6().addMouseListener(listener);}
public void agregarListenerBoton7(MouseListener listener){this.getBoton7().addMouseListener(listener);}
public void agregarListenerBoton8(MouseListener listener){this.getBoton8().addMouseListener(listener);}
public void agregarListenerBoton9(MouseListener listener){this.getBoton9().addMouseListener(listener);}
//---------------------Metodos-------------------------------
public void inicializarComponentes(){
grid = new JPanel(new GridLayout(3,3,0,0));
boton1 = new MiBoton(0,0);
boton2 = new MiBoton(0,1);
boton3 = new MiBoton(0,2);
boton4 = new MiBoton(1,0);
boton5 = new MiBoton(1,1);
boton6 = new MiBoton(1,2);
boton7 = new MiBoton(2,0);
boton8 = new MiBoton(2,1);
boton9 = new MiBoton(2,2);
setContentPane(grid);
}
public void inicializarVista(){
setTitle("Tarea #4 - Programacion III");
setLocationByPlatform(true);
setSize(300,300);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setVisible(true);
}
public void inicializarDiseno(){
grid.add(boton1);
grid.add(boton2);
grid.add(boton3);
grid.add(boton4);
grid.add(boton5);
grid.add(boton6);
grid.add(boton7);
grid.add(boton8);
grid.add(boton9);
}
public void dispose(){
System.out.println("Vista Finalizada...");
super.dispose();
}
}//termina la VistaPrincipal
Clase ClaseDatosTicTacToe:
package Gato.modelo;
import Gato.control.listeners.ClaseDatosTicTacToeListener;
import Gato.control.listeners.ClaseDatosTicTacToEvent;
import java.util.ArrayList;
public class ClaseDatosTicTacToe{
//---------------------Atributos-----------------------------
private int[][] matriz;
public static int OPCION_NINGUNA = -1;
public static int OPCION_CERO = 0;
public static int OPCION_EQUIS = 1;
private ArrayList<ClaseDatosTicTacToeListener> interesados;
//---------------------Constructores-------------------------
public ClaseDatosTicTacToe(){
matriz = new int[3][3];
interesados = new ArrayList<ClaseDatosTicTacToeListener>();
}
//---------------------Metodos-------------------------------
public void llenarMatriz(int opcion){
for(int i = 0; i<3;i++){
for(int j=0; j<3;j++){
matriz[i][j] = opcion;
}
}
}
public void actualizaSeleccion(int fila, int columna, int opcion){
matriz[fila][columna] = opcion;
determinarGanador();
}
public int determinarGanador(){
int ganador = ClaseDatosTicTacToe.OPCION_NINGUNA;
if(matriz[0][0] != ClaseDatosTicTacToe.OPCION_NINGUNA && matriz[0][0] == matriz[0][1] && matriz[0][0] == matriz[0][2]){
ganador = matriz[0][0];
}else if(matriz[1][0] != ClaseDatosTicTacToe.OPCION_NINGUNA && matriz[1][0] == matriz[1][1] && matriz[1][0] == matriz[1][2]){
ganador = matriz[1][0];
}else if(matriz[2][0] != ClaseDatosTicTacToe.OPCION_NINGUNA && matriz[2][0] == matriz[2][1] && matriz[2][0] == matriz[2][2]){
ganador = matriz[2][0];
}else if(matriz[0][0] != ClaseDatosTicTacToe.OPCION_NINGUNA && matriz[0][0] == matriz[1][0] && matriz[0][0] == matriz[2][0]){
ganador = matriz[0][0];
}else if(matriz[0][1] != ClaseDatosTicTacToe.OPCION_NINGUNA && matriz[0][1] == matriz[1][1] && matriz[0][1] == matriz[2][1]){
ganador = matriz[0][1];
}else if(matriz[0][2] != ClaseDatosTicTacToe.OPCION_NINGUNA && matriz[0][2] == matriz[1][2] && matriz[0][2] == matriz[2][2]){
ganador = matriz[0][2];
}else if(matriz[0][0] != ClaseDatosTicTacToe.OPCION_NINGUNA && matriz[0][0] == matriz[1][1] && matriz[0][0] == matriz[2][2]){
ganador = matriz[0][0];
}else if(matriz[2][0] != ClaseDatosTicTacToe.OPCION_NINGUNA && matriz[2][0] == matriz[1][1] && matriz[2][0] == matriz[0][2]){
ganador = matriz[2][0];
}
if(ganador != ClaseDatosTicTacToe.OPCION_NINGUNA){
notificarGane(ganador);
}
return ganador;
}
public void notificarGane(int opcionGanadora){
int tamano = interesados.size();
for(int i= 0; i<tamano; i++){
interesados.get(i).juegoGanado(new ClaseDatosTicTacToEvent(opcionGanadora));
}
}
public void addClaseDatosTicTacToeListener(ClaseDatosTicTacToeListener interesado){
interesados.add(interesado);
}
}//termina clase ClaseDatosTicTacToe
Clase ClaseDatosTicTacToeListener:
package Gato.control.listeners;
import Gato.control.listeners.ClaseDatosTicTacToEvent;
public interface ClaseDatosTicTacToeListener{
public void juegoGanado(ClaseDatosTicTacToEvent evento);
}
Clase ClaseDatosTicTacToEvent:
package Gato.control.listeners;
public class ClaseDatosTicTacToEvent{
private int opcionGanadora;
public ClaseDatosTicTacToEvent(int op){
this.setOpcionGanadora(op);
}
public int getOpcionGanadora(){
return this.opcionGanadora;
}
public void setOpcionGanadora(int op){
this.opcionGanadora = op;
}
}
Clase MiBoton:
package Gato.control;
import javax.swing.*;
import java.awt.*;
public class MiBoton extends JButton{
//---------------------Atributos-----------------------------
private int filas, columnas;
//---------------------Constructores-------------------------
public MiBoton(int fil, int col){
this.setColumnas(col);
this.setFilas(fil);
}
//---------------------Setters&Getters-------------------------------
public void setColumnas(int col){this.columnas = col;}
public int getColumnas(){return this.columnas;}
public void setFilas(int fil){this.filas = fil;}
public int getFilas(){return this.filas;}
}
Clase Controlador:
package Gato.control;
import Gato.control.listeners.ClaseDatosTicTacToEvent;
import Gato.control.listeners.ClaseDatosTicTacToeListener;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import Gato.vista.VistaPrincipal;
//import progra03.tarea04.control.listeners.ClaseDatosTicTacToEvent;
import Gato.modelo.ClaseDatosTicTacToe;
public class Controlador{
//---------------------Atributos-----------------------------
private VistaPrincipal vistaPrincipal;
private ClaseInternaBotones pintarBotones;
private ClaseDatosTicTacToe gato;
//---------------------Constructores-------------------------
public Controlador(){
vistaPrincipal = new VistaPrincipal();
pintarBotones = new ClaseInternaBotones();
gato = new ClaseDatosTicTacToe();
establecerListenerBotones();
}
//---------------------Metodos-------------------------------
public void establecerListenerBotones(){
gato.llenarMatriz(ClaseDatosTicTacToe.OPCION_NINGUNA);
vistaPrincipal.agregarListenerBoton1(pintarBotones);
vistaPrincipal.agregarListenerBoton2(pintarBotones);
vistaPrincipal.agregarListenerBoton3(pintarBotones);
vistaPrincipal.agregarListenerBoton4(pintarBotones);
vistaPrincipal.agregarListenerBoton5(pintarBotones);
vistaPrincipal.agregarListenerBoton6(pintarBotones);
vistaPrincipal.agregarListenerBoton7(pintarBotones);
vistaPrincipal.agregarListenerBoton8(pintarBotones);
vistaPrincipal.agregarListenerBoton9(pintarBotones);
gato.addClaseDatosTicTacToeListener(new ClaseDatosTicTacToeListener(){
public void juegoGanado(ClaseDatosTicTacToEvent evento){
if(evento.getOpcionGanadora() == ClaseDatosTicTacToe.OPCION_EQUIS){
JOptionPane.showMessageDialog(null,"El Ganador Es: X");
}else if(evento.getOpcionGanadora() == ClaseDatosTicTacToe.OPCION_CERO){
JOptionPane.showMessageDialog(null,"El Ganador Es: Y");
}
}
});
}
//--------------------Clase Interna--------------------------
public class ClaseInternaBotones extends MouseAdapter{
public void mousePressed(MouseEvent e){
MiBoton componente = (MiBoton) e.getSource();
switch(e.getModifiers()) {
case InputEvent.BUTTON1_MASK:
componente.setText("X");
gato.actualizaSeleccion(componente.getFilas(),componente.getColumnas(), ClaseDatosTicTacToe.OPCION_EQUIS);
break;
case InputEvent.BUTTON3_MASK:
componente.setText("O");
gato.actualizaSeleccion(componente.getFilas(),componente.getColumnas(), ClaseDatosTicTacToe.OPCION_CERO);
break;
}
}
}
}//termina Controlador
Clase Main:
Suscribirse a:
Comentarios (Atom)

