SlideShare una empresa de Scribd logo
1 de 5
En esta práctica vamos a desarrollar de forma sencilla el juego del Tres en Raya utilizando el framework AWT (Abstract
Window Toolkit) de Java. Habrá dos modalidades de juego, Humano contra Humano y Humano contra Computadora. En
este último caso la lógica de la computadora se limita a buscar de forma aleatoria una casilla vacía.

Etiquetas: Frame, Panel, paquete AWT, Gestión de eventos, Notificador, Listener, interfaces y adaptadores, ActionListener,
WindowAdapter,…




TresRaya.java
package practicas.java.paqueteAWT;

import   java.awt.Checkbox;
import   java.awt.CheckboxGroup;
import   java.awt.Color;
import   java.awt.Frame;
import   java.awt.GridLayout;
import   java.awt.Label;
import   java.awt.Panel;
import   java.awt.event.ActionEvent;
import   java.awt.event.ActionListener;
import   java.awt.event.WindowEvent;
import   java.awt.event.WindowListener;
import   java.awt.Button;
import   java.util.ArrayList;

public class TresRaya extends Frame implements ActionListener, WindowListener {

         private static final long serialVersionUID = 1L;
         Button[][] teclas = new Button[3][3];
         CheckboxGroup cbg = null;
         int jugador = 1;
         boolean hayganador = false;
         String modalidad = "";
         int contteclas = 0;
         boolean partidaIniciada = false;
         Label msg = null;




                                                                              bitCoach::Juan Bautista Cascallar Lorenzo
public TresRaya(){

       this.addWindowListener(this);
       this.setTitle("Tres en Raya");
       this.setSize(425,180);
       this.setLayout(null);

       Panel panel01 = new Panel();
       panel01.setBounds(15, 39, 120, 120);
       panel01.setLayout(new GridLayout(3,3));


       for(int i=0; i<3; i++){
              for(int j=0; j<3; j++){
                      teclas[i][j] = new Button();
                      teclas[i][j].setName(String.valueOf(i)+String.valueOf(j));
                      teclas[i][j].setLabel("");
                      teclas[i][j].addActionListener(this);
                      panel01.add(teclas[i][j]);
              }
       }

       this.add(panel01);

       Panel panel02 = new Panel();
       panel02.setBounds(180, 40, 200, 100);
       panel02.setLayout(new GridLayout(4,0));

       cbg = new CheckboxGroup();
       Checkbox HvsC = new Checkbox("Humano vs Computadora",cbg,true);

       HvsC.setName("HC");
       Checkbox HvsH = new Checkbox("Humano vs Humano",cbg,false);
       HvsH.setName("HH");
       panel02.add(HvsC); panel02.add(HvsH);

       msg = new Label();
       msg.setBackground(Color.YELLOW);
       msg.setText("Selc. modalidad -> Reiniciar");
       panel02.add(msg);

       Button btn_Reiniciar = new Button("Reiniciar");
       btn_Reiniciar.setName("reiniciar"); btn_Reiniciar.addActionListener(this);
       panel02.add(btn_Reiniciar);

       this.add(panel02);

}




