SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
Roberto Matías
        Edisson Gudiño
      Victoria Hernández
          Kevin Cruz



Docente: Ing. Orlando Barcia Ayala
*** Idea Base Del Proyecto ***

Efectuar un juego de tres en RAYA REALIZANDO UN ANALISIS, DISEÑO E
Implementación orientado a objetos. Las relaciones son las siguientes:
Los Juegos de Computadora se pueden clasificar en Juegos Totalmente
aleatorios y juegos de destrezas: el juego de tres en raya es un juego de
destreza, en este juego participan dos jugadores, de los cuales uno
incluso puede ser el computador.



                         x                      0
                                     x          0
                                                x




Al iniciar el juego se solicitaran los nombres d cada jugador y su Nick. En
el juego se debe especificar cuál de los jugadores es el primero (por
elección o al azar). Así también puede seleccionarse que uno de los
jugadores sea la computadora (nombre y Nick será “computer”).


Las clases q implementan en el juego deber tener un arreglo privado
bidimensional de enteros con un tamaño de 3 por 3 que simulara el
tablero del juego. El constructor debe inicializar el arreglo con creso: Los
jugadores tiene un orden de juego especifico, el primer jugado realiza un
movimiento y mostrara un 1 en el cuadro que desee escoger (ver nota al
Final).

Cuando toque al segundo jugador, este realizara un movimiento en el
cuadro que desea escoger y mostrara un 2 *. Cada movimiento debe
validarse para q se realice un cuadro vacío, mostrando los mensajes de
advertencias correspondientes.
Al realizar cada movimiento el juego debe determinar si se ha ganado o
existe un empate. Las clases deben tener atributos, métodos,
constructores y sobrecargas. Debe Utilizar método setter, getter,
sobrecarga de métodos. Y constructores, así como una interfaz de
usuario básica.

Nota: La interfaz grafía de usuario puede mostrar el tablero del juego de
ajedrez como un conjunto de botones con o sin imágenes ( a criterio del
Programador) o un conjunto de cuadros de texto.



   1. Implementamos en el editor de NetBeans IDE 6.8
      Creamos los paquetes Necesarios q pide el Software
CODIGO FUENTE:

package mathias.cruz.gudinho.hernandez;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Maticruzgudinhernad extends JFrame implements ActionListener {

  //Etiquetas del JFrame
  JLabel l1, l2, l3, l4, l5;

  // Cuadros de Textos
  JTextField jugador1, jugador2;

  //Opciones de radio
  JRadioButton computador, jugador;
  ButtonGroup opciones;

  //Boton empezar a jugar
  JButton jugar;

  public Maticruzgudinhernad() {
    crearJugadores();
  }

  public void crearJugadores() {

    setTitle("Tres en Raya");
    //setLocationRelativeTo(null);

    setSize(300, 250);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(new GridLayout(8, 2));

    // Creacion de las etiquetas de la pantalla y asignamos tamaño de la etiqueta

    l1 = new JLabel("* JUGADORES *");
    l1.setSize(100, 20);
    l2 = new JLabel("Jugador # 1");
    l2.setSize(100, 20);
    l4 = new JLabel("Jugador # 2");
    l4.setSize(100, 20);
//Fuentes a los controles JLabel
    l1.setFont(new Font("Algerian", 1, 18));
    l1.setForeground(Color.blue);
    l2.setFont(new Font("Algerian", 1, 14));
    l4.setFont(new Font("Algerian", 1, 14));



    // Creacion de los Cuadros de texto para el ingreso de nombres
    jugador1 = new JTextField("");
    jugador1.setSize(50, 20);
    jugador2 = new JTextField("");
    jugador2.setSize(50, 20);

    // Opciones, creacion de radio button
    opciones = new ButtonGroup();
    computador = new JRadioButton("Computador");
    computador.setSelected(true);
    computador.setSize(100, 20);
    jugador = new JRadioButton("Jugador");
    jugador.setSize(100, 20);
    opciones.add(computador);
    opciones.add(jugador);

    // Boton para jugar
    jugar = new JButton("Jugar");
    jugar.setSize(50, 20);

    // Añadimos el listener al boton
    jugar.addActionListener(this);

    // Añadimos los controles al JFrame
    add(l1);
    add(new Label());
    add(l2);
    add(jugador1);
    add(l4);
    add(new Label());
    add(computador);
    add(new Label());
    add(jugador);
    add(jugador2);
    add(jugar);
    setVisible(true);
}
// Metodos para manejar Eventos//
  public void actionPerformed(ActionEvent e) {

      //Validar que se haya ingresado el nick al jugador 1
      if (jugador1.getText().trim().equals("")) {
          JOptionPane.showMessageDialog(null, "InGrEsE El NiCk al JuGaDOr 1");
      } else {

      //Validar que el segundo jugador haya ingresado nombre si se selecciono jugar
contra otro jugador
      if (jugador.isSelected() && jugador2.getText().trim().equals("")) {
          JOptionPane.showMessageDialog(null, "InGrEsE El NiCk al JuGaDOr 2");
      } else {

              //Sortear quien juega primero aleatoriamente
              int empieza = (int) (Math.random() * 2 + 1);
              String jug1,jug2;

              //Cojemos el nombre del jugador que va a empezar
              //Si es uno escojemos el nombre que ingreso el primer jugador
              if (empieza == 1) {
                 jug1 = jugador1.getText();
                  if (jugador.isSelected() && !jugador2.getText().trim().equals("")) {
                     jug2=jugador2.getText();
                 } else {
                     jug2="Computer";
                 }

              } else {
                 //Si es 2 se verifica si se juga contra otro jugador o contra la computadora
                 if (jugador.isSelected() && !jugador2.getText().trim().equals("")) {
                    jug1=jugador2.getText();
                 } else {
                    jug1="Computer";
                 }
                  jug2 = jugador1.getText();
              }
              JOptionPane.showMessageDialog(null, "Empieza el jugador: "+jug1);
              setVisible(false);
              new Raya(jug1,jug2);
          }
      }
  }
public static void main(String[] args) {
      new Maticruzgudinhernad();
    }
}

