Autor Tema: Java Código juego de LA VIEJA o del TRES EN RAYA (tic tac toe) orientado objetos  (Leído 40867 veces)

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
He creado el juego de la vieja, tres en raya o tic tac toe. Lo resolví en Java con cuatro clases de acuerdo con la orientación a objetos (no estructurado).

Clase principal metodo main lo llame tateti

Código: [Seleccionar]
package tateti;

public class Tateti {

    public static void main(String[] args) {
        Ficha fichaX = new Ficha("X");
        Ficha fichaO = new Ficha();
        fichaO.setFicha("O");
       
        Jugador jugadorX = new Jugador(fichaX);
        Jugador jugadorO = new Jugador();
        jugadorO.setFicha(fichaO);
               
        Tablero tablero = new Tablero();
        tablero.imprimir();
        boolean ganador = false;
        for (int veces = 1; veces <= 9; veces++) {
            if(veces%2==0){
                jugadorO.ponerFicha(tablero);
                ganador = tablero.verificarGanador(jugadorO);
            }else{
                jugadorX.ponerFicha(tablero);
                ganador = tablero.verificarGanador(jugadorX);
            }
            tablero.imprimir();
            if(ganador){
                break;
            }
        }
        if(ganador){
            System.out.println("HAZ GANADO!!!");
        }else{
            System.out.println("VUELVE A INTENTARLO!!!");
        }
     
       
    }
   
}


Clase tabla donde creo el tablero y compruebo el ganador

Código: [Seleccionar]
package tateti;

public class Tablero {
    private String[][] tablero;

    public Tablero() {
        tablero = new String[3][3];
        limpiar();
    }

    public Tablero(String[][] tablero) {
        this.tablero = tablero;
    }
   

    public String[][] getTablero() {
        return tablero;
    }

    public void setTablero(String[][] tablero) {
        this.tablero = tablero;
    }
   
    public void limpiar(){
        for (int f = 0; f < tablero.length; f++) {
            for (int c = 0; c < tablero[0].length; c++) {
                tablero[f][c] = " ___ ";
            }
        }
    }
   
    public void imprimir(){
        for (int f = 0; f < tablero.length; f++) {
            for (int c = 0; c < tablero[0].length; c++) {
                System.out.print(tablero[f][c]);
            }
            System.out.println("");
        }
    }
   
    public boolean verificarGanador(Jugador jugador){
        boolean valor = false;
        String ficha1 = " _"+jugador.getFicha().getFicha()+"_ ";
        String ficha3 = ficha1+ficha1+ficha1;
        String fila = tablero[0][0]+tablero[0][1]+tablero[0][2];
        //System.out.println("-->"+ficha3);
        //System.out.println("-->"+ficha1);
        if( ficha3.equals(fila)){
            valor  = true;
        }
        fila = tablero[1][0]+tablero[1][1]+tablero[1][2];
        if( ficha3.equals(fila)){
            valor  = true;
        }
         fila = tablero[2][0]+tablero[2][1]+tablero[2][2];
        if( ficha3.equals(fila)){
            valor  = true;
        }
         String columna = tablero[0][0]+tablero[1][0]+tablero[2][0];
        if( ficha3.equals(columna)){
            valor  = true;
        }
         columna = tablero[0][1]+tablero[1][1]+tablero[2][1];
        if( ficha3.equals(columna)){
            valor  = true;
        }
         columna = tablero[0][2]+tablero[1][2]+tablero[2][2];
        if( ficha3.equals(columna)){
            valor  = true;
        }
        String diagonal = tablero[0][0]+tablero[1][1]+tablero[2][2];
        if( ficha3.equals(diagonal)){
            valor  = true;
        }
         diagonal = tablero[2][0]+tablero[1][1]+tablero[0][2];
        if( ficha3.equals(diagonal)){
            valor  = true;
        }
        return valor;
    }
   
}


Clase jugador donde creo los jugadores

Código: [Seleccionar]
package tateti;

public class Tablero {
    private String[][] tablero;

    public Tablero() {
        tablero = new String[3][3];
        limpiar();
    }

    public Tablero(String[][] tablero) {
        this.tablero = tablero;
    }
   

    public String[][] getTablero() {
        return tablero;
    }

    public void setTablero(String[][] tablero) {
        this.tablero = tablero;
    }
   
    public void limpiar(){
        for (int f = 0; f < tablero.length; f++) {
            for (int c = 0; c < tablero[0].length; c++) {
                tablero[f][c] = " ___ ";
            }
        }
    }
   