                                                                     bitCoach::Juan Bautista Cascallar Lorenzo
private void MarcacionDePosicionJugada(Button t){
       int f = Integer.valueOf(t.getName().charAt(0)+"");
       int c = Integer.valueOf(t.getName().charAt(1)+"");

       if(modalidad.equals("HH")){
              if((partidaIniciada == true) && (contteclas < 9)){
                      if(jugador == 1){
                             if(teclas[f][c].getLabel().equals("")){
                                     teclas[f][c].setLabel("X");
                                     jugador = 2;
                                     contteclas++;

                                    comprobarGanador("X");

                                    if(hayganador == true){
                                           msg.setText("Partida finalizada::Gana[X]");
                                           partidaIniciada = false;
                                    }

                                    if((contteclas == 9) && (hayganador == false)){
                                           msg.setText("Partida finalizada::Tablas");
                                           partidaIniciada = false;
                                    }
                            }
                     }else if(jugador == 2){
                            if(teclas[f][c].getLabel().equals("")){
                                    teclas[f][c].setLabel("O");
                                    jugador = 1;
                                    contteclas++;

                                    comprobarGanador("O");

                                    if(hayganador == true){
                                           msg.setText("Partida finalizada::Gana[O]");
                                           partidaIniciada = false;
                                    }

                                    if((contteclas == 9) && (hayganador == false)){
                                           msg.setText("Partida finalizada::Tablas");
                                           partidaIniciada = false;
                                    }
                             }
                     }
              }

       }else if(modalidad.equals("HC")){
              if((partidaIniciada == true) && (contteclas < 9)){

                     if(jugador == 1){
                            if(teclas[f][c].getLabel().equals("")){
                                    teclas[f][c].setLabel("H");
                                    jugador = 2;
                                    contteclas++;

                                    comprobarGanador("H");

                                    if(hayganador == true){
                                           msg.setText("Partida finalizada::Gana[H]");
                                           partidaIniciada = false;
                                    }

                                    if((contteclas == 9) && (hayganador == false)){
                                           msg.setText("Partida finalizada::Tablas");
                                           partidaIniciada = false;
                                    }
                             }
                     }




                                                                   bitCoach::Juan Bautista Cascallar Lorenzo
if(jugador == 2){
                                    //Casilla libre de forma aleatoria...
                                    if((hayganador == false) && (contteclas < 9)){
                                            ArrayList<String> casillas_libres = new ArrayList<String>();
                                            int indice = 0;
                                            for(int i=0; i<3; i++){
                                                   for(int j=0; j<3; j++){
                                                           if(teclas[i][j].getLabel().equals("")){

       casillas_libres.add(indice,teclas[i][j].getName());
                                                                     indice++;
                                                             }
                                                    }
                                            }

                                            int x = (int) (Math.random()*casillas_libres.size()-1);


                                            String libre = casillas_libres.get(x);

                                            f = Integer.valueOf(libre.charAt(0)+"");
                                            c = Integer.valueOf(libre.charAt(1)+"");


                                            teclas[f][c].setLabel("C");
                                            jugador = 1;
                                            contteclas++;

                                            comprobarGanador("C");

                                            if(hayganador == true){
                                                   msg.setText("Partida finalizada::Gana[C]");
                                                   partidaIniciada = false;
                                            }

                                            if((contteclas == 9) && (hayganador == false)){
                                                   msg.setText("Partida finalizada::Tablas");
                                                   partidaIniciada = false;
                                            }
                                     }
                             }
                      }
              }//Fin if modalidad
       }//Fin funcion

       private void comprobarGanador(String jug){

               //Comprobar filas
               for(int f=0; f<3; f++){
                      if((teclas[f][0].getLabel().equals(jug)) &&
(teclas[f][0].getLabel().equals(teclas[f][1].getLabel()))
                                     && (teclas[f][0].getLabel().equals(teclas[f][2].getLabel()))){
                              this.hayganador = true;
                              break;
                      }
               }

               //Comprobar columnas
               for(int c=0; c<3; c++){
                      if((teclas[0][c].getLabel().equals(jug)) &&
(teclas[0][c].getLabel().equals(teclas[1][c].getLabel())) &&
                                     (teclas[0][c].getLabel().equals(teclas[2][c].getLabel()))){
                              this.hayganador = true;
                              break;
                      }
               }

               //Comprobar diagonales
               if(((teclas[0][0].getLabel().equals(jug)) &&
(teclas[0][0].getLabel().equals(teclas[1][1].getLabel())) &&
                              (teclas[0][0].getLabel().equals(teclas[2][2].getLabel())))
                              ||((teclas[2][0].getLabel().equals(jug)) &&
(teclas[2][0].getLabel().equals(teclas[1][1].getLabel())) &&
                                             (teclas[2][0].getLabel().equals(teclas[0][2].getLabel())))){
                      this.hayganador = true;
               }

       }//Fin función

                                                                             bitCoach::Juan Bautista Cascallar Lorenzo
public void ReiniciarJuego(){
           partidaIniciada = true;
           jugador = 1;
           contteclas = 0;
           hayganador = false;

           for(int i=0; i<3; i++){
                  for(int j=0; j<3; j++){
                          teclas[i][j].setLabel("");
                  }
           }

           Checkbox ck = cbg.getSelectedCheckbox();
           modalidad = ck.getName();

           msg.setText("Jugando en Modalidad: " + modalidad);

    }