Tenemos L a Clase Raya:

package mathias.cruz.gudinho.hernandez;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Raya extends JFrame implements ActionListener {

    // Botones
    JButton botones[][];
    JPanel p1;

    //Tamaño del Tablero de Tres en Raya
    int a = 3;

    //Matriz del tablero de Tres en raya
    private int tablero[][];

    //Iconos para los botones
    ImageIcon equis, circulo;

    //Nicks de los jugadores
    String nick1, nick2;

    int turno = 1;

    public Raya(String jug1, String jug2) {
      nick1 = jug1;
      nick2 = jug2;

        System.out.println(jug1);
        System.out.println(jug2);
        dibujarTablero();
        jugar(nick1);

    }
public void dibujarTablero() {
    //Crear matriz de posiciones del tablero
    tablero = new int[a][a];

      // Crear iconos para los botones
      equis = new ImageIcon("src/mathias/cruz/gudinho/hernandez/equis.gif");
      circulo = new ImageIcon("src/mathias/cruz/gudinho/hernandez/circulo.gif");

    //Iniciar todo el tablero en cero (Si esta cero se puede escojer si es 1 no se puede
escojer
    for (int i = 0; i < a; i++) {
       for (int j = 0; j < a; j++) {
         tablero[i][j] = 0;

          }
      }

      setTitle("Tres en Raya");
      //setLocationRelativeTo(null);

      setSize(200, 200);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLayout(new GridLayout(a, 2));
      botones = new JButton[a][a];

      // Creacion de los botones del tablero
      for (int i = 0; i < a; i++) {
         for (int j = 0; j < a; j++) {
           //Creamos el boton
           botones[i][j] = new JButton();
           //Le damos el oyente de evento
           botones[i][j].addActionListener(this);
           //Le damos un nombre a la accion
           botones[i][j].setActionCommand("" + i + j);

              botones[i][j].setSize(200, 200);
              add(botones[i][j]);

          }
      }
      setVisible(true);
  }
// Metodo para presentar el jugador que tiene el turno de jugar
     public void jugar(String jugador) {
        JOptionPane.showMessageDialog(null, "Turno: " + jugador);

     }

     //Variables que sirven para saber si un jugador ha hecho tres en raya en alguna
     // de dos forma vertical, horizontal
     boolean ganaron1, ganaron2;
     // Variable para controlar si algun jugador ya gano

     boolean ganaron = false;
     public void validarTablero() {
       int i, j;
       for (i = 0; i < a; i++) {
         ganaron1 = true;
         ganaron2 = true;
         for (j = 0; j < a - 1; j++) {

                 //validar si se hizo tres en raya de forma horizontal
                 ganaron1 = (tablero[i][j] == tablero[i][j + 1]) && ganaron1 && tablero[i][j] !=
0;
                 //validar si se hizo tres en raya de forma vertical
                 ganaron2 = (tablero[j][i] == tablero[j + 1][i]) && ganaron2 && tablero[j][i] !=
0;
             }
             //Si se hizo tres en raya de forma horizontal o vertical presentamos un mensaje
             if (ganaron1 || ganaron2) {

                 //Asignamos true a la variable ganaron para indicar que un jugador ya gano
                 ganaron = true;

                 //Si el turno era 1 gana el jugador 1 caso contrario el jugador 2
                 if (turno == 1) {
                     JOptionPane.showMessageDialog(null, "Winner!! Jugador: " + nick1);
                     break;
                 } else {
                     JOptionPane.showMessageDialog(null, "Winner!! Jugador: " + nick2);
                     break;
                 }

             }

         }
//Si no se hizo tres en raya de forma horizontal valido si se hizo tres en raya
      // de forma diagonal

      if (!ganaron) {

       if ((tablero[0][0] == tablero[1][1] && tablero[1][1] == tablero[2][2] &&
tablero[1][1] != 0) || (tablero[2][0] == tablero[1][1] && tablero[1][1] == tablero[0][2]
&& tablero[1][1] != 0)) {

              //Asignamos true a la variable ganaron para indicar que un jugador ya gano
              ganaron = true;

              //Si el turno era 1 gana el jugador 1 caso contrario el jugador 2
              if (turno == 1) {
                  JOptionPane.showMessageDialog(null, "Wiiner!!! Jugador: " + nick1);

              } else {
                 JOptionPane.showMessageDialog(null, "Winner!!!! Jugador: " + nick2);
              }

          }
      }
  }

  // Metodo para controlar el turno de juego
  public void verificarTurno() {

      // Verificar a quien le toca jugar
      if (turno == 1) {
         turno = 2;
          jugar(nick2);

      } else {
         turno = 1;
         jugar(nick1);
      }

  }

  //Variable para saber si se escogio un cuadro vacío del tablero
  boolean correcto;
// Metodo oyente para eventos de dar clic en los botones del tabler0
  public void actionPerformed(ActionEvent e) {
     if (!ganaron) {
        correcto=false;
        //Preguntar por que boton se dio clic y si esta
         for (int i = 0; i < a; i++) {
            for (int j = 0; j < a; j++) {
              if (e.getActionCommand().equals("" + i + j)) {
                 if (tablero[i][j] == 0) {
                    tablero[i][j] = turno;
                    if (turno == 1) {
                       botones[i][j].setIcon(equis);
                    } else {
                       botones[i][j].setIcon(circulo);
                    }
                    correcto=true;
                 } else {
                    JOptionPane.showMessageDialog(null,"Debe escoger otro cuadro este
ya ha sido escogido");
                 }
              }
            }
         }
         if(correcto){
            validarTablero();

                if (!ganaron) {
                   verificarTurno();
                }
            }
        }
    }
}
Probamos el Programa!
Bueno el principal Objetivo del Proyecto es crecer como estudiantes de la UPS. En base a
nuestro desempeño q le estamos poniendo a este proyecto el cual nos servirá para un futuro
ponernos nuestras metas. El Principal objetivo del proyecto es cumplir con las necesidades q
este pida y dar con todos los requerimientos posibles ya sean gráfica, etc.




En si tenemos las dudas q se la preguntaremos a usted Ing.! Sobre el tema de los aleatorios
en la pizarra del juego de tres en raya.
http://www.java.com/es/

Más contenido relacionado

La actualidad más candente

Diapositivas integrales dobles
Diapositivas integrales doblesDiapositivas integrales dobles
Diapositivas integrales doblesJuanManuel729
 
Método de la regla falsa (o metodo de la falsa posición) MN
Método de la regla falsa (o metodo de la falsa posición) MNMétodo de la regla falsa (o metodo de la falsa posición) MN
Método de la regla falsa (o metodo de la falsa posición) MNTensor
 
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...rasave
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1Clara Patricia Avella Ibañez
 
Manejo De Windows
Manejo De WindowsManejo De Windows
Manejo De Windowschus
 
Representación matricial
Representación matricialRepresentación matricial
Representación matricialSam Rdgz
 
EJERCICIOS DE MULTIPLICACION DE BINARIOS
EJERCICIOS  DE MULTIPLICACION DE BINARIOSEJERCICIOS  DE MULTIPLICACION DE BINARIOS
EJERCICIOS DE MULTIPLICACION DE BINARIOSanthonypillajo
 
Derivadas de funciones trigonométricas inversas
Derivadas de funciones trigonométricas inversasDerivadas de funciones trigonométricas inversas
Derivadas de funciones trigonométricas inversasCamilo Andrés Ortiz Daza
 
Ejercicio Práctico de Base de Datos
Ejercicio Práctico de Base de DatosEjercicio Práctico de Base de Datos
Ejercicio Práctico de Base de DatosPilar Pardo Hidalgo
 
Trabajando sentencias de manipulación de datos con MySQL
Trabajando sentencias de manipulación de datos con MySQLTrabajando sentencias de manipulación de datos con MySQL
Trabajando sentencias de manipulación de datos con MySQLJesús Canales Guando
 
Interpolacion lagrange
Interpolacion lagrangeInterpolacion lagrange
Interpolacion lagrangemat7731
 

La actualidad más candente (20)

Diapositivas integrales dobles
Diapositivas integrales doblesDiapositivas integrales dobles
Diapositivas integrales dobles
 
AUTODESK 3DS MAX.pptx
AUTODESK 3DS MAX.pptxAUTODESK 3DS MAX.pptx
AUTODESK 3DS MAX.pptx
 
Método de la regla falsa (o metodo de la falsa posición) MN
Método de la regla falsa (o metodo de la falsa posición) MNMétodo de la regla falsa (o metodo de la falsa posición) MN
Método de la regla falsa (o metodo de la falsa posición) MN
 
Pilas estáticas. IESIT
Pilas estáticas. IESITPilas estáticas. IESIT
Pilas estáticas. IESIT
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
 
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...
 
Base ortogonal
Base ortogonalBase ortogonal
Base ortogonal
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1
 
Manejo De Windows
Manejo De WindowsManejo De Windows
Manejo De Windows
 
Representación matricial
Representación matricialRepresentación matricial
Representación matricial
 
EJERCICIOS DE MULTIPLICACION DE BINARIOS
EJERCICIOS  DE MULTIPLICACION DE BINARIOSEJERCICIOS  DE MULTIPLICACION DE BINARIOS
EJERCICIOS DE MULTIPLICACION DE BINARIOS
 
Derivadas de funciones trigonométricas inversas
Derivadas de funciones trigonométricas inversasDerivadas de funciones trigonométricas inversas
Derivadas de funciones trigonométricas inversas
 
Ejercicios app inventor
Ejercicios app inventorEjercicios app inventor
Ejercicios app inventor
 
Ejercicio Práctico de Base de Datos
Ejercicio Práctico de Base de DatosEjercicio Práctico de Base de Datos
Ejercicio Práctico de Base de Datos
 
Guía 06. Subconsultas con MySQL - José J Sánchez H
Guía 06. Subconsultas con MySQL - José J Sánchez HGuía 06. Subconsultas con MySQL - José J Sánchez H
Guía 06. Subconsultas con MySQL - José J Sánchez H
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Trabajando sentencias de manipulación de datos con MySQL
Trabajando sentencias de manipulación de datos con MySQLTrabajando sentencias de manipulación de datos con MySQL
Trabajando sentencias de manipulación de datos con MySQL
 
Complemento A Dos
Complemento A DosComplemento A Dos
Complemento A Dos
 
Interpolacion lagrange
Interpolacion lagrangeInterpolacion lagrange
Interpolacion lagrange
 
Sistemas de Numeración octal y hexadecimal
Sistemas de Numeración  octal y hexadecimalSistemas de Numeración  octal y hexadecimal
Sistemas de Numeración octal y hexadecimal
 

Destacado

Destacado (15)

Juego Tres En Raya
Juego Tres En RayaJuego Tres En Raya
Juego Tres En Raya
 
Triqui programado en Java
Triqui programado en JavaTriqui programado en Java
Triqui programado en Java
 
Proyect progra2 (i.tec)
Proyect progra2 (i.tec)Proyect progra2 (i.tec)
Proyect progra2 (i.tec)
 
Análisis foda
Análisis fodaAnálisis foda
Análisis foda
 
Informe proyecto trivia java
Informe proyecto trivia javaInforme proyecto trivia java
Informe proyecto trivia java
 
Analisis Foda Victoria Hernandez
Analisis Foda Victoria HernandezAnalisis Foda Victoria Hernandez
Analisis Foda Victoria Hernandez
 
juego del laberinto
juego del laberintojuego del laberinto
juego del laberinto
 
Aseguradoras 2.0
Aseguradoras 2.0 Aseguradoras 2.0
Aseguradoras 2.0
 
Diagrama de PARETO y Análisis FODA
Diagrama de PARETO y Análisis FODADiagrama de PARETO y Análisis FODA
Diagrama de PARETO y Análisis FODA
 
El Juego TicTacToe (Gato) mediante Arboles de Decisiones
El Juego TicTacToe (Gato) mediante Arboles de DecisionesEl Juego TicTacToe (Gato) mediante Arboles de Decisiones
El Juego TicTacToe (Gato) mediante Arboles de Decisiones
 
DIAGNOSTICO-FODA.
DIAGNOSTICO-FODA.DIAGNOSTICO-FODA.
DIAGNOSTICO-FODA.
 
Dofa[1][1]
Dofa[1][1]Dofa[1][1]
Dofa[1][1]
 
Exposiciones de power point
Exposiciones de power pointExposiciones de power point
Exposiciones de power point
 
¿Cómo construir una Matriz DOFA?
¿Cómo construir una Matriz DOFA?¿Cómo construir una Matriz DOFA?
¿Cómo construir una Matriz DOFA?
 
Paso a Paso para construir un marco teórico
 Paso a Paso para construir un marco teórico Paso a Paso para construir un marco teórico
Paso a Paso para construir un marco teórico
 

Similar a Tres en Raya con Java y NetBeans

Xna game studio presentación 07
Xna game studio   presentación 07Xna game studio   presentación 07
Xna game studio presentación 07Juan Cardona
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Rayajubacalo
 
Juego Bingo - JAVA
Juego Bingo - JAVAJuego Bingo - JAVA
Juego Bingo - JAVAedgar muñoz
 
Guía de programacion de videojuegos II
Guía de programacion de videojuegos IIGuía de programacion de videojuegos II
Guía de programacion de videojuegos IIFreelance
 
Ejercicios resueltos en el Laboratorio de estructuras struct registros 3 CIP200
Ejercicios resueltos en el Laboratorio de estructuras struct registros 3 CIP200Ejercicios resueltos en el Laboratorio de estructuras struct registros 3 CIP200
Ejercicios resueltos en el Laboratorio de estructuras struct registros 3 CIP200rasave
 
Arreglos 1D, 2D, 3D.
Arreglos 1D, 2D, 3D.Arreglos 1D, 2D, 3D.
Arreglos 1D, 2D, 3D.Susan Gil
 
Xna game studio presentación 06
Xna game studio   presentación 06Xna game studio   presentación 06
Xna game studio presentación 06Juan Cardona
 
Codigo ejemplo j2 me
Codigo ejemplo   j2 meCodigo ejemplo   j2 me
Codigo ejemplo j2 meOscar Eduardo
 
Ejercicio propuesto 2
Ejercicio propuesto 2Ejercicio propuesto 2
Ejercicio propuesto 2jfranco_123
 
Programa 6
Programa 6Programa 6
Programa 6yito24
 
Programa 6
Programa 6Programa 6
Programa 6yito24
 
Prototipo de un juego de poker "Programado en lenguaje C"
Prototipo de un juego de poker "Programado en lenguaje C"Prototipo de un juego de poker "Programado en lenguaje C"
Prototipo de un juego de poker "Programado en lenguaje C"Maynor Mendoza
 

Similar a Tres en Raya con Java y NetBeans (20)

Xna game studio presentación 07
Xna game studio   presentación 07Xna game studio   presentación 07
Xna game studio presentación 07
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Raya
 
Juego Bingo - JAVA
Juego Bingo - JAVAJuego Bingo - JAVA
Juego Bingo - JAVA
 
Guía de programacion de videojuegos II
Guía de programacion de videojuegos IIGuía de programacion de videojuegos II
Guía de programacion de videojuegos II
 
Ejercicios resueltos en el Laboratorio de estructuras struct registros 3 CIP200
Ejercicios resueltos en el Laboratorio de estructuras struct registros 3 CIP200Ejercicios resueltos en el Laboratorio de estructuras struct registros 3 CIP200
Ejercicios resueltos en el Laboratorio de estructuras struct registros 3 CIP200
 
Arreglos 1D, 2D, 3D.
Arreglos 1D, 2D, 3D.Arreglos 1D, 2D, 3D.
Arreglos 1D, 2D, 3D.
 
Numeros aleatorios
Numeros aleatoriosNumeros aleatorios
Numeros aleatorios
 
Codigo ejercicios
Codigo ejerciciosCodigo ejercicios
Codigo ejercicios
 
Xna game studio presentación 06
Xna game studio   presentación 06Xna game studio   presentación 06
Xna game studio presentación 06
 
Presentacion03
Presentacion03Presentacion03
Presentacion03
 
Clase03
Clase03Clase03
Clase03
 
Presentacion03
Presentacion03Presentacion03
Presentacion03
 
Clase03
Clase03Clase03
Clase03
 
Codigo ejemplo j2 me
Codigo ejemplo   j2 meCodigo ejemplo   j2 me
Codigo ejemplo j2 me
 
Ejercicio propuesto 2
Ejercicio propuesto 2Ejercicio propuesto 2
Ejercicio propuesto 2
 
Programa 6
Programa 6Programa 6
Programa 6
 
Programa 6
Programa 6Programa 6
Programa 6
 
Matrices
MatricesMatrices
Matrices
 
Código fuente guitarra
Código fuente guitarraCódigo fuente guitarra
Código fuente guitarra
 
Prototipo de un juego de poker "Programado en lenguaje C"
Prototipo de un juego de poker "Programado en lenguaje C"Prototipo de un juego de poker "Programado en lenguaje C"
Prototipo de un juego de poker "Programado en lenguaje C"
 

Más de Robertho Mathias (8)

Ospf Exposi
Ospf ExposiOspf Exposi
Ospf Exposi
 
Trigonometria
TrigonometriaTrigonometria
Trigonometria
 
Ingles5
Ingles5Ingles5
Ingles5
 
Redes 1 completo
Redes 1 completoRedes 1 completo
Redes 1 completo
 
Ingles5 final
Ingles5 finalIngles5 final
Ingles5 final
 
Evolucion arquitectura
Evolucion arquitecturaEvolucion arquitectura
Evolucion arquitectura
 
Practica 3 d digitales
Practica 3 d digitalesPractica 3 d digitales
Practica 3 d digitales
 
exposicion
exposicionexposicion
exposicion
 

Tres en Raya con Java y NetBeans

  • 1. Roberto Matías Edisson Gudiño Victoria Hernández Kevin Cruz Docente: Ing. Orlando Barcia Ayala
  • 2. *** Idea Base Del Proyecto *** Efectuar un juego de tres en RAYA REALIZANDO UN ANALISIS, DISEÑO E Implementación orientado a objetos. Las relaciones son las siguientes: Los Juegos de Computadora se pueden clasificar en Juegos Totalmente aleatorios y juegos de destrezas: el juego de tres en raya es un juego de destreza, en este juego participan dos jugadores, de los cuales uno incluso puede ser el computador. x 0 x 0 x Al iniciar el juego se solicitaran los nombres d cada jugador y su Nick. En el juego se debe especificar cuál de los jugadores es el primero (por elección o al azar). Así también puede seleccionarse que uno de los jugadores sea la computadora (nombre y Nick será “computer”). Las clases q implementan en el juego deber tener un arreglo privado bidimensional de enteros con un tamaño de 3 por 3 que simulara el tablero del juego. El constructor debe inicializar el arreglo con creso: Los jugadores tiene un orden de juego especifico, el primer jugado realiza un movimiento y mostrara un 1 en el cuadro que desee escoger (ver nota al Final). Cuando toque al segundo jugador, este realizara un movimiento en el cuadro que desea escoger y mostrara un 2 *. Cada movimiento debe validarse para q se realice un cuadro vacío, mostrando los mensajes de advertencias correspondientes.
  • 3. Al realizar cada movimiento el juego debe determinar si se ha ganado o existe un empate. Las clases deben tener atributos, métodos, constructores y sobrecargas. Debe Utilizar método setter, getter, sobrecarga de métodos. Y constructores, así como una interfaz de usuario básica. Nota: La interfaz grafía de usuario puede mostrar el tablero del juego de ajedrez como un conjunto de botones con o sin imágenes ( a criterio del Programador) o un conjunto de cuadros de texto. 1. Implementamos en el editor de NetBeans IDE 6.8 Creamos los paquetes Necesarios q pide el Software
  • 4. CODIGO FUENTE: package mathias.cruz.gudinho.hernandez; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Maticruzgudinhernad extends JFrame implements ActionListener { //Etiquetas del JFrame JLabel l1, l2, l3, l4, l5; // Cuadros de Textos JTextField jugador1, jugador2; //Opciones de radio JRadioButton computador, jugador; ButtonGroup opciones; //Boton empezar a jugar JButton jugar; public Maticruzgudinhernad() { crearJugadores(); } public void crearJugadores() { setTitle("Tres en Raya"); //setLocationRelativeTo(null); setSize(300, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new GridLayout(8, 2)); // Creacion de las etiquetas de la pantalla y asignamos tamaño de la etiqueta l1 = new JLabel("* JUGADORES *"); l1.setSize(100, 20); l2 = new JLabel("Jugador # 1"); l2.setSize(100, 20); l4 = new JLabel("Jugador # 2"); l4.setSize(100, 20);
  • 5. //Fuentes a los controles JLabel l1.setFont(new Font("Algerian", 1, 18)); l1.setForeground(Color.blue); l2.setFont(new Font("Algerian", 1, 14)); l4.setFont(new Font("Algerian", 1, 14)); // Creacion de los Cuadros de texto para el ingreso de nombres jugador1 = new JTextField(""); jugador1.setSize(50, 20); jugador2 = new JTextField(""); jugador2.setSize(50, 20); // Opciones, creacion de radio button opciones = new ButtonGroup(); computador = new JRadioButton("Computador"); computador.setSelected(true); computador.setSize(100, 20); jugador = new JRadioButton("Jugador"); jugador.setSize(100, 20); opciones.add(computador); opciones.add(jugador); // Boton para jugar jugar = new JButton("Jugar"); jugar.setSize(50, 20); // Añadimos el listener al boton jugar.addActionListener(this); // Añadimos los controles al JFrame add(l1); add(new Label()); add(l2); add(jugador1); add(l4); add(new Label()); add(computador); add(new Label()); add(jugador); add(jugador2); add(jugar); setVisible(true); }
  • 6. // Metodos para manejar Eventos// public void actionPerformed(ActionEvent e) { //Validar que se haya ingresado el nick al jugador 1 if (jugador1.getText().trim().equals("")) { JOptionPane.showMessageDialog(null, "InGrEsE El NiCk al JuGaDOr 1"); } else { //Validar que el segundo jugador haya ingresado nombre si se selecciono jugar contra otro jugador if (jugador.isSelected() && jugador2.getText().trim().equals("")) { JOptionPane.showMessageDialog(null, "InGrEsE El NiCk al JuGaDOr 2"); } else { //Sortear quien juega primero aleatoriamente int empieza = (int) (Math.random() * 2 + 1); String jug1,jug2; //Cojemos el nombre del jugador que va a empezar //Si es uno escojemos el nombre que ingreso el primer jugador if (empieza == 1) { jug1 = jugador1.getText(); if (jugador.isSelected() && !jugador2.getText().trim().equals("")) { jug2=jugador2.getText(); } else { jug2="Computer"; } } else { //Si es 2 se verifica si se juga contra otro jugador o contra la computadora if (jugador.isSelected() && !jugador2.getText().trim().equals("")) { jug1=jugador2.getText(); } else { jug1="Computer"; } jug2 = jugador1.getText(); } JOptionPane.showMessageDialog(null, "Empieza el jugador: "+jug1); setVisible(false); new Raya(jug1,jug2); } } }
  • 7. public static void main(String[] args) { new Maticruzgudinhernad(); } } Tenemos L a Clase Raya: package mathias.cruz.gudinho.hernandez; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Raya extends JFrame implements ActionListener { // Botones JButton botones[][]; JPanel p1; //Tamaño del Tablero de Tres en Raya int a = 3; //Matriz del tablero de Tres en raya private int tablero[][]; //Iconos para los botones ImageIcon equis, circulo; //Nicks de los jugadores String nick1, nick2; int turno = 1; public Raya(String jug1, String jug2) { nick1 = jug1; nick2 = jug2; System.out.println(jug1); System.out.println(jug2); dibujarTablero(); jugar(nick1); }
  • 8. public void dibujarTablero() { //Crear matriz de posiciones del tablero tablero = new int[a][a]; // Crear iconos para los botones equis = new ImageIcon("src/mathias/cruz/gudinho/hernandez/equis.gif"); circulo = new ImageIcon("src/mathias/cruz/gudinho/hernandez/circulo.gif"); //Iniciar todo el tablero en cero (Si esta cero se puede escojer si es 1 no se puede escojer for (int i = 0; i < a; i++) { for (int j = 0; j < a; j++) { tablero[i][j] = 0; } } setTitle("Tres en Raya"); //setLocationRelativeTo(null); setSize(200, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new GridLayout(a, 2)); botones = new JButton[a][a]; // Creacion de los botones del tablero for (int i = 0; i < a; i++) { for (int j = 0; j < a; j++) { //Creamos el boton botones[i][j] = new JButton(); //Le damos el oyente de evento botones[i][j].addActionListener(this); //Le damos un nombre a la accion botones[i][j].setActionCommand("" + i + j); botones[i][j].setSize(200, 200); add(botones[i][j]); } } setVisible(true); }
  • 9. // Metodo para presentar el jugador que tiene el turno de jugar public void jugar(String jugador) { JOptionPane.showMessageDialog(null, "Turno: " + jugador); } //Variables que sirven para saber si un jugador ha hecho tres en raya en alguna // de dos forma vertical, horizontal boolean ganaron1, ganaron2; // Variable para controlar si algun jugador ya gano boolean ganaron = false; public void validarTablero() { int i, j; for (i = 0; i < a; i++) { ganaron1 = true; ganaron2 = true; for (j = 0; j < a - 1; j++) { //validar si se hizo tres en raya de forma horizontal ganaron1 = (tablero[i][j] == tablero[i][j + 1]) && ganaron1 && tablero[i][j] != 0; //validar si se hizo tres en raya de forma vertical ganaron2 = (tablero[j][i] == tablero[j + 1][i]) && ganaron2 && tablero[j][i] != 0; } //Si se hizo tres en raya de forma horizontal o vertical presentamos un mensaje if (ganaron1 || ganaron2) { //Asignamos true a la variable ganaron para indicar que un jugador ya gano ganaron = true; //Si el turno era 1 gana el jugador 1 caso contrario el jugador 2 if (turno == 1) { JOptionPane.showMessageDialog(null, "Winner!! Jugador: " + nick1); break; } else { JOptionPane.showMessageDialog(null, "Winner!! Jugador: " + nick2); break; } } }
  • 10. //Si no se hizo tres en raya de forma horizontal valido si se hizo tres en raya // de forma diagonal if (!ganaron) { if ((tablero[0][0] == tablero[1][1] && tablero[1][1] == tablero[2][2] && tablero[1][1] != 0) || (tablero[2][0] == tablero[1][1] && tablero[1][1] == tablero[0][2] && tablero[1][1] != 0)) { //Asignamos true a la variable ganaron para indicar que un jugador ya gano ganaron = true; //Si el turno era 1 gana el jugador 1 caso contrario el jugador 2 if (turno == 1) { JOptionPane.showMessageDialog(null, "Wiiner!!! Jugador: " + nick1); } else { JOptionPane.showMessageDialog(null, "Winner!!!! Jugador: " + nick2); } } } } // Metodo para controlar el turno de juego public void verificarTurno() { // Verificar a quien le toca jugar if (turno == 1) { turno = 2; jugar(nick2); } else { turno = 1; jugar(nick1); } } //Variable para saber si se escogio un cuadro vacío del tablero boolean correcto;
  • 11. // Metodo oyente para eventos de dar clic en los botones del tabler0 public void actionPerformed(ActionEvent e) { if (!ganaron) { correcto=false; //Preguntar por que boton se dio clic y si esta for (int i = 0; i < a; i++) { for (int j = 0; j < a; j++) { if (e.getActionCommand().equals("" + i + j)) { if (tablero[i][j] == 0) { tablero[i][j] = turno; if (turno == 1) { botones[i][j].setIcon(equis); } else { botones[i][j].setIcon(circulo); } correcto=true; } else { JOptionPane.showMessageDialog(null,"Debe escoger otro cuadro este ya ha sido escogido"); } } } } if(correcto){ validarTablero(); if (!ganaron) { verificarTurno(); } } } } }
  • 13. Bueno el principal Objetivo del Proyecto es crecer como estudiantes de la UPS. En base a nuestro desempeño q le estamos poniendo a este proyecto el cual nos servirá para un futuro ponernos nuestras metas. El Principal objetivo del proyecto es cumplir con las necesidades q este pida y dar con todos los requerimientos posibles ya sean gráfica, etc. En si tenemos las dudas q se la preguntaremos a usted Ing.! Sobre el tema de los aleatorios en la pizarra del juego de tres en raya.