    public void imprimir(){
        for (int f = 0; f < tablero.length; f++) {
            for (int c = 0; c < tablero[0].length; c++) {
                System.out.print(tablero[f][c]);
            }
            System.out.println("");
        }
    }
   
    public boolean verificarGanador(Jugador jugador){
        boolean valor = false;
        String ficha1 = " _"+jugador.getFicha().getFicha()+"_ ";
        String ficha3 = ficha1+ficha1+ficha1;
        String fila = tablero[0][0]+tablero[0][1]+tablero[0][2];
        //System.out.println("-->"+ficha3);
        //System.out.println("-->"+ficha1);
        if( ficha3.equals(fila)){
            valor  = true;
        }
        fila = tablero[1][0]+tablero[1][1]+tablero[1][2];
        if( ficha3.equals(fila)){
            valor  = true;
        }
         fila = tablero[2][0]+tablero[2][1]+tablero[2][2];
        if( ficha3.equals(fila)){
            valor  = true;
        }
         String columna = tablero[0][0]+tablero[1][0]+tablero[2][0];
        if( ficha3.equals(columna)){
            valor  = true;
        }
         columna = tablero[0][1]+tablero[1][1]+tablero[2][1];
        if( ficha3.equals(columna)){
            valor  = true;
        }
         columna = tablero[0][2]+tablero[1][2]+tablero[2][2];
        if( ficha3.equals(columna)){
            valor  = true;
        }
        String diagonal = tablero[0][0]+tablero[1][1]+tablero[2][2];
        if( ficha3.equals(diagonal)){
            valor  = true;
        }
         diagonal = tablero[2][0]+tablero[1][1]+tablero[0][2];
        if( ficha3.equals(diagonal)){
            valor  = true;
        }
        return valor;
    }
   
}


Clase ficha donde creo las ficha para jugar

Código: [Seleccionar]
package tateti;
// Beans
public class Ficha {
    private String ficha;

    public Ficha() {
    }

    public Ficha(String ficha) {
        this.ficha = ficha;
    }

    public String getFicha() {
        return ficha;
    }

    public void setFicha(String ficha) {
        this.ficha = ficha;
    }
   
}

Espero que te sirva por lo menos para guiarte o aplicar en tu proyecto
« Última modificación: 04 de Junio 2016, 22:59 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola DRANXZ88, como el código en java puede servir de ayuda para otras personas voy a moverlo a otro hilo del foro, así queda como una aportación tuya para personas que puedan necesitarlo. Saludos!
Responsable de departamento de producción aprenderaprogramar.com

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Sí, le puede servir a otros, gracias.
« Última modificación: 06 de Septiembre 2015, 17:48 por César Krall »

Marsicobetre

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
hola! copiaste dos veces la clase Tablero y no colocaste la Clase Jugador

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Gracia por tu observación no me di cuenta ahora voy a copiar la clase jugador. :) :)
Código: [Seleccionar]
package tateti;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Jugador {
    private Ficha ficha;

    public Jugador() {
    }

    public Jugador(Ficha ficha) {
        this.ficha = ficha;
    }

    public Ficha getFicha() {
        return ficha;
    }

    public void setFicha(Ficha ficha) {
        this.ficha = ficha;
    }
   
    public void ponerFicha(Tablero tablero){
        try {
            InputStreamReader isr = new InputStreamReader(System.in);
            BufferedReader br = new BufferedReader (isr);
            System.out.print("Fila   : ");
            int fila = Integer.parseInt(br.readLine());
            System.out.print("Columna: ");
            int columna = Integer.parseInt(br.readLine());
            tablero.getTablero()[fila][columna] = " _"+this.ficha.getFicha()+"_ ";
        } catch (IOException ex) {
            Logger.getLogger(Jugador.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Marsicobetre

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
perfecto! muchas gracias! .. como hago para seguir tus publicaciones?

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Este enlace te va ayudar como publicar en el foro y ahí podes poner tu duda y entre todo te ayudaremos o mas bien nos ayudaremos.
https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

Si quiere seguir alguno curso de esta pagina podes elegir en este enlace son muy bueno y te va a ayudar mucho y cualquier duda en el foro que te sera respondido.
https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=57&Itemid=86

Para aprender todo juntos éxito. :) :).

Marsicobetre

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
ok! muchisimas gracias  :)

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".