    @Override
    public void actionPerformed(ActionEvent e) {
           // TODO Auto-generated method stub
           Button teclaPulsada = (Button)e.getSource();
           if(teclaPulsada.getName().equals("reiniciar")){
                   ReiniciarJuego();
           }else{
                   MarcacionDePosicionJugada(teclaPulsada);
           }
    }

    @Override
    public void windowOpened(WindowEvent e) {
           // TODO Auto-generated method stub
    }

    @Override
    public void windowClosing(WindowEvent e) {
           // TODO Auto-generated method stub
           System.exit(0);
    }

    @Override
    public void windowClosed(WindowEvent e) {
           // TODO Auto-generated method stub
    }

    @Override
    public void windowIconified(WindowEvent e) {
           // TODO Auto-generated method stub
    }

    @Override
    public void windowDeiconified(WindowEvent e) {
           // TODO Auto-generated method stub
    }

    @Override
    public void windowActivated(WindowEvent e) {
           // TODO Auto-generated method stub
    }

    @Override
    public void windowDeactivated(WindowEvent e) {
           // TODO Auto-generated method stub
    }
}




                                                                bitCoach::Juan Bautista Cascallar Lorenzo

Más contenido relacionado

La actualidad más candente

How Hashmap works internally in java
How Hashmap works internally  in javaHow Hashmap works internally  in java
How Hashmap works internally in javaRamakrishna Joshi
 
Struts Java I I Lecture 8
Struts  Java  I I  Lecture 8Struts  Java  I I  Lecture 8
Struts Java I I Lecture 8patinijava
 
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...Chris Richardson
 
Java Input Output and File Handling
Java Input Output and File HandlingJava Input Output and File Handling
Java Input Output and File HandlingSunil OS
 
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Melina Krisnawati
 
Java - Collections framework
Java - Collections frameworkJava - Collections framework
Java - Collections frameworkRiccardo Cardin
 
Datastructures in python
Datastructures in pythonDatastructures in python
Datastructures in pythonhydpy
 
Php Using Arrays
Php Using ArraysPhp Using Arrays
Php Using Arraysmussawir20
 
Localization and Shared Preferences in android
Localization and Shared Preferences in androidLocalization and Shared Preferences in android
Localization and Shared Preferences in androidAly Arman
 
Pertemuan 10 Mekanisme Inferensi
Pertemuan 10 Mekanisme InferensiPertemuan 10 Mekanisme Inferensi
Pertemuan 10 Mekanisme InferensiEndang Retnoningsih
 
파이썬 Xml 이해하기
파이썬 Xml 이해하기파이썬 Xml 이해하기
파이썬 Xml 이해하기Yong Joon Moon
 
What is Dictionary In Python? Python Dictionary Tutorial | Edureka
What is Dictionary In Python? Python Dictionary Tutorial | EdurekaWhat is Dictionary In Python? Python Dictionary Tutorial | Edureka
What is Dictionary In Python? Python Dictionary Tutorial | EdurekaEdureka!
 
R Programming: Learn To Manipulate Strings In R
R Programming: Learn To Manipulate Strings In RR Programming: Learn To Manipulate Strings In R
R Programming: Learn To Manipulate Strings In RRsquared Academy
 
Serialization & De-serialization in Java
Serialization & De-serialization in JavaSerialization & De-serialization in Java
Serialization & De-serialization in JavaInnovationM
 
Object Calisthenics Applied to PHP
Object Calisthenics Applied to PHPObject Calisthenics Applied to PHP
Object Calisthenics Applied to PHPGuilherme Blanco
 
Java Course 8: I/O, Files and Streams
Java Course 8: I/O, Files and StreamsJava Course 8: I/O, Files and Streams
Java Course 8: I/O, Files and StreamsAnton Keks
 
Object oriented programming dengan php
Object oriented programming dengan phpObject oriented programming dengan php
Object oriented programming dengan phpMateri Kuliah Online
 

La actualidad más candente (20)

How Hashmap works internally in java
How Hashmap works internally  in javaHow Hashmap works internally  in java
How Hashmap works internally in java
 
Rest api with Python
Rest api with PythonRest api with Python
Rest api with Python
 
Struts Java I I Lecture 8
Struts  Java  I I  Lecture 8Struts  Java  I I  Lecture 8
Struts Java I I Lecture 8
 
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
 
Java Input Output and File Handling
Java Input Output and File HandlingJava Input Output and File Handling
Java Input Output and File Handling
 
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
 
Java - Collections framework
Java - Collections frameworkJava - Collections framework
Java - Collections framework
 
Datastructures in python
Datastructures in pythonDatastructures in python
Datastructures in python
 
Php functions
Php functionsPhp functions
Php functions
 
Php Using Arrays
Php Using ArraysPhp Using Arrays
Php Using Arrays
 
Java 8 Lambda and Streams
Java 8 Lambda and StreamsJava 8 Lambda and Streams
Java 8 Lambda and Streams
 
Localization and Shared Preferences in android
Localization and Shared Preferences in androidLocalization and Shared Preferences in android
Localization and Shared Preferences in android
 
Pertemuan 10 Mekanisme Inferensi
Pertemuan 10 Mekanisme InferensiPertemuan 10 Mekanisme Inferensi
Pertemuan 10 Mekanisme Inferensi
 
파이썬 Xml 이해하기
파이썬 Xml 이해하기파이썬 Xml 이해하기
파이썬 Xml 이해하기
 
What is Dictionary In Python? Python Dictionary Tutorial | Edureka
What is Dictionary In Python? Python Dictionary Tutorial | EdurekaWhat is Dictionary In Python? Python Dictionary Tutorial | Edureka
What is Dictionary In Python? Python Dictionary Tutorial | Edureka
 
R Programming: Learn To Manipulate Strings In R
R Programming: Learn To Manipulate Strings In RR Programming: Learn To Manipulate Strings In R
R Programming: Learn To Manipulate Strings In R
 
Serialization & De-serialization in Java
Serialization & De-serialization in JavaSerialization & De-serialization in Java
Serialization & De-serialization in Java
 
Object Calisthenics Applied to PHP
Object Calisthenics Applied to PHPObject Calisthenics Applied to PHP
Object Calisthenics Applied to PHP
 
Java Course 8: I/O, Files and Streams
Java Course 8: I/O, Files and StreamsJava Course 8: I/O, Files and Streams
Java Course 8: I/O, Files and Streams
 
Object oriented programming dengan php
Object oriented programming dengan phpObject oriented programming dengan php
Object oriented programming dengan php
 

Destacado

Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletjubacalo
 
Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadorajubacalo
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threadsjubacalo
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datosjubacalo
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DBjubacalo
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundojubacalo
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSPjubacalo
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva pagejubacalo
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSPjubacalo
 
Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSPjubacalo
 
Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLjubacalo
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcatjubacalo
 
jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojubacalo
 
jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jubacalo
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Androidjubacalo
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBancojubacalo
 
MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagenjubacalo
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosjubacalo
 

Destacado (20)

Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servlet
 
Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadora
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threads
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datos
 
Word VBA
Word VBAWord VBA
Word VBA
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DB
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundo
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSP
 
Jsp directiva page
Jsp directiva pageJsp directiva page
Jsp directiva page
 
Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSP
 
Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSP
 
Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTML
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcat
 
jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogo
 
jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
 
App Android MiniBanco
App Android MiniBancoApp Android MiniBanco
App Android MiniBanco
 
MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagen
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viveros
 

Similar a Java AWT Tres en Raya

Proyecto tres en_raya_f_inal_mathias_y_grupo
Proyecto tres en_raya_f_inal_mathias_y_grupoProyecto tres en_raya_f_inal_mathias_y_grupo
Proyecto tres en_raya_f_inal_mathias_y_grupoRobertho Mathias
 
Xna game studio presentación 07
Xna game studio   presentación 07Xna game studio   presentación 07
Xna game studio presentación 07Juan Cardona
 
Practica 1 informática ii
Practica 1 informática iiPractica 1 informática ii
Practica 1 informática iiAlvin Jacobs
 
Juego Bingo - JAVA
Juego Bingo - JAVAJuego Bingo - JAVA
Juego Bingo - JAVAedgar muñoz
 
Algoritmos condicionales de Linder
Algoritmos condicionales de LinderAlgoritmos condicionales de Linder
Algoritmos condicionales de LinderJhair Aguirre
 
Proyecto Poogame Blackjack
Proyecto Poogame BlackjackProyecto Poogame Blackjack
Proyecto Poogame BlackjackEPN
 
Resolución de problemas con java
Resolución de problemas con javaResolución de problemas con java
Resolución de problemas con javadiegocastro1234
 
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
 
Ejercicios resueltos practica 2 (nueva 2014) informática ii
Ejercicios resueltos practica 2 (nueva 2014) informática iiEjercicios resueltos practica 2 (nueva 2014) informática ii
Ejercicios resueltos practica 2 (nueva 2014) informática iiAlvin Jacobs
 

Similar a Java AWT Tres en Raya (20)

Proyecto tres en_raya_f_inal_mathias_y_grupo
Proyecto tres en_raya_f_inal_mathias_y_grupoProyecto tres en_raya_f_inal_mathias_y_grupo
Proyecto tres en_raya_f_inal_mathias_y_grupo
 
Xna game studio presentación 07
Xna game studio   presentación 07Xna game studio   presentación 07
Xna game studio presentación 07
 
Codigo ejercicios
Codigo ejerciciosCodigo ejercicios
Codigo ejercicios
 
Practica 1 informática ii
Practica 1 informática iiPractica 1 informática ii
Practica 1 informática ii
 
Juego Bingo - JAVA
Juego Bingo - JAVAJuego Bingo - JAVA
Juego Bingo - JAVA
 
Algoritmos condicionales de Linder
Algoritmos condicionales de LinderAlgoritmos condicionales de Linder
Algoritmos condicionales de Linder
 
Eliita
EliitaEliita
Eliita
 
Código fuente guitarra
Código fuente guitarraCódigo fuente guitarra
Código fuente guitarra
 
Proyecto Poogame Blackjack
Proyecto Poogame BlackjackProyecto Poogame Blackjack
Proyecto Poogame Blackjack
 
Resolución de problemas con java
Resolución de problemas con javaResolución de problemas con java
Resolución de problemas con java
 
Try catch
Try catchTry catch
Try catch
 
Numeros aleatorios
Numeros aleatoriosNumeros aleatorios
Numeros aleatorios
 
Hechos en clase
Hechos en claseHechos en clase
Hechos en clase
 
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"
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Java
JavaJava
Java
 
Programacion ii
Programacion iiProgramacion ii
Programacion ii
 
Tarot
TarotTarot
Tarot
 
Ejercicios resueltos practica 2 (nueva 2014) informática ii
Ejercicios resueltos practica 2 (nueva 2014) informática iiEjercicios resueltos practica 2 (nueva 2014) informática ii
Ejercicios resueltos practica 2 (nueva 2014) informática ii
 
Ahorcado
AhorcadoAhorcado
Ahorcado
 

Más de jubacalo

Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2jubacalo
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oraclejubacalo
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajaxjubacalo
 
Escenarios
EscenariosEscenarios
Escenariosjubacalo
 
Matrices02
Matrices02Matrices02
Matrices02jubacalo
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámicajubacalo
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datosjubacalo
 
Textura de agua
Textura de aguaTextura de agua
Textura de aguajubacalo
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionalesjubacalo
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 

Más de jubacalo (12)

Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oracle
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajax
 
Escenarios
EscenariosEscenarios
Escenarios
 
Matrices02
Matrices02Matrices02
Matrices02
 
Gráficos
GráficosGráficos
Gráficos
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámica
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datos
 
Textura de agua
Textura de aguaTextura de agua
Textura de agua
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionales
 
Solver
SolverSolver
Solver
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 

Último

Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfTarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfCarol Andrea Eraso Guerrero
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxMartín Ramírez
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALEDUCCUniversidadCatl
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdfÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdfluisantoniocruzcorte1
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docxAgustinaNuez21
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 

Último (20)

Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfTarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdfÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
 
CIENCIAS NATURALES 4 TO ambientes .docx
CIENCIAS NATURALES 4 TO  ambientes .docxCIENCIAS NATURALES 4 TO  ambientes .docx
CIENCIAS NATURALES 4 TO ambientes .docx
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
VISITA À PROTEÇÃO CIVIL _
VISITA À PROTEÇÃO CIVIL                  _VISITA À PROTEÇÃO CIVIL                  _
VISITA À PROTEÇÃO CIVIL _
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 

Java AWT Tres en Raya

  • 1. En esta práctica vamos a desarrollar de forma sencilla el juego del Tres en Raya utilizando el framework AWT (Abstract Window Toolkit) de Java. Habrá dos modalidades de juego, Humano contra Humano y Humano contra Computadora. En este último caso la lógica de la computadora se limita a buscar de forma aleatoria una casilla vacía. Etiquetas: Frame, Panel, paquete AWT, Gestión de eventos, Notificador, Listener, interfaces y adaptadores, ActionListener, WindowAdapter,… TresRaya.java package practicas.java.paqueteAWT; import java.awt.Checkbox; import java.awt.CheckboxGroup; import java.awt.Color; import java.awt.Frame; import java.awt.GridLayout; import java.awt.Label; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.awt.Button; import java.util.ArrayList; public class TresRaya extends Frame implements ActionListener, WindowListener { private static final long serialVersionUID = 1L; Button[][] teclas = new Button[3][3]; CheckboxGroup cbg = null; int jugador = 1; boolean hayganador = false; String modalidad = ""; int contteclas = 0; boolean partidaIniciada = false; Label msg = null; bitCoach::Juan Bautista Cascallar Lorenzo
  • 2. public TresRaya(){ this.addWindowListener(this); this.setTitle("Tres en Raya"); this.setSize(425,180); this.setLayout(null); Panel panel01 = new Panel(); panel01.setBounds(15, 39, 120, 120); panel01.setLayout(new GridLayout(3,3)); for(int i=0; i<3; i++){ for(int j=0; j<3; j++){ teclas[i][j] = new Button(); teclas[i][j].setName(String.valueOf(i)+String.valueOf(j)); teclas[i][j].setLabel(""); teclas[i][j].addActionListener(this); panel01.add(teclas[i][j]); } } this.add(panel01); Panel panel02 = new Panel(); panel02.setBounds(180, 40, 200, 100); panel02.setLayout(new GridLayout(4,0)); cbg = new CheckboxGroup(); Checkbox HvsC = new Checkbox("Humano vs Computadora",cbg,true); HvsC.setName("HC"); Checkbox HvsH = new Checkbox("Humano vs Humano",cbg,false); HvsH.setName("HH"); panel02.add(HvsC); panel02.add(HvsH); msg = new Label(); msg.setBackground(Color.YELLOW); msg.setText("Selc. modalidad -> Reiniciar"); panel02.add(msg); Button btn_Reiniciar = new Button("Reiniciar"); btn_Reiniciar.setName("reiniciar"); btn_Reiniciar.addActionListener(this); panel02.add(btn_Reiniciar); this.add(panel02); } bitCoach::Juan Bautista Cascallar Lorenzo
  • 3. private void MarcacionDePosicionJugada(Button t){ int f = Integer.valueOf(t.getName().charAt(0)+""); int c = Integer.valueOf(t.getName().charAt(1)+""); if(modalidad.equals("HH")){ if((partidaIniciada == true) && (contteclas < 9)){ if(jugador == 1){ if(teclas[f][c].getLabel().equals("")){ teclas[f][c].setLabel("X"); jugador = 2; contteclas++; comprobarGanador("X"); if(hayganador == true){ msg.setText("Partida finalizada::Gana[X]"); partidaIniciada = false; } if((contteclas == 9) && (hayganador == false)){ msg.setText("Partida finalizada::Tablas"); partidaIniciada = false; } } }else if(jugador == 2){ if(teclas[f][c].getLabel().equals("")){ teclas[f][c].setLabel("O"); jugador = 1; contteclas++; comprobarGanador("O"); if(hayganador == true){ msg.setText("Partida finalizada::Gana[O]"); partidaIniciada = false; } if((contteclas == 9) && (hayganador == false)){ msg.setText("Partida finalizada::Tablas"); partidaIniciada = false; } } } } }else if(modalidad.equals("HC")){ if((partidaIniciada == true) && (contteclas < 9)){ if(jugador == 1){ if(teclas[f][c].getLabel().equals("")){ teclas[f][c].setLabel("H"); jugador = 2; contteclas++; comprobarGanador("H"); if(hayganador == true){ msg.setText("Partida finalizada::Gana[H]"); partidaIniciada = false; } if((contteclas == 9) && (hayganador == false)){ msg.setText("Partida finalizada::Tablas"); partidaIniciada = false; } } } bitCoach::Juan Bautista Cascallar Lorenzo
  • 4. if(jugador == 2){ //Casilla libre de forma aleatoria... if((hayganador == false) && (contteclas < 9)){ ArrayList<String> casillas_libres = new ArrayList<String>(); int indice = 0; for(int i=0; i<3; i++){ for(int j=0; j<3; j++){ if(teclas[i][j].getLabel().equals("")){ casillas_libres.add(indice,teclas[i][j].getName()); indice++; } } } int x = (int) (Math.random()*casillas_libres.size()-1); String libre = casillas_libres.get(x); f = Integer.valueOf(libre.charAt(0)+""); c = Integer.valueOf(libre.charAt(1)+""); teclas[f][c].setLabel("C"); jugador = 1; contteclas++; comprobarGanador("C"); if(hayganador == true){ msg.setText("Partida finalizada::Gana[C]"); partidaIniciada = false; } if((contteclas == 9) && (hayganador == false)){ msg.setText("Partida finalizada::Tablas"); partidaIniciada = false; } } } } }//Fin if modalidad }//Fin funcion private void comprobarGanador(String jug){ //Comprobar filas for(int f=0; f<3; f++){ if((teclas[f][0].getLabel().equals(jug)) && (teclas[f][0].getLabel().equals(teclas[f][1].getLabel())) && (teclas[f][0].getLabel().equals(teclas[f][2].getLabel()))){ this.hayganador = true; break; } } //Comprobar columnas for(int c=0; c<3; c++){ if((teclas[0][c].getLabel().equals(jug)) && (teclas[0][c].getLabel().equals(teclas[1][c].getLabel())) && (teclas[0][c].getLabel().equals(teclas[2][c].getLabel()))){ this.hayganador = true; break; } } //Comprobar diagonales if(((teclas[0][0].getLabel().equals(jug)) && (teclas[0][0].getLabel().equals(teclas[1][1].getLabel())) && (teclas[0][0].getLabel().equals(teclas[2][2].getLabel()))) ||((teclas[2][0].getLabel().equals(jug)) && (teclas[2][0].getLabel().equals(teclas[1][1].getLabel())) && (teclas[2][0].getLabel().equals(teclas[0][2].getLabel())))){ this.hayganador = true; } }//Fin función bitCoach::Juan Bautista Cascallar Lorenzo
  • 5. public void ReiniciarJuego(){ partidaIniciada = true; jugador = 1; contteclas = 0; hayganador = false; for(int i=0; i<3; i++){ for(int j=0; j<3; j++){ teclas[i][j].setLabel(""); } } Checkbox ck = cbg.getSelectedCheckbox(); modalidad = ck.getName(); msg.setText("Jugando en Modalidad: " + modalidad); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub Button teclaPulsada = (Button)e.getSource(); if(teclaPulsada.getName().equals("reiniciar")){ ReiniciarJuego(); }else{ MarcacionDePosicionJugada(teclaPulsada); } } @Override public void windowOpened(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowClosing(WindowEvent e) { // TODO Auto-generated method stub System.exit(0); } @Override public void windowClosed(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowIconified(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowDeiconified(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowActivated(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowDeactivated(WindowEvent e) { // TODO Auto-generated method stub } } bitCoach::Juan Bautista Cascallar Lorenzo