SlideShare una empresa de Scribd logo
1 de 35
Descargar para leer sin conexión
ESCUELA POLITÉCNICA NACIONAL
   FACULTAD DE INGENIERÍA
   ELECTRICA Y ELECTRÓNICA


    PROGRAMACION ORIENTADA A
            OBJETOS

            TEMA: PROYECTO POOGAME


        CRISTIAN PAÚL PÉREZ VALLE
            ANDREA PATRICIA PINTO


                              2010-01-09
.
Documento elaborado por: Pérez Cristian y Pinto Andrea   Página - 1 -
PROYECTO POOGAME


                                        INDICE


OBJETIVOS……………………………………. 3

INTRODUCCION…………………………….. 3

PROGRAMA BUS
Introducción…………………………………. 4
Desarrollo…………………………………….. 4

PROGRAMA BLACKJACK
Introducción……………………………….. 16
Desarrollo……………………………………16

PROGRAMA TIC-TAC-TOE
Introducción………………………………. 29
Desarrollo…………………….……………. 29


CONCLUSIONES………………………… 35




Documento elaborado por: Pérez Cristian y Pinto Andrea   Página - 2 -
PROYECTO POOGAME


OBJETIVO:

Afianzar los conocimientos adquiridos este semestre, desarrollado aplicaciones prácticas en el
campo de la Programación Orientada a Objetos.
Compartir con la comunidad el desarrollo de nuestras aplicaciones.
Aprender sobre la implementación de las interfaces graficas.

INTRODUCCION

Para la elaboración de este proyecto de utilizo el IDE Eclipse, ya que nos brinda todas las
facilidades de Java que ofrece toda la funcionalidad de un lenguaje potente, pero sin las
características menos usadas y más confusas de éstos. C++ es un lenguaje que adolece de falta de
seguridad, pero C y C++ son lenguajes más difundidos, por ello Java se diseñó para ser parecido a
C++ y así facilitar un rápido y fácil aprendizaje.
Java elimina muchas de las características de otros lenguajes como C++, para mantener reducidas
las especificaciones del lenguaje y añadir características muy útiles.

Java reduce en un 50% los errores más comunes de programación con lenguajes como C y C++ al
eliminar muchas de las características de éstos, entre las que destacan:
aritmética de punteros
no existen referencias
registros (struct)
definición de tipos (typedef)
macros (#define)
necesidad de liberar memoria (free)

Además, el intérprete completo de Java que hay en este momento es muy pequeño, solamente
ocupa 215 Kb de RAM.

JAVA ORIENTADO A OBJETOS
Java implementa la tecnología básica de C++ con algunas mejoras y elimina algunas cosas para
mantener el objetivo de la simplicidad del lenguaje. Java trabaja con sus datos como objetos y con
interfaces a esos objetos. Soporta las tres características propias del paradigma de la orientación a
objetos: encapsulación, herencia y polimorfismo. Las plantillas de objetos son llamadas, como en
C++, clases y sus copias, instancias. Estas instancias, como en C++, necesitan ser construidas y
destruidas en espacios de memoria.
Java incorpora funcionalidades inexistentes en C++ como por ejemplo, la resolución dinámica de
métodos. Esta característica deriva del lenguaje Objective C, propietario del sistema operativo
Next. En C++ se suele trabajar con librerías dinámicas (DLLs) que obligan a recompilar la aplicación
cuando se retocan las funciones que se encuentran en su interior. Este inconveniente es resuelto
por Java mediante una interfaz específica llamada RTTI (RunTime Type Identification) que define la
interacción entre objetos excluyendo variables de instancias o implementación de métodos. Las
clases en Java tienen una representación en el runtime que permite a los programadores
interrogar por el tipo de clase y enlazar dinámicamente la clase con el resultado de la búsqueda

Documento elaborado por: Pérez Cristian y Pinto Andrea                                   Página - 3 -
PROGRAMA BUS

INTRODUCCCION

Este programa simula a un terminal terrestre, en donde solo tenemos un bus y podemos ingresar
pasajeros, bajar pasajeros, buscar pasajeros, llevar una lista de pasajeros entre otras cosas.
Esta diseñado en una interfaz grafica, por lo cual se facilita su utilización.

DESARROLLO

Creación de las Clases

Todas las clases fueron creadas dentro de un paquete denominado terrestre.
El elemento básico de la programación orientada a objetos en Java es la clase. Una clase define la
forma y comportamiento de un objeto.

Para crear una clase sólo se necesita un archivo fuente que contenga la palabra clave reservada
class seguida de un identificador legal y un bloque delimitado por dos llaves para el cuerpo de la
clase.

Creación de la clase Aplica

En las primeras líneas se importan clases de los paquetes
A continuación se define a la clase Aplica, para luego definir todas las variables que se van a utilizar.

En este caso se utilizo un menú para generar todas las opciones requeridas por el usuario, para esto se
utilizo la sentencia switch ya que existen ocasiones o programas donde se exige evaluar muchas condiciones
a la vez, en estos casos, o se usan una condición compuesta muy grande o se debe intentar convertir el
problema a uno que se pueda resolver usando la instrucción switch();

JOptionPane.showMessageDialog simplemente nos imprime un mensaje en una ventana
JOptionPane.showInputDialog nos muestra un mensaje a elegir en una ventana, se debe declarar una
variable antes para que se le asigne todo el valor de la cadena o de el entero que se va a introducir por
teclado.

La instrucción switch() es una instrucción de decisión múltiple, donde el compilador prueba o busca el valor
contenido en una variable contra una lista de constantes ints o chars, cuando el computador encuentra el
valor de igualdad entre variable y constante, entonces ejecuta el grupo de instrucciones asociados a dicha
constante, si no encuentra el valor de igualdad entre variable y constante, entonces ejecuta un grupo de
instrucciones asociados a un default, aunque este último es opcional. Se utilizo el switch para generar el
menú de las opciones principales del bus.

El Integer.parseInt Convierte una cadena de texto en un número entero.

La clase StringTokenizer nos ayuda a dividir un string en substrings o tokens, en base a otro string
(normalmente un carácter) separador entre ellos denominado delimitador.



Documento elaborado por: Pérez Cristian y Pinto Andrea                                               Página - 4 -
Supongamos un string consistente en el nombre, y los dos apellidos de una persona separados por espacios
en blanco. La clase StringTokenizer nos ayuda a romper dicho string en tres substrings basado en que el
carácter delimitador es un espacio en blanco.

 La sentencia try define el ámbito de sus manejadores de excepción asociados. Se pueden asociar
manejadores de excepción a una sentencia try proporcionando uno o más bloques catch directamente
después del bloque try. En otras palabras la sentencia try nos proporciono las validaciones necesarias en el
ingreso de datos.

try {
   ...
} catch ( . . . ) {

No puede haber ningún código entre el final de la sentencia try y el principio de la primera
sentencia catch. La forma general de una sentencia catch en Java es esta.
Se puede apreciar que el break, el catch, y el system.exit son comandos para salir del entorno java.

Y por último la sentencia if solo nos proporciona condicionamientos, la sentencia solo se ejecutara
siempre y cuando sea verdadera, un ejemplo en el proyecto bus es al validar la edad de los
pasajeros.


package terrestre;

/**
 * Interacción entre las clases Bus y Pasajero
 *
 */

import java.util.StringTokenizer;
import javax.swing.JOptionPane;
public class Aplica {

          public static void main(String[] args) {
                try {
                int nj = 0;
                JOptionPane.showMessageDialog (null,"BUS");
                int z = 20;
                Bus a=new Bus("ESCOLAR",z);


                      for(;;)
                      {

                                  String ops = JOptionPane.showInputDialog (
                           null,"MENU: nn1. Subir Pasajeron" +
                                       "2. Bajar Pasajeron" +
                                       "3. Total de Pasajerosn" +
                                       "4. Listado de los Pasajerosn" +
                                       "5. Promedio de edad de los Pasajerosn" +
                                       "6. Buscar Pasajeron" +
                                       "7. Salirn");



Documento elaborado por: Pérez Cristian y Pinto Andrea                                         Página - 5 -
int an = Integer.parseInt(ops);
                     switch(an) {

                            case 1:

                                   try {

                    JOptionPane.showMessageDialog ( null,"Ingrese
              Pasajero");
                     String st = JOptionPane.showInputDialog ( null,"El
                    Pasajero debe ser ingresado de la siguiente forma:n"
                          "nombre_edad","Ejemplo: Andres_21");


              StringTokenizer str = new StringTokenizer(st, "_");
                    if ((str.countTokens() > 2) || (str.countTokens() < 2))
       {
              JOptionPane.showMessageDialog ( null,"FAVOR LLENE TODOS LOS
              CAMPOS!!!");
                                            }
                                      String nombre = str.nextToken();
                          int edad = Integer.parseInt(str.nextToken());
                                      if (edad > 100 || edad < 0) {

              JOptionPane.showMessageDialog (null,"edad mal ingresada");
                                      }
                                      else{

                                           Pasajero b = new Pasajero();
                                           b.setNombre(nombre);
                                           b.setEdad(edad);
                                           a.subirPasajero(b);
                                           }
                                           } catch (Exception e) {


              JOptionPane.showMessageDialog (null,"MAL INGRESADO!!!");
                                      }

                                           break;



                            case 2:
                            String nnj = JOptionPane.showInputDialog
                            (null,"Ingrese el numero de puesto del pasajero:
                            ");

                                        try {
                                          nj= Integer.parseInt(nnj);

                                           }catch(Exception e){

              JOptionPane.showMessageDialog (null,"INGRESE NUMERO NO
              LETRAS!!!");


Documento elaborado por: Pérez Cristian y Pinto Andrea                    Página - 6 -
}
                                           if(nj<0) {

              JOptionPane.showMessageDialog (null,"OJO, Valores Negativos
              NO Aceptados");

                                           }
                                           a.bajarPasajero(nj);
                                           break;

                          case 3:
              JOptionPane.showMessageDialog (null,"El numero de pasajeros
              del bus es: " + a.totalPasajeros());
                                      break;

                            case 4:

       JOptionPane.showMessageDialog (null,"Listado de pasajeros: ");
                                     int i = 1;

                                           for (String dato: a.listaPasajeros())
{

                                                   if (dato == "") {

                                                   }
                                                   else{


      JOptionPane.showMessageDialog (null,"Pasajero "+ (i )+ " :              " +
dato);
                                               i++;
                                          }
                                    }
                                    break
                                    ;

                        case 5:
JOptionPane.showMessageDialog (null,"EL PROMEDIO DE EDAD DE ESTE BUS ES "
+ a.promedioEdades() + "AÑOS");
                                   break;

                            case 6:
                                   String cad = null;
 cad = JOptionPane.showInputDialog (null,"Ingrese el nombre del pasajero
a buscar");

                                           try {


                                                   }catch (Exception e) {}

                                           for (String dato: a.listaPasajeros())
{

                                                           if (dato.equals(cad)) {


Documento elaborado por: Pérez Cristian y Pinto Andrea                       Página - 7 -
JOptionPane.showMessageDialog (null,"LO ENCONTRAMOS!!! El
               pasajero está en este bus");
                                                  }
                                             }
               JOptionPane.showMessageDialog (null,"Búsqueda Finalizada");

                                                break;

                                case 7:
                                {
                                        JOptionPane.showMessageDialog
                (null,"ESPERO QUE ESTE PROGRAMA HAYA SIDO DE SU AGRADO");


                                System.exit(0);
                                }break;

                                default:

               JOptionPane.showMessageDialog(null,"Seleccion
               erroneannnElija nuevamente una opcion del 1 al 7");
                           }


                          }
        }catch (Exception e){}
}

}




Creación de la Clase Pasajero


Al principio del programa de debe definir la clase Pasajero, a continuación se debe declarar todas
las variables que necesitemos utilizar (lo citado con color azul son los comentarios de cada paso en
el programa)
El IDE llama a los métodos o funciones miembro que empiezan por get, para mostrar en los
editores los valores de las propiedades. Si el programador cambia el valor de una propiedad se
llama a un método cuyo nombre empieza por set.

       getter method: lee el valor de la propiedad
       setter method: cambia el valor de la propiedad.




    public class Pasajero {

                 /* campo para el nombre del <code> Pasajero </code> */
                private String nombre;
                /* campo para la edad del <code> Pasajero </code> */

Documento elaborado por: Pérez Cristian y Pinto Andrea                                  Página - 8 -
private int edad;



       public Pasajero() {

       }

       /**
              * Inicializa los campos del objeto <code> Pasajero </code>
       con valores dados
        *
              * @param nombre contiene el valor para el campo <code>
       nombre </code>
        * @param edad contiene el valor para el campo <code> edad </code>
        */
       public Pasajero(String nombre, int edad) {

              this.nombre = nombre;
              this.edad = edad;
       }

       /**
        * * Devuelve el valor del campo <code> edad </code>
        *
        * @return valor del campo <code> edad </code>
        */
       public int getEdad() {

              return edad;
       }

       /**
        * Asigna el valor del campo <code> edad </code> de un
        * <code> Pasajero </code>
        *
        * @param edad contiene el valor de un campo
        *                      <code> edad </code>
        */
       public void setEdad(int edad) {

              this.edad = edad;
       }

       /**
        * Devuelve el valor del campo <code> nombre </code>
        *
        * @return valor del campo <code> nombre </code>
        */
       public String getNombre() {

              return nombre;
       }

       /**
        * Asigna el valor del campo <code> nombre </code> de un
        * <code> Pasajero </code>

Documento elaborado por: Pérez Cristian y Pinto Andrea            Página - 9 -
*
         * @param nombre contiene el valor de un campo
         *                      <code> nombre </code>
         */
        public void setNombre(String nombre) {

               this.nombre = nombre;
        }
}

Creación de la Clase Bus

Al principio del programa de debe publicar la clase Bus, a continuación se debe declarar todas las
variables que necesitemos utilizar.
Se poner todos los paquetes necesarios en este caso se utilizo el paquete javax.swing.*. Un
paquete es una agrupación de clases que tiene una finalidad relacionada.
De la misma manera lo comentado en color azul y verde nos indica que realizamos paso a paso.



package terrestre;
import javax.swing.*;
/**
 * Manipula objetos de tipo <code> Bus </code>
 *
 */
public class Bus {

        /* campo para el nombre del <code> Bus </code> */
        private String nombre;
        /* campo para el numero máximo de pasajeros del <code> Bus </code>
*/
        private int max;
        /* campo para el numero de pasajeros del <code> Bus </code> */
        private int numeroPasajeros;
        /* campo para el arreglo de pasajeros del <code> Bus </code> */
        private Pasajero pasajeros[];

        /**
         * inicializa los campos del objeto <code> Bus </code>
         */
        public Bus() {

        }

        /**
         * inicializa los campos del objeto <code> Bus </code> con valores
dados
       *
       * @param      nombre contiene el valor para el campo <code> nombre
</code>
       * @param      max contiene el valor para el campo <code> max </code>
       * @param      numeroPasajeros contiene valor de campo <code>
numeroPasajeros      </code>



Documento elaborado por: Pérez Cristian y Pinto Andrea                               Página - 10 -
* @param pasajeros contiene el valor para campo <code> pasajeros
</code>
       */

      public Bus(String nombre, int max, int numeroPasajeros, Pasajero[]
pasajeros) {

              this.nombre = nombre;
              this.max = max;
              this.numeroPasajeros = numeroPasajeros;
              this.pasajeros = pasajeros;
        }

        /**
         * inicializa los campos del objeto <code> Bus </code> con valores
dados
       *
       * @param nombre contiene el valor para el campo <code> nombre
</code>
       * @param max contiene el valor para el campo <code> max </code>
       */
      public Bus(String nombre, int max) {

              this.nombre = nombre;
              this.max = max;
              this.numeroPasajeros = 0;
              this.pasajeros = new Pasajero[max];
        }

        /**
         * Devuelve el valor del campo <code> max </code>
         *
         * @return valor del campo <code> max </code>
         */
        public int getMax() {

              return max;
        }

        /**
         * Asigna el valor del     campo <code> max </code> de un
         * <code> Bus </code>
         *
         * @param max contiene     el valor de un campo
         *                          <code> max </code>
         */
        public void setMax(int     max) {

              this.max = max;
        }

        /**
         * Devuelve el valor del campo <code> nombre </code>
         *
         * @return valor del campo <code> nombre </code>
         */
        public String getNombre() {

Documento elaborado por: Pérez Cristian y Pinto Andrea              Página - 11 -
return nombre;
       }

       /**
        * Asigna el valor del campo <code> nombre </code> de un
        * <code> Bus </code>
        *
        * @param nombre contiene el valor de un campo
        *                      <code> nombre </code>
        */
       public void setNombre(String nombre) {

              this.nombre = nombre;
       }

       /**
        * Devuelve el valor del campo <code> numeroPasajeros </code>
        *
        * @return valor del campo <code> numeroPasajeros </code>
        */
       public int getNumeroPasajeros() {

              return numeroPasajeros;
       }

       /**
        * Asigna el valor del campo <code> numeroPasajeros </code> de un
        * <code> Bus </code>
        *
        * @param numeroPasajeros contiene el valor de un campo
        *                      <code> numeroPasajeros </code>
        */
       public void setNumeroPasajeros(int numeroPasajeros) {

              this.numeroPasajeros = numeroPasajeros;
       }

       /**
        * Devuelve el valor del campo <code> pasajeros </code>
        *
        * @return valor del campo <code> pasajeros </code>
        */
       public Pasajero[] getPasajeros() {

              return pasajeros;
       }

       /**
        * Asigna el valor del campo <code> pasajeros </code> de un
        * <code> Bus </code>
        *
        * @param pasajeros contiene el valor de un campo
        *                      <code> pasajeros </code>
        */
       public void setPasajeros(Pasajero[] pasajeros) {


Documento elaborado por: Pérez Cristian y Pinto Andrea            Página - 12 -
this.pasajeros = pasajeros;
       }

       /**
        * Llena con valores null al vector <code> pasajeros </code>
        */
       public void nullCadena() {

       for (int i = 0; i < max; i++) {

              pasajeros[i] = null;
              }
       }

       /**
        * Agrega un pasajero al vector <code> pasajeros </code>
        * de la case <code> Bus </code>
        *
        * @param valuePasajero contiene el nombre y la edad del pasajero
que
        * se sube al <code> Bus </code>
        */
       public void subirPasajero (Pasajero valuePasajero){

              if (numeroPasajeros < max) {

                     for (int z = 0; z < max; z++) {

                     if (pasajeros[z] == null) {

                            pasajeros[z] = valuePasajero;
                            numeroPasajeros++;
                            z = max;
                            }
                    }
              } else{

                     JOptionPane.showMessageDialog(null,"BUS lleno");
              }
       }

       /**
        * Resta un pasajero al vector <code> pasajeros </code>
        * de la case <code> Bus </code>
        *
      * @param lugarPasajero contiene el número de puesto del pasajero
        * que se baja del <code> Bus </code>
        */
       public void bajarPasajero (int lugarPasajero){

              if (numeroPasajeros == 0) {

                    JOptionPane.showMessageDialog(null,"BUS vacío");
              } else{

                     if (lugarPasajero > max) {


Documento elaborado por: Pérez Cristian y Pinto Andrea             Página - 13 -
JOptionPane.showMessageDialog(null,"Ese puesto
excede los existentes");
                  }
                  else{

                            if (lugarPasajero <= 0) {

                                   JOptionPane.showMessageDialog(null,"El
puesto 0 no existe");
                            }
                            else {

                                   if(pasajeros[lugarPasajero - 1] == null) {

                                           JOptionPane.showMessageDialog(null,"En
ese puesto ya no hay nadie");
                        }else {

                                           pasajeros[lugarPasajero -1] = null;
                                           numeroPasajeros --;
                            }
                     }
              }
       }
}

       /**
        * Devuelve el total de pasajeros que se encuentran
        * en el <code> Bus </code>
        *
        * @return número de Pasajeros en el <code> Bus </code>
        */
       public int totalPasajeros() {

              return (numeroPasajeros);
       }

       /**
        * Devuelve la lista de pasajeros que se encuentran
        * en el <code> Bus </code>
        *
        * @return nombres de los Pasajeros en el <code> Bus </code>
        */

       public String[] listaPasajeros(){

              String nombre[] = new String[max];
              for (int i = 0; i < max; i++){

                     if (pasajeros[i] == null) {

                           nombre[i] = "";
                     }
                     else {

                            nombre[i] = pasajeros[i].getNombre();
                     }

Documento elaborado por: Pérez Cristian y Pinto Andrea                 Página - 14 -
}
              return nombre;
       }

      /**
       * Devuelve el promedio de edades de los pasajeros que se
encuentran
       *
 en el <code> Bus </code>
       *
       * @return promedio de edades de los pasajeros en el <code> Bus
</code>
       */
      public float promedioEdades(){

              float sumaPromedio = 0;
              for (int i = 0; i < numeroPasajeros; i++){

                    sumaPromedio += pasajeros[i].getEdad();
              }
              return sumaPromedio / numeroPasajeros;

       }
}




Documento elaborado por: Pérez Cristian y Pinto Andrea          Página - 15 -
PROGRAMA BLACKJACK
INTRODUCCION

Este programa simula el juego de 21, es decir genera las 52 cartas de un naipe al azar para cuantos
jugadores se disponga, realiza todo lo que usualmente se hace en el juego, genera sus apuestas,
nos muestra cuanto dinero hay en la mesa entre otras cosas, de igual esta diseñado en una
interfaz grafica, por lo cual se facilita su utilización.

DESARROLLO

Creación de las Clases

Todas las clases fueron creadas dentro de un paquete denominado ocio.
El elemento básico de la programación orientada a objetos en Java es la clase. Una clase define la
forma y comportamiento de un objeto.

Para crear una clase sólo se necesita un archivo fuente que contenga la palabra clave reservada
class seguida de un identificador legal y un bloque delimitado por dos llaves para el cuerpo de la
clase.

Creación de la clase Aplica

Al principio del programa de debe definir la clase Aplica, a continuación se debe declarar todas las
variables que necesitemos utilizar.

En este caso se utilizo un menú para generar todas las opciones requeridas por el juego, para esto se utilizo
la sentencia switch();

JOptionPane.showMessageDialog simplemente nos imprime un mensaje en una ventana
JOptionPane.showInputDialog nos muestra un mensaje a elegir en una ventana, se debe declarar una
variable antes para que se le asigne todo el valor de la cadena o de el entero que se va a introducir por
teclado. Se utilizo el switch para generar el menú de las opciones principales del juego y también para sailr
de él.

El Integer.parseInt Convierte una cadena de texto en un número entero.

La sentencia try define el ámbito de sus manejadores de excepción asociados. Se pueden asociar
manejadores de excepción a una sentencia try proporcionando uno o más bloques catch directamente
después del bloque try. En otras palabras la sentencia try nos proporciono las validaciones necesarias en el
ingreso de datos, como por ejemplo que en el menú no se ingresen letras.

No puede haber ningún código entre el final de la sentencia try y el principio de la primera
sentencia catch. La forma general de una sentencia catch en Java es esta.
Se puede apreciar que el break, el catch, y el system.exit son comandos para salir del entorno java.


Documento elaborado por: Pérez Cristian y Pinto Andrea                                        Página - 16 -
Y por último la sentencia if solo nos proporciona condicionamientos, la sentencia solo se ejecutara
siempre y cuando sea verdadera, un ejemplo es momento de ingresar en el número de jugadores,
éste debe ser mayor o igual a dos, en caso contrario se retorna al menú principal.


package ocio;
import javax.swing.JOptionPane;
public class Aplica {

       public static void main(String[] args) {

               JOptionPane.showMessageDialog(null,"JUGUEMOS BLACKJACK");
               Mesa temp = new Mesa(0);
               int indiceMenu = 0;
               int a;
               int numberJug = 0;
               boolean ope1 = false, ope2 = false;
               String pa = "";

               do

               for(;;){

                String men = JOptionPane.showInputDialog(null,"tt MENU:
ntt1. Quiénes vamos a jugar?" +
                              "... ntt2. Repartir cartasn" +
                              "tt3. Desea más cartas...n" +
                              "tt4. Ver mis cartasn" +
                              "tt5. Conocer el estado de la mesan" +
                              "tt6. Ayudan" +
                              "tt7. Salirn");

                       try {

                             indiceMenu = Integer.parseInt(men);
                       }catch(NumberFormatException e){

                        JOptionPane.showMessageDialog(null,"Las letras no
se admiten como opciones" +
                                    " del menú");
                        indiceMenu=8;
                  }

                       switch(indiceMenu) {

                               case 1:
                                     boolean number = true;
                                     do{

                                    String me =
JOptionPane.showInputDialog(null,"Cuántas personas " +
                                               "participarán??? ");

                                               try {




Documento elaborado por: Pérez Cristian y Pinto Andrea                                Página - 17 -
numberJug = Integer.parseInt
(me);
                                                 number = false;
                                           }catch(Exception e) {


JOptionPane.showMessageDialog(null,"ERROR!!!! nDigitaste " +
                                                           "mal? Recuerda
que es un número el " +
                                                           "que debes
ingresarn");
                                   }
                                   if(numberJug > 0 && numberJug < 2) {

                                                  number = true;

JOptionPane.showMessageDialog(null,"nDebe haber más de un " +
                                                     "jugadorn Repite el
proceso por favor");
                                   }
                                   if(numberJug < 0) {

                                                  number = true;

JOptionPane.showMessageDialog(null,"nNo puedes digitar " +
                                                      "números
negativos");
                                    }
                              }while(number);
                              temp = new Mesa(numberJug);
                              ope1 = true;
                              break;

                            case 2:
                                  if(!ope1) {


JOptionPane.showMessageDialog(null,"Primero menciona quién va a " +
                                               "jugar");
                                    break;
                              }
                              else {

                                           for(int i=0; i < numberJug; i++) {


        temp.getArregloJugador(i).setArregloCartas();
                                      }

JOptionPane.showMessageDialog(null,"Las cartas han sido Repartidas!" +
                                               "nnnnnnnn");
                                    ope2=true;
                              }
                              break;

                            case 3:
                                  if(ope1) {

Documento elaborado por: Pérez Cristian y Pinto Andrea                  Página - 18 -
if(!ope2){


JOptionPane.showMessageDialog(null,"Primero se deben repartir las" +
                                                     " cartas");
                                         break;
                                   }
                                   else {

                                                  a = capturarPassword (numberJug,
temp, pa);
                                         if(a >= 0 &&
temp.getArregloJugador(a).total() <= 21) {


       JOptionPane.showMessageDialog(null,"Bienvenido " +

       temp.getArregloJugador(a).getNombre());

       JOptionPane.showMessageDialog(null,"Su total actual es de: " +

       temp.getArregloJugador(a).total());


       while(temp.getArregloJugador(a).preguntar()) {


       temp.getArregloJugador(a).setCarta();
                                                             if(
temp.getArregloJugador(a).total()<=21)

       JOptionPane.showMessageDialog(null,"Su total es de: " +

       temp.getArregloJugador(a).total());
                                                             else {


       JOptionPane.showMessageDialog(null,"Ya excedio el " +
                                                                         "limite
de 21 con "
                                                                         +
temp.getArregloJugador(a).total());
                                                                   break;
                                                             }
                                                         }
                                                  }
                                                  else

       JOptionPane.showMessageDialog(null,"Password mal Ingresado!");
                                     }
                                     break;
                               }
                               else{


       JOptionPane.showMessageDialog(null,"Primero menciona quién va a " +

Documento elaborado por: Pérez Cristian y Pinto Andrea                  Página - 19 -
"jugar");
                                   }
                                   break;

                            case 4:
                                  if(ope1) {

                                           if(!ope2) {


       JOptionPane.showMessageDialog(null,"Primero se deben repartir" +
                                                      " las cartasnn ");
                                     }
                                     else{

                                                  a = capturarPassword (numberJug,
temp, pa);
                                                  if(a >= 0)

       temp.getArregloJugador(a).verCartas();
                                          else

       JOptionPane.showMessageDialog(null,"Contraseña incorrecta!");
                                     }
                                     break;
                               }
                               else {


       JOptionPane.showMessageDialog(null,"Primero menciona quién va a " +
                                     "jugar");
                               }
                               break;


                            case 5:
                                  if(ope1){

                                           if(!ope2){


       JOptionPane.showMessageDialog(null,"Primero debe repartir cartas");
                                           break;
                                     }
                                     else {

                                         a=-1;
                                         String m =
JOptionPane.showInputDialog(null,"Ingrese el password: ");

                                                  try {

                                                        pa = m;
                                                  }catch(Exception e) {


       JOptionPane.showMessageDialog(null,"Error en la captura!");

Documento elaborado por: Pérez Cristian y Pinto Andrea                    Página - 20 -
}


       if(pa.equals(temp.getArregloJugador(numberJug-1).getPass())) {

                                                         for(int i = 0; i <
numberJug; i++) {



       temp.getArregloJugador(i).verCartas();
                                                         }



       JOptionPane.showMessageDialog(null,"El ganador fue: " +

       comparaJugadores(temp, numberJug) +
                                                                    " y gano n" +

       temp.sumaApuestas(numberJug));
                                                        indiceMenu=6;
                                                  }
                                                  else {


      JOptionPane.showMessageDialog(null,"Usted no puede abrir la " +
                                                           "Mesa, El
Banco es el unico " +

       "autorizado!");
                                                  }
                                                  break;
                                         }
                                   }
                                   else {


       JOptionPane.showMessageDialog(null,"Primero menciona quién va a " +
                                     "jugar");
                               }
                               break;

                        case 6:
                              JOptionPane.showMessageDialog(null,"tttt
NO ES DIFÍCIL JUGAR BLACK " +
                                          "JACK... Te ofrecemos una
ayudann" +
                                          "1. Te recomendamos seguir los
el orden del menún" +
                                          "2. Debes tratar de alcanzar la
suma de tus " +
                                          "cartas cercano a 21 pero si lo
superas " +
                                          "pierdes el juego
automáticamenten" +


Documento elaborado por: Pérez Cristian y Pinto Andrea                   Página - 21 -
"3. El As puede tomar el valor
de uno u oncen" +
                                                  "4. No te preocupes por los
resultados podrás" +
                                                  "mirarlo en la opción del menú
correspondiente" +
                                                  "conocer estado de la mesan" +
                                                  "5. GRACIAS POR JUGAR ES UN " +
                                                  "GUSTO SERVIRTEn");
                                   break;

                        case 7:
                        {
                              JOptionPane.showMessageDialog (null,"ESPERO
QUE ESTE PROGRAMA HAYA SIDO DE SU AGRADO");


                        System.exit(0);
                        }break;
                        default:
                              JOptionPane.showMessageDialog(null,"Opción
Incorrecta, escoja de nuevo");
                        }
            }while(indiceMenu!=7);
      }

        public static String comparaJugadores(Mesa a, int numberJug) {

              int altoPuntaje = a.getArregloJugador(0).total();
              if (altoPuntaje >= 2)
                    altoPuntaje=0;
              int winner=0;
              for(int i=1;i<numberJug;i++) {

                        if(a.getArregloJugador(i).total()>altoPuntaje &&
a.getArregloJugador(i).total()<=21) {

                                   altoPuntaje=a.getArregloJugador(i).total();
                                   winner=i;
                        }
            }
            return "" + a.getArregloJugador(winner).getNombre() + " con:
" + a.getArregloJugador(winner).total();
      }

        public static int capturarPassword(int numberJug, Mesa temp, String
pa) {

            int p=-1;
            String m =JOptionPane.showInputDialog(null,"***Digita tu
password: ");

              try {

                    pa=m;
              }catch(Exception e) {


Documento elaborado por: Pérez Cristian y Pinto Andrea                  Página - 22 -
JOptionPane.showMessageDialog(null,"ERROR!!!!");
               }

               for(int i=0 ; i<numberJug ; i++)
                     if(pa.equals(temp.getArregloJugador(i).getPass())) {
                           p=i;
                     }
               return p;
       }
}



Creación de la Clase Carta

Al principio del programa de debe definir la clase Carta, a continuación se debe declarar todas las
variables que necesitemos utilizar.
En esta clase se generan todas las 52 cartas del que se dispone en un juego de naipes, se les
asignan los valores para que puedan sumarse posteriormente.

package ocio;

import java.util.Random;

public class Carta {

               private String valor;
               private String palo;

               public Carta() {

                       Random rnd = new Random();
                       int x = 1;
                       x += (int)(rnd.nextDouble() * 13.0);
                       switch (x) {

                               case 1:
                                     valor = "A";
                                     break;
                               case 11:
                                     valor = "J";
                                     x = 10;
                                     break;
                               case 12:
                                     valor = "Q";
                                     x = 10;
                                     break;
                               case 13:
                                     valor = "K";
                                     x = 10;
                                     break;
                               default:
                                     valor =Integer.toString(x);
                       }

                       int y = 1;

Documento elaborado por: Pérez Cristian y Pinto Andrea                                Página - 23 -
y += (int)(rnd.nextDouble() * 4.0);
                        switch (y) {

                                case 1:
                                      palo="Corazones Rojos";
                                      break;
                                case 2:
                                      palo="Diamantes";
                                      break;
                                case 3:
                                      palo="Trébol";
                                      break;
                                case 4:
                                      palo="Espadas";
                                      break;
                                default:
                                      palo = Integer.toString(y);
                        }
                }

                public int getValor() {

                  if(valor.equals("A"))
                        return 1;
                  else
                        if(valor.equals("J") || valor.equals("Q") ||
valor.equals("K"))
                              return 10;
                  return Integer.parseInt(valor);
            }

                public String getPalo() {

                        return palo;
                }
}


Creación de la Clase Jugador

Al principio del programa de debe definir la clase Jugador, a continuación se debe declarar todas
las variables que necesitemos utilizar.
Luego se pude apreciar que se declaran variables ingresadas por teclado y se les asigna una letra
para facilitar su uso posteriormente.

Se utilizo arreglos para repartir las cartas a cada jugador
Un arreglo es una colección de objetos numerados del mismo tipo, en donde cada variable o celda
en el arreglo tiene un índice. Las celdas están numeradas del 0 al N-1, donde N es el número de
celdas del arreglo es decir su capacidad.

Los índices de un arreglo en Java deben estar dentro de los límites, 0 – N-1, de lo contrario se
generará un error durante la ejecución.

Java implementa los arreglos como objetos que pueden ser tratados como cualquier otro objeto.

Documento elaborado por: Pérez Cristian y Pinto Andrea                                  Página - 24 -
También implementa los arrays auténticos, en vez de listas enlazadas de punteros, con
comprobación de límites, para evitar la posibilidad de sobreescribir o corromper memoria
resultado de punteros que señalan a zonas equivocadas. Estas características reducen
drásticamente el tiempo de desarrollo de aplicaciones en Java.

Además se utilizaron lazos if para generar condiciones como la de que las cartas deben sumar 21.


package ocio;

import javax.swing.JOptionPane;

public class Jugador {

       private    String nombre;
       private    String password;
       private    int apuesta;
       private    Carta[] arregloCartas;
       private    int numCarta;
       private    boolean as;

       public Jugador(int nj, int i) {

               this.arregloCartas = new Carta[10];
               as=false;

               String a = JOptionPane.showInputDialog(null,"**Digita tu
nombre: ");
               nombre = a ;


            String b = JOptionPane.showInputDialog(null,"**Digita tu
password: ");
          password = b;

               for(;;){

                       String c = JOptionPane.showInputDialog(null,"Tu apuesta
es...?");

                       int d;
                       try {

                        d=Integer.parseInt(c);
                        if(d < 1)
                               JOptionPane.showMessageDialog(null,"Te
recordamos que tus apuestas deben exceder" +
                                    " a un dólar");
                        else {

                                       apuesta = d;
                                       break;
                             }
                       }catch(Exception e){



Documento elaborado por: Pérez Cristian y Pinto Andrea                               Página - 25 -
JOptionPane.showMessageDialog(null,"Te recordamos
que tus apuestas deben exceder" +
                        " a un dólar");
                  }
            }


              numCarta=1;
       }

       public void setArregloCartas(){

              for(int i=0;i<2;i++){

                     this.arregloCartas[i] = new Carta();
                     if (this.arregloCartas[i].getValor()==1)
                           as=true;

              }
       }

       public void setCarta() {

              numCarta+=1;
              arregloCartas[numCarta] = new Carta();
       }

       public int getApuesta() {

              return(apuesta);
       }

       public String getPass() {

              return password;
       }

       public String getNombre() {

              return nombre;
       }

       public boolean preguntar() {


            String no = JOptionPane.showInputDialog(null,this.nombre + "
¿Desea otra carta?: n S o N");

              if(no .toUpperCase().equals("S")) {

                    return true;
              }
              else {

                     if(no.toUpperCase().equals("N")) {

                            return false;

Documento elaborado por: Pérez Cristian y Pinto Andrea          Página - 26 -
}
                       else {

                         JOptionPane.showMessageDialog(null,"Su opción no es
válida");
                       }
                       return false;
               }
       }

       public int total() {

               int sum = 0;
               try {

                       for(int i = 0 ;i <= this.arregloCartas.length; i++) {

                               if(this.arregloCartas[i].getValor() == 1) {

                                       sum = 11 + sum;
                                       as=true;
                               }
                               else
                                       sum = this.arregloCartas[i].getValor() +
sum;
                     }
               }catch(Exception e) {

                     System.out.print("");
               }
               if(as)
                     if(sum > 21)
                           sum -= 10;
               return (sum);
       }

       public void verCartas() {

            JOptionPane.showMessageDialog(null,""+ this.nombre + ", tus
Cartas son:");
            for(int i=0 ; i <= numCarta ; i++)

      JOptionPane.showMessageDialog(null,this.arregloCartas[i].getValor()
+ " " + this.arregloCartas[i].getPalo());
      }
}

Creación de la clase Mesa

Al principio del programa de debe definir la clase Jugador, a continuación se debe declarar todas
las variables que necesitemos utilizar.
En esta clase se imprime la suma de todas las apuestas de los jugadores y la imprime en pantalla.


package ocio;


Documento elaborado por: Pérez Cristian y Pinto Andrea                                Página - 27 -
import javax.swing.JOptionPane;

       public class Mesa {

              private int apuestaTotal;
              private int saldo;
              private Jugador [] arregloJugador = {};

              public Mesa(int nj) {

                     Jugador [] arregloJugador = new Jugador[nj];
                     try{

                            for(int i=0;i<nj;i++) {

                                   JOptionPane.showMessageDialog(null,"Jugador:
" + (i+1));
                                 arregloJugador[i] = new Jugador(nj,i);
                           }
                     }catch(Exception e) {


                  }
                  this.arregloJugador = arregloJugador;
                  apuestaTotal = sumaApuestas(nj);
                  JOptionPane.showMessageDialog(null,"la apuesta
acumulada en mesa es: $ " + apuestaTotal);
                  saldo = sumaApuestas(nj);

              }

              public Jugador getArregloJugador(int n) {

                     return (arregloJugador[n]);
              }

              public int sumaApuestas(int nj) {

                     int sum = 0;
                     try {

                            for(int i = 0 ;i <= nj; i++) {

                                   sum = this.getArregloJugador(i).getApuesta()
+ sum;
                           }
                     }catch(Exception e) {

                           System.out.print("");
                     }
                     return (sum);
              }
}




Documento elaborado por: Pérez Cristian y Pinto Andrea               Página - 28 -
PROGRAMA TIC-TAC-TOE

INTRODUCCION

Este programa simula al juego de tres en raya en el cual participan dos personas y la que logra
completar una línea horizontal, vertical o diagonal con (x) o (0) gana, este juego fue realizado con
applets para tener una interfaz grafica en el cual se muestre el tablero.
Los applet o apliques son pequeñas aplicaciones escritas en Java que permiten obtener una gran
variedad de efectos en las páginas web. En nuestro caso nos ayudo a crear el entorno grafico

DESARROLLO

El paquete game contendrá al juego. Importamos los paquetes que sean necesarios, todos con
igual importancia pero destacan las clases del paquete javax.swing para nuestras finalidades
gráficas, tales como javax swing applet.

 ActionListener es una Interface del grupo de los Listeners (escuchadores). Nos ayuda a realizar
una aqcción por ejemplo al ingresar un botón. ActionEvent invoca al método actionPerformed que
realiza las acciones programadas.

Insertamos objetos por posición x e y con largo y ancho, mientras que la clase "String" y la clase
"TextField". Se verán las operaciones básicas con tiras (Strings) y algunos métodos asociados.

package game;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import   javax.swing.JApplet;
import   javax.swing.JButton;
import   javax.swing.JLabel;
import   javax.swing.JPanel;
import   javax.swing.JTextField;

public class Ejecutable extends JApplet implements ActionListener{

        private   JTextField t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
        private   JLabel ganador,jugador;
        private   JButton player,reset;
        private   JPanel panel1;
        private   String playerA,playerB;
        private   String dato;


        public void init(){
              //Creacion de los elementos
              t1=new JTextField("1");
              t1.disable();
              t2=new JTextField("2");
              t2.disable();
              t3=new JTextField("3");

Documento elaborado por: Pérez Cristian y Pinto Andrea                                 Página - 29 -
t3.disable();
              t4=new JTextField("4");
              t4.disable();
              t5=new JTextField("5");
              t5.disable();
              t6=new JTextField("6");
              t6.disable();
              t7=new JTextField("7");
              t7.disable();
              t8=new JTextField("8");
              t8.disable();
              t9=new JTextField("9");
              t9.disable();
              t10= new JTextField("Name");
              jugador=new JLabel();
              ganador=new JLabel();
              player=new JButton("Player 1");
              player.addActionListener(this);
              reset=new JButton("Reset");
              reset.addActionListener(this);
              panel1=(JPanel)this.getContentPane();
              panel1.setLayout(null);
              addComponent(panel1, jugador, 27, 2, 105, 18);
              addComponent(panel1, ganador, 10, 152, 150, 18);
              addComponent(panel1, t1, 27, 47, 20, 22);
              addComponent(panel1, t2, 54, 47, 20, 22);
              addComponent(panel1, t3, 81, 47, 20, 22);
              addComponent(panel1, t4, 27, 78, 20, 22);
              addComponent(panel1, t5, 54, 78, 20, 22);
              addComponent(panel1, t6, 81, 78, 20, 22);
              addComponent(panel1, t7, 27, 109, 20, 22);
              addComponent(panel1, t8, 54, 109, 20, 22);
              addComponent(panel1, t9, 81, 109, 20, 22);
              addComponent(panel1, t10, 148, 47,105, 22);
              addComponent(panel1, player, 148, 78, 105, 22);
              addComponent(panel1, reset, 148, 109, 105, 22);
              this.setSize(new Dimension(269,203));


       }

      //metodo para insertar objetos por posicon x e y con largo y ancho
      private void addComponent(Container container, Component c,int
x,int y, int ancho,int largo) {

              c.setBounds(x, y, ancho, largo);
              container.add(c);

       }
       //metodo para capturar los eventos
       public void actionPerformed(ActionEvent e) {
             try{
                   game(e);
             }catch(NullPointerException e1){

              } catch (Exception e2) {
                    // TODO Auto-generated catch block

Documento elaborado por: Pérez Cristian y Pinto Andrea           Página - 30 -
ganador.setText("Error");
              }


       }

       private void game(ActionEvent e) {

              String check=e.getActionCommand();
              if(check.equals("Player 1")){
                    playerA=t10.getText();
                    player.setText("Player 2");
                    t10.setText(" ");

              }
              else if(check.equals("Player 2")){
                    playerB=t10.getText();
                    player.setText("Play");
                    t10.setText("Ready GO!");
              }
              else if(check.equals("Play")){
                    t10.setText("Insert number ");
                    player.setText(playerA+" (X)");

              }
              else if(check.equals(playerA+" (X)")){
                    int opc=1;
                    jugador.setText("Espera: "+playerA);
                    dato=t10.getText();
                    compara(dato,opc);
                    premio();
                    player.setText(playerB+" (O)");
              }
              else if(check.equals(playerB+" (O)")){
                    int opc=2;
                    jugador.setText("Espera: "+playerB);
                    dato=t10.getText();
                    compara(dato,opc);
                    premio();
                    player.setText(playerA+" (X)");
              }
              else if(check.equals("Reset")){
                    t1.setText("1");
                    t2.setText("2");
                    t3.setText("3");
                    t4.setText("4");
                    t5.setText("5");
                    t6.setText("6");
                    t7.setText("7");
                    t8.setText("8");
                    t9.setText("9");
                    t10.enable();
                    t10.setText("Name");
                    player.setText("Player 1");
                    jugador.setText("");
                    ganador.setText("");
              }

Documento elaborado por: Pérez Cristian y Pinto Andrea     Página - 31 -
else{
                      ganador.setText("Error inesperado");
              }


       }

       private void premio() {


      if(t1.getText().equals("X")&&t2.getText().equals("X")&&t3.getText()
.equals("X")||

      t4.getText().equals("X")&&t5.getText().equals("X")&&t6.getText().eq
uals("X")||

      t7.getText().equals("X")&&t8.getText().equals("X")&&t9.getText().eq
uals("X")||

      t1.getText().equals("X")&&t4.getText().equals("X")&&t7.getText().eq
uals("X")||

      t2.getText().equals("X")&&t5.getText().equals("X")&&t8.getText().eq
uals("X")||

      t3.getText().equals("X")&&t6.getText().equals("X")&&t9.getText().eq
uals("X")||

      t1.getText().equals("X")&&t5.getText().equals("X")&&t9.getText().eq
uals("X")||

      t3.getText().equals("X")&&t5.getText().equals("X")&&t7.getText().eq
uals("X")){

                      ganador.setText("El ganador es: "+playerA);
                      win();
            }
            else
if(t1.getText().equals("O")&&t2.getText().equals("O")&&t3.getText().equal
s("O")||

      t4.getText().equals("O")&&t5.getText().equals("O")&&t6.getText().eq
uals("O")||

      t7.getText().equals("O")&&t8.getText().equals("O")&&t9.getText().eq
uals("O")||

      t1.getText().equals("O")&&t4.getText().equals("O")&&t7.getText().eq
uals("O")||

      t2.getText().equals("O")&&t5.getText().equals("O")&&t6.getText().eq
uals("O")||

      t3.getText().equals("O")&&t6.getText().equals("O")&&t9.getText().eq
uals("O")||



Documento elaborado por: Pérez Cristian y Pinto Andrea              Página - 32 -
t1.getText().equals("O")&&t5.getText().equals("O")&&t9.getText().eq
uals("O")||

      t3.getText().equals("O")&&t5.getText().equals("O")&&t7.getText().eq
uals("O")){

                     ganador.setText("El ganador es: "+playerB);
                     win();
                     player.disable();
              }
       }



       private void win() {

              t10.setText("Thanks for playing!");
              t10.disable();
              player.disable();

       }

       private void compara(String dato2,int o) {

              switch(o){
              case 1:
                    if(t1.getText().equals(dato2)){
                          t1.setText("X");
                    }
                    if(t2.getText().equals(dato2)){
                          t2.setText("X");
                    }
                    if(t3.getText().equals(dato2)){
                          t3.setText("X");
                    }
                    if(t4.getText().equals(dato2)){
                          t4.setText("X");
                    }
                    if(t5.getText().equals(dato2)){
                          t5.setText("X");
                    }
                    if(t6.getText().equals(dato2)){
                          t6.setText("X");
                    }
                    if(t7.getText().equals(dato2)){
                          t7.setText("X");
                    }
                    if(t8.getText().equals(dato2)){
                          t8.setText("X");
                    }
                    if(t9.getText().equals(dato2)){
                          t9.setText("X");
                    }
                    break;
              case 2:
                    if(t1.getText().equals(dato2)){

Documento elaborado por: Pérez Cristian y Pinto Andrea             Página - 33 -
t1.setText("O");
                     }
                     if(t2.getText().equals(dato2)){
                           t2.setText("O");
                     }
                     if(t3.getText().equals(dato2)){
                           t3.setText("O");
                     }
                     if(t4.getText().equals(dato2)){
                           t4.setText("O");
                     }
                     if(t5.getText().equals(dato2)){
                           t5.setText("O");
                     }
                     if(t6.getText().equals(dato2)){
                           t6.setText("O");
                     }
                     if(t7.getText().equals(dato2)){
                           t7.setText("O");
                     }
                     if(t8.getText().equals(dato2)){
                           t8.setText("O");
                     }
                     if(t9.getText().equals(dato2)){
                           t9.setText("O");
                     }
                     break;

              }


       }




}




Documento elaborado por: Pérez Cristian y Pinto Andrea   Página - 34 -
CONCLUSIONES

Lo más significativo a nuestro parecer fue que Java realiza verificaciones en busca de problemas
tanto en tiempo de compilación como en tiempo de ejecución. La comprobación de tipos en Java
ayuda a detectar errores, lo antes posible, en el ciclo de desarrollo. Java obliga a la declaración
explícita de métodos, reduciendo así las posibilidades de error. Maneja la memoria para eliminar
las preocupaciones por parte del programador de la liberación o corrupción de memoria.
Además, para asegurar el funcionamiento de la aplicación, realiza una verificación de los byte-
codes, que son el resultado de la compilación de un programa Java. Es un código de máquina
virtual que es interpretado por el intérprete Java. No es el código máquina directamente
entendible por el hardware, pero ya ha pasado todas las fases del compilador: análisis de
instrucciones, orden de operadores, etc., y ya tiene generada la pila de ejecución de órdenes.

Se puede modificar cualquier tipo de código fuente a una interfaz gráfica son la ayuda de swing; es
importante el entorno grafico en la mayoría de programas en Java.




Documento elaborado por: Pérez Cristian y Pinto Andrea                                Página - 35 -

Más contenido relacionado

La actualidad más candente

Ejercicios Whule y Do While
Ejercicios Whule y Do WhileEjercicios Whule y Do While
Ejercicios Whule y Do While
Joshe Varillas
 
EJEMPLOS DE CLASES Y HERENCIAS
EJEMPLOS DE CLASES Y HERENCIASEJEMPLOS DE CLASES Y HERENCIAS
EJEMPLOS DE CLASES Y HERENCIAS
Marcelo Herrera
 
Sesión 7 matlab - Operadores lógicos y relacionales
Sesión 7 matlab - Operadores lógicos y relacionalesSesión 7 matlab - Operadores lógicos y relacionales
Sesión 7 matlab - Operadores lógicos y relacionales
matlab_usc
 
Capítulo 6 funciones y procedimiento
Capítulo 6 funciones y procedimientoCapítulo 6 funciones y procedimiento
Capítulo 6 funciones y procedimiento
EnAutomático
 

La actualidad más candente (20)

Guia estructuras condicionales
Guia estructuras condicionalesGuia estructuras condicionales
Guia estructuras condicionales
 
6 Curso de POO en Java - clases y objetos
6  Curso de POO en Java - clases y objetos6  Curso de POO en Java - clases y objetos
6 Curso de POO en Java - clases y objetos
 
Ejercicios Whule y Do While
Ejercicios Whule y Do WhileEjercicios Whule y Do While
Ejercicios Whule y Do While
 
ALGORITMO RESUELTOS EN PSEINT
ALGORITMO RESUELTOS EN PSEINTALGORITMO RESUELTOS EN PSEINT
ALGORITMO RESUELTOS EN PSEINT
 
EJEMPLOS DE CLASES Y HERENCIAS
EJEMPLOS DE CLASES Y HERENCIASEJEMPLOS DE CLASES Y HERENCIAS
EJEMPLOS DE CLASES Y HERENCIAS
 
Sesión 7 matlab - Operadores lógicos y relacionales
Sesión 7 matlab - Operadores lógicos y relacionalesSesión 7 matlab - Operadores lógicos y relacionales
Sesión 7 matlab - Operadores lógicos y relacionales
 
Arreglos c++
Arreglos c++Arreglos c++
Arreglos c++
 
Arreglos Unidimensionales - Java - NetBeans
Arreglos Unidimensionales - Java - NetBeansArreglos Unidimensionales - Java - NetBeans
Arreglos Unidimensionales - Java - NetBeans
 
Programacion Orientada a Objetos - Undiad 4 polimorfismo
Programacion Orientada a Objetos - Undiad 4 polimorfismoProgramacion Orientada a Objetos - Undiad 4 polimorfismo
Programacion Orientada a Objetos - Undiad 4 polimorfismo
 
Programación Orientada a Objetos -Unidad 6 archivos
Programación Orientada a Objetos -Unidad 6 archivosProgramación Orientada a Objetos -Unidad 6 archivos
Programación Orientada a Objetos -Unidad 6 archivos
 
Pilas En C++
Pilas En C++Pilas En C++
Pilas En C++
 
Metodo burbuja
Metodo burbujaMetodo burbuja
Metodo burbuja
 
Algoritmo
Algoritmo Algoritmo
Algoritmo
 
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
 
Expresiones booleanas
Expresiones booleanasExpresiones booleanas
Expresiones booleanas
 
Capítulo 6 funciones y procedimiento
Capítulo 6 funciones y procedimientoCapítulo 6 funciones y procedimiento
Capítulo 6 funciones y procedimiento
 
Que es el wronskiano
Que es el wronskianoQue es el wronskiano
Que es el wronskiano
 
ESTRUCTURAS ANIDADAS
ESTRUCTURAS ANIDADASESTRUCTURAS ANIDADAS
ESTRUCTURAS ANIDADAS
 
Recursividad
RecursividadRecursividad
Recursividad
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..
 

Similar a Informe Final Del Proyecto Poo

C6 net beansentradasysalidas
C6 net beansentradasysalidasC6 net beansentradasysalidas
C6 net beansentradasysalidas
alenco
 
Programacion de la profe lina
Programacion de la profe linaProgramacion de la profe lina
Programacion de la profe lina
Julian David
 
Programacion de la profe lina
Programacion de la profe linaProgramacion de la profe lina
Programacion de la profe lina
Julian David
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
Videoconferencias UTPL
 

Similar a Informe Final Del Proyecto Poo (20)

Programación Java
Programación JavaProgramación Java
Programación Java
 
Introduccion a JAVA
Introduccion a JAVAIntroduccion a JAVA
Introduccion a JAVA
 
C6 net beansentradasysalidas
C6 net beansentradasysalidasC6 net beansentradasysalidas
C6 net beansentradasysalidas
 
Programacion ii
Programacion iiProgramacion ii
Programacion ii
 
Ejercicios3
Ejercicios3Ejercicios3
Ejercicios3
 
Lenguaje de programacion java, conceptos
Lenguaje de programacion java, conceptosLenguaje de programacion java, conceptos
Lenguaje de programacion java, conceptos
 
Unidad temática v
Unidad temática vUnidad temática v
Unidad temática v
 
Desarrollo De Programas Ejemplos 01
Desarrollo De Programas Ejemplos 01Desarrollo De Programas Ejemplos 01
Desarrollo De Programas Ejemplos 01
 
Desarrollo de programas_ejemplos_01
Desarrollo de programas_ejemplos_01Desarrollo de programas_ejemplos_01
Desarrollo de programas_ejemplos_01
 
Java
JavaJava
Java
 
Programacion de la profe lina
Programacion de la profe linaProgramacion de la profe lina
Programacion de la profe lina
 
Programacion de la profe lina
Programacion de la profe linaProgramacion de la profe lina
Programacion de la profe lina
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
 
colasEjeRe_1_2022.pdf
colasEjeRe_1_2022.pdfcolasEjeRe_1_2022.pdf
colasEjeRe_1_2022.pdf
 
Semana03 prog ii
Semana03 prog iiSemana03 prog ii
Semana03 prog ii
 
Creacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeansCreacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeans
 
SCJP, Clase 6: Collections
SCJP, Clase 6: CollectionsSCJP, Clase 6: Collections
SCJP, Clase 6: Collections
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
Java básico
Java  básicoJava  básico
Java básico
 
6 Upv Solo Pruebas 2009
6 Upv Solo Pruebas 20096 Upv Solo Pruebas 2009
6 Upv Solo Pruebas 2009
 

Último

2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
RigoTito
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
UPTAIDELTACHIRA
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
NadiaMartnez11
 

Último (20)

2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdf
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 

Informe Final Del Proyecto Poo

  • 1. ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA ELECTRICA Y ELECTRÓNICA PROGRAMACION ORIENTADA A OBJETOS TEMA: PROYECTO POOGAME CRISTIAN PAÚL PÉREZ VALLE ANDREA PATRICIA PINTO 2010-01-09 . Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 1 -
  • 2. PROYECTO POOGAME INDICE OBJETIVOS……………………………………. 3 INTRODUCCION…………………………….. 3 PROGRAMA BUS Introducción…………………………………. 4 Desarrollo…………………………………….. 4 PROGRAMA BLACKJACK Introducción……………………………….. 16 Desarrollo……………………………………16 PROGRAMA TIC-TAC-TOE Introducción………………………………. 29 Desarrollo…………………….……………. 29 CONCLUSIONES………………………… 35 Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 2 -
  • 3. PROYECTO POOGAME OBJETIVO: Afianzar los conocimientos adquiridos este semestre, desarrollado aplicaciones prácticas en el campo de la Programación Orientada a Objetos. Compartir con la comunidad el desarrollo de nuestras aplicaciones. Aprender sobre la implementación de las interfaces graficas. INTRODUCCION Para la elaboración de este proyecto de utilizo el IDE Eclipse, ya que nos brinda todas las facilidades de Java que ofrece toda la funcionalidad de un lenguaje potente, pero sin las características menos usadas y más confusas de éstos. C++ es un lenguaje que adolece de falta de seguridad, pero C y C++ son lenguajes más difundidos, por ello Java se diseñó para ser parecido a C++ y así facilitar un rápido y fácil aprendizaje. Java elimina muchas de las características de otros lenguajes como C++, para mantener reducidas las especificaciones del lenguaje y añadir características muy útiles. Java reduce en un 50% los errores más comunes de programación con lenguajes como C y C++ al eliminar muchas de las características de éstos, entre las que destacan: aritmética de punteros no existen referencias registros (struct) definición de tipos (typedef) macros (#define) necesidad de liberar memoria (free) Además, el intérprete completo de Java que hay en este momento es muy pequeño, solamente ocupa 215 Kb de RAM. JAVA ORIENTADO A OBJETOS Java implementa la tecnología básica de C++ con algunas mejoras y elimina algunas cosas para mantener el objetivo de la simplicidad del lenguaje. Java trabaja con sus datos como objetos y con interfaces a esos objetos. Soporta las tres características propias del paradigma de la orientación a objetos: encapsulación, herencia y polimorfismo. Las plantillas de objetos son llamadas, como en C++, clases y sus copias, instancias. Estas instancias, como en C++, necesitan ser construidas y destruidas en espacios de memoria. Java incorpora funcionalidades inexistentes en C++ como por ejemplo, la resolución dinámica de métodos. Esta característica deriva del lenguaje Objective C, propietario del sistema operativo Next. En C++ se suele trabajar con librerías dinámicas (DLLs) que obligan a recompilar la aplicación cuando se retocan las funciones que se encuentran en su interior. Este inconveniente es resuelto por Java mediante una interfaz específica llamada RTTI (RunTime Type Identification) que define la interacción entre objetos excluyendo variables de instancias o implementación de métodos. Las clases en Java tienen una representación en el runtime que permite a los programadores interrogar por el tipo de clase y enlazar dinámicamente la clase con el resultado de la búsqueda Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 3 -
  • 4. PROGRAMA BUS INTRODUCCCION Este programa simula a un terminal terrestre, en donde solo tenemos un bus y podemos ingresar pasajeros, bajar pasajeros, buscar pasajeros, llevar una lista de pasajeros entre otras cosas. Esta diseñado en una interfaz grafica, por lo cual se facilita su utilización. DESARROLLO Creación de las Clases Todas las clases fueron creadas dentro de un paquete denominado terrestre. El elemento básico de la programación orientada a objetos en Java es la clase. Una clase define la forma y comportamiento de un objeto. Para crear una clase sólo se necesita un archivo fuente que contenga la palabra clave reservada class seguida de un identificador legal y un bloque delimitado por dos llaves para el cuerpo de la clase. Creación de la clase Aplica En las primeras líneas se importan clases de los paquetes A continuación se define a la clase Aplica, para luego definir todas las variables que se van a utilizar. En este caso se utilizo un menú para generar todas las opciones requeridas por el usuario, para esto se utilizo la sentencia switch ya que existen ocasiones o programas donde se exige evaluar muchas condiciones a la vez, en estos casos, o se usan una condición compuesta muy grande o se debe intentar convertir el problema a uno que se pueda resolver usando la instrucción switch(); JOptionPane.showMessageDialog simplemente nos imprime un mensaje en una ventana JOptionPane.showInputDialog nos muestra un mensaje a elegir en una ventana, se debe declarar una variable antes para que se le asigne todo el valor de la cadena o de el entero que se va a introducir por teclado. La instrucción switch() es una instrucción de decisión múltiple, donde el compilador prueba o busca el valor contenido en una variable contra una lista de constantes ints o chars, cuando el computador encuentra el valor de igualdad entre variable y constante, entonces ejecuta el grupo de instrucciones asociados a dicha constante, si no encuentra el valor de igualdad entre variable y constante, entonces ejecuta un grupo de instrucciones asociados a un default, aunque este último es opcional. Se utilizo el switch para generar el menú de las opciones principales del bus. El Integer.parseInt Convierte una cadena de texto en un número entero. La clase StringTokenizer nos ayuda a dividir un string en substrings o tokens, en base a otro string (normalmente un carácter) separador entre ellos denominado delimitador. Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 4 -
  • 5. Supongamos un string consistente en el nombre, y los dos apellidos de una persona separados por espacios en blanco. La clase StringTokenizer nos ayuda a romper dicho string en tres substrings basado en que el carácter delimitador es un espacio en blanco. La sentencia try define el ámbito de sus manejadores de excepción asociados. Se pueden asociar manejadores de excepción a una sentencia try proporcionando uno o más bloques catch directamente después del bloque try. En otras palabras la sentencia try nos proporciono las validaciones necesarias en el ingreso de datos. try { ... } catch ( . . . ) { No puede haber ningún código entre el final de la sentencia try y el principio de la primera sentencia catch. La forma general de una sentencia catch en Java es esta. Se puede apreciar que el break, el catch, y el system.exit son comandos para salir del entorno java. Y por último la sentencia if solo nos proporciona condicionamientos, la sentencia solo se ejecutara siempre y cuando sea verdadera, un ejemplo en el proyecto bus es al validar la edad de los pasajeros. package terrestre; /** * Interacción entre las clases Bus y Pasajero * */ import java.util.StringTokenizer; import javax.swing.JOptionPane; public class Aplica { public static void main(String[] args) { try { int nj = 0; JOptionPane.showMessageDialog (null,"BUS"); int z = 20; Bus a=new Bus("ESCOLAR",z); for(;;) { String ops = JOptionPane.showInputDialog ( null,"MENU: nn1. Subir Pasajeron" + "2. Bajar Pasajeron" + "3. Total de Pasajerosn" + "4. Listado de los Pasajerosn" + "5. Promedio de edad de los Pasajerosn" + "6. Buscar Pasajeron" + "7. Salirn"); Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 5 -
  • 6. int an = Integer.parseInt(ops); switch(an) { case 1: try { JOptionPane.showMessageDialog ( null,"Ingrese Pasajero"); String st = JOptionPane.showInputDialog ( null,"El Pasajero debe ser ingresado de la siguiente forma:n" "nombre_edad","Ejemplo: Andres_21"); StringTokenizer str = new StringTokenizer(st, "_"); if ((str.countTokens() > 2) || (str.countTokens() < 2)) { JOptionPane.showMessageDialog ( null,"FAVOR LLENE TODOS LOS CAMPOS!!!"); } String nombre = str.nextToken(); int edad = Integer.parseInt(str.nextToken()); if (edad > 100 || edad < 0) { JOptionPane.showMessageDialog (null,"edad mal ingresada"); } else{ Pasajero b = new Pasajero(); b.setNombre(nombre); b.setEdad(edad); a.subirPasajero(b); } } catch (Exception e) { JOptionPane.showMessageDialog (null,"MAL INGRESADO!!!"); } break; case 2: String nnj = JOptionPane.showInputDialog (null,"Ingrese el numero de puesto del pasajero: "); try { nj= Integer.parseInt(nnj); }catch(Exception e){ JOptionPane.showMessageDialog (null,"INGRESE NUMERO NO LETRAS!!!"); Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 6 -
  • 7. } if(nj<0) { JOptionPane.showMessageDialog (null,"OJO, Valores Negativos NO Aceptados"); } a.bajarPasajero(nj); break; case 3: JOptionPane.showMessageDialog (null,"El numero de pasajeros del bus es: " + a.totalPasajeros()); break; case 4: JOptionPane.showMessageDialog (null,"Listado de pasajeros: "); int i = 1; for (String dato: a.listaPasajeros()) { if (dato == "") { } else{ JOptionPane.showMessageDialog (null,"Pasajero "+ (i )+ " : " + dato); i++; } } break ; case 5: JOptionPane.showMessageDialog (null,"EL PROMEDIO DE EDAD DE ESTE BUS ES " + a.promedioEdades() + "AÑOS"); break; case 6: String cad = null; cad = JOptionPane.showInputDialog (null,"Ingrese el nombre del pasajero a buscar"); try { }catch (Exception e) {} for (String dato: a.listaPasajeros()) { if (dato.equals(cad)) { Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 7 -
  • 8. JOptionPane.showMessageDialog (null,"LO ENCONTRAMOS!!! El pasajero está en este bus"); } } JOptionPane.showMessageDialog (null,"Búsqueda Finalizada"); break; case 7: { JOptionPane.showMessageDialog (null,"ESPERO QUE ESTE PROGRAMA HAYA SIDO DE SU AGRADO"); System.exit(0); }break; default: JOptionPane.showMessageDialog(null,"Seleccion erroneannnElija nuevamente una opcion del 1 al 7"); } } }catch (Exception e){} } } Creación de la Clase Pasajero Al principio del programa de debe definir la clase Pasajero, a continuación se debe declarar todas las variables que necesitemos utilizar (lo citado con color azul son los comentarios de cada paso en el programa) El IDE llama a los métodos o funciones miembro que empiezan por get, para mostrar en los editores los valores de las propiedades. Si el programador cambia el valor de una propiedad se llama a un método cuyo nombre empieza por set.  getter method: lee el valor de la propiedad  setter method: cambia el valor de la propiedad. public class Pasajero { /* campo para el nombre del <code> Pasajero </code> */ private String nombre; /* campo para la edad del <code> Pasajero </code> */ Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 8 -
  • 9. private int edad; public Pasajero() { } /** * Inicializa los campos del objeto <code> Pasajero </code> con valores dados * * @param nombre contiene el valor para el campo <code> nombre </code> * @param edad contiene el valor para el campo <code> edad </code> */ public Pasajero(String nombre, int edad) { this.nombre = nombre; this.edad = edad; } /** * * Devuelve el valor del campo <code> edad </code> * * @return valor del campo <code> edad </code> */ public int getEdad() { return edad; } /** * Asigna el valor del campo <code> edad </code> de un * <code> Pasajero </code> * * @param edad contiene el valor de un campo * <code> edad </code> */ public void setEdad(int edad) { this.edad = edad; } /** * Devuelve el valor del campo <code> nombre </code> * * @return valor del campo <code> nombre </code> */ public String getNombre() { return nombre; } /** * Asigna el valor del campo <code> nombre </code> de un * <code> Pasajero </code> Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 9 -
  • 10. * * @param nombre contiene el valor de un campo * <code> nombre </code> */ public void setNombre(String nombre) { this.nombre = nombre; } } Creación de la Clase Bus Al principio del programa de debe publicar la clase Bus, a continuación se debe declarar todas las variables que necesitemos utilizar. Se poner todos los paquetes necesarios en este caso se utilizo el paquete javax.swing.*. Un paquete es una agrupación de clases que tiene una finalidad relacionada. De la misma manera lo comentado en color azul y verde nos indica que realizamos paso a paso. package terrestre; import javax.swing.*; /** * Manipula objetos de tipo <code> Bus </code> * */ public class Bus { /* campo para el nombre del <code> Bus </code> */ private String nombre; /* campo para el numero máximo de pasajeros del <code> Bus </code> */ private int max; /* campo para el numero de pasajeros del <code> Bus </code> */ private int numeroPasajeros; /* campo para el arreglo de pasajeros del <code> Bus </code> */ private Pasajero pasajeros[]; /** * inicializa los campos del objeto <code> Bus </code> */ public Bus() { } /** * inicializa los campos del objeto <code> Bus </code> con valores dados * * @param nombre contiene el valor para el campo <code> nombre </code> * @param max contiene el valor para el campo <code> max </code> * @param numeroPasajeros contiene valor de campo <code> numeroPasajeros </code> Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 10 -
  • 11. * @param pasajeros contiene el valor para campo <code> pasajeros </code> */ public Bus(String nombre, int max, int numeroPasajeros, Pasajero[] pasajeros) { this.nombre = nombre; this.max = max; this.numeroPasajeros = numeroPasajeros; this.pasajeros = pasajeros; } /** * inicializa los campos del objeto <code> Bus </code> con valores dados * * @param nombre contiene el valor para el campo <code> nombre </code> * @param max contiene el valor para el campo <code> max </code> */ public Bus(String nombre, int max) { this.nombre = nombre; this.max = max; this.numeroPasajeros = 0; this.pasajeros = new Pasajero[max]; } /** * Devuelve el valor del campo <code> max </code> * * @return valor del campo <code> max </code> */ public int getMax() { return max; } /** * Asigna el valor del campo <code> max </code> de un * <code> Bus </code> * * @param max contiene el valor de un campo * <code> max </code> */ public void setMax(int max) { this.max = max; } /** * Devuelve el valor del campo <code> nombre </code> * * @return valor del campo <code> nombre </code> */ public String getNombre() { Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 11 -
  • 12. return nombre; } /** * Asigna el valor del campo <code> nombre </code> de un * <code> Bus </code> * * @param nombre contiene el valor de un campo * <code> nombre </code> */ public void setNombre(String nombre) { this.nombre = nombre; } /** * Devuelve el valor del campo <code> numeroPasajeros </code> * * @return valor del campo <code> numeroPasajeros </code> */ public int getNumeroPasajeros() { return numeroPasajeros; } /** * Asigna el valor del campo <code> numeroPasajeros </code> de un * <code> Bus </code> * * @param numeroPasajeros contiene el valor de un campo * <code> numeroPasajeros </code> */ public void setNumeroPasajeros(int numeroPasajeros) { this.numeroPasajeros = numeroPasajeros; } /** * Devuelve el valor del campo <code> pasajeros </code> * * @return valor del campo <code> pasajeros </code> */ public Pasajero[] getPasajeros() { return pasajeros; } /** * Asigna el valor del campo <code> pasajeros </code> de un * <code> Bus </code> * * @param pasajeros contiene el valor de un campo * <code> pasajeros </code> */ public void setPasajeros(Pasajero[] pasajeros) { Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 12 -
  • 13. this.pasajeros = pasajeros; } /** * Llena con valores null al vector <code> pasajeros </code> */ public void nullCadena() { for (int i = 0; i < max; i++) { pasajeros[i] = null; } } /** * Agrega un pasajero al vector <code> pasajeros </code> * de la case <code> Bus </code> * * @param valuePasajero contiene el nombre y la edad del pasajero que * se sube al <code> Bus </code> */ public void subirPasajero (Pasajero valuePasajero){ if (numeroPasajeros < max) { for (int z = 0; z < max; z++) { if (pasajeros[z] == null) { pasajeros[z] = valuePasajero; numeroPasajeros++; z = max; } } } else{ JOptionPane.showMessageDialog(null,"BUS lleno"); } } /** * Resta un pasajero al vector <code> pasajeros </code> * de la case <code> Bus </code> * * @param lugarPasajero contiene el número de puesto del pasajero * que se baja del <code> Bus </code> */ public void bajarPasajero (int lugarPasajero){ if (numeroPasajeros == 0) { JOptionPane.showMessageDialog(null,"BUS vacío"); } else{ if (lugarPasajero > max) { Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 13 -
  • 14. JOptionPane.showMessageDialog(null,"Ese puesto excede los existentes"); } else{ if (lugarPasajero <= 0) { JOptionPane.showMessageDialog(null,"El puesto 0 no existe"); } else { if(pasajeros[lugarPasajero - 1] == null) { JOptionPane.showMessageDialog(null,"En ese puesto ya no hay nadie"); }else { pasajeros[lugarPasajero -1] = null; numeroPasajeros --; } } } } } /** * Devuelve el total de pasajeros que se encuentran * en el <code> Bus </code> * * @return número de Pasajeros en el <code> Bus </code> */ public int totalPasajeros() { return (numeroPasajeros); } /** * Devuelve la lista de pasajeros que se encuentran * en el <code> Bus </code> * * @return nombres de los Pasajeros en el <code> Bus </code> */ public String[] listaPasajeros(){ String nombre[] = new String[max]; for (int i = 0; i < max; i++){ if (pasajeros[i] == null) { nombre[i] = ""; } else { nombre[i] = pasajeros[i].getNombre(); } Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 14 -
  • 15. } return nombre; } /** * Devuelve el promedio de edades de los pasajeros que se encuentran * en el <code> Bus </code> * * @return promedio de edades de los pasajeros en el <code> Bus </code> */ public float promedioEdades(){ float sumaPromedio = 0; for (int i = 0; i < numeroPasajeros; i++){ sumaPromedio += pasajeros[i].getEdad(); } return sumaPromedio / numeroPasajeros; } } Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 15 -
  • 16. PROGRAMA BLACKJACK INTRODUCCION Este programa simula el juego de 21, es decir genera las 52 cartas de un naipe al azar para cuantos jugadores se disponga, realiza todo lo que usualmente se hace en el juego, genera sus apuestas, nos muestra cuanto dinero hay en la mesa entre otras cosas, de igual esta diseñado en una interfaz grafica, por lo cual se facilita su utilización. DESARROLLO Creación de las Clases Todas las clases fueron creadas dentro de un paquete denominado ocio. El elemento básico de la programación orientada a objetos en Java es la clase. Una clase define la forma y comportamiento de un objeto. Para crear una clase sólo se necesita un archivo fuente que contenga la palabra clave reservada class seguida de un identificador legal y un bloque delimitado por dos llaves para el cuerpo de la clase. Creación de la clase Aplica Al principio del programa de debe definir la clase Aplica, a continuación se debe declarar todas las variables que necesitemos utilizar. En este caso se utilizo un menú para generar todas las opciones requeridas por el juego, para esto se utilizo la sentencia switch(); JOptionPane.showMessageDialog simplemente nos imprime un mensaje en una ventana JOptionPane.showInputDialog nos muestra un mensaje a elegir en una ventana, se debe declarar una variable antes para que se le asigne todo el valor de la cadena o de el entero que se va a introducir por teclado. Se utilizo el switch para generar el menú de las opciones principales del juego y también para sailr de él. El Integer.parseInt Convierte una cadena de texto en un número entero. La sentencia try define el ámbito de sus manejadores de excepción asociados. Se pueden asociar manejadores de excepción a una sentencia try proporcionando uno o más bloques catch directamente después del bloque try. En otras palabras la sentencia try nos proporciono las validaciones necesarias en el ingreso de datos, como por ejemplo que en el menú no se ingresen letras. No puede haber ningún código entre el final de la sentencia try y el principio de la primera sentencia catch. La forma general de una sentencia catch en Java es esta. Se puede apreciar que el break, el catch, y el system.exit son comandos para salir del entorno java. Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 16 -
  • 17. Y por último la sentencia if solo nos proporciona condicionamientos, la sentencia solo se ejecutara siempre y cuando sea verdadera, un ejemplo es momento de ingresar en el número de jugadores, éste debe ser mayor o igual a dos, en caso contrario se retorna al menú principal. package ocio; import javax.swing.JOptionPane; public class Aplica { public static void main(String[] args) { JOptionPane.showMessageDialog(null,"JUGUEMOS BLACKJACK"); Mesa temp = new Mesa(0); int indiceMenu = 0; int a; int numberJug = 0; boolean ope1 = false, ope2 = false; String pa = ""; do for(;;){ String men = JOptionPane.showInputDialog(null,"tt MENU: ntt1. Quiénes vamos a jugar?" + "... ntt2. Repartir cartasn" + "tt3. Desea más cartas...n" + "tt4. Ver mis cartasn" + "tt5. Conocer el estado de la mesan" + "tt6. Ayudan" + "tt7. Salirn"); try { indiceMenu = Integer.parseInt(men); }catch(NumberFormatException e){ JOptionPane.showMessageDialog(null,"Las letras no se admiten como opciones" + " del menú"); indiceMenu=8; } switch(indiceMenu) { case 1: boolean number = true; do{ String me = JOptionPane.showInputDialog(null,"Cuántas personas " + "participarán??? "); try { Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 17 -
  • 18. numberJug = Integer.parseInt (me); number = false; }catch(Exception e) { JOptionPane.showMessageDialog(null,"ERROR!!!! nDigitaste " + "mal? Recuerda que es un número el " + "que debes ingresarn"); } if(numberJug > 0 && numberJug < 2) { number = true; JOptionPane.showMessageDialog(null,"nDebe haber más de un " + "jugadorn Repite el proceso por favor"); } if(numberJug < 0) { number = true; JOptionPane.showMessageDialog(null,"nNo puedes digitar " + "números negativos"); } }while(number); temp = new Mesa(numberJug); ope1 = true; break; case 2: if(!ope1) { JOptionPane.showMessageDialog(null,"Primero menciona quién va a " + "jugar"); break; } else { for(int i=0; i < numberJug; i++) { temp.getArregloJugador(i).setArregloCartas(); } JOptionPane.showMessageDialog(null,"Las cartas han sido Repartidas!" + "nnnnnnnn"); ope2=true; } break; case 3: if(ope1) { Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 18 -
  • 19. if(!ope2){ JOptionPane.showMessageDialog(null,"Primero se deben repartir las" + " cartas"); break; } else { a = capturarPassword (numberJug, temp, pa); if(a >= 0 && temp.getArregloJugador(a).total() <= 21) { JOptionPane.showMessageDialog(null,"Bienvenido " + temp.getArregloJugador(a).getNombre()); JOptionPane.showMessageDialog(null,"Su total actual es de: " + temp.getArregloJugador(a).total()); while(temp.getArregloJugador(a).preguntar()) { temp.getArregloJugador(a).setCarta(); if( temp.getArregloJugador(a).total()<=21) JOptionPane.showMessageDialog(null,"Su total es de: " + temp.getArregloJugador(a).total()); else { JOptionPane.showMessageDialog(null,"Ya excedio el " + "limite de 21 con " + temp.getArregloJugador(a).total()); break; } } } else JOptionPane.showMessageDialog(null,"Password mal Ingresado!"); } break; } else{ JOptionPane.showMessageDialog(null,"Primero menciona quién va a " + Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 19 -
  • 20. "jugar"); } break; case 4: if(ope1) { if(!ope2) { JOptionPane.showMessageDialog(null,"Primero se deben repartir" + " las cartasnn "); } else{ a = capturarPassword (numberJug, temp, pa); if(a >= 0) temp.getArregloJugador(a).verCartas(); else JOptionPane.showMessageDialog(null,"Contraseña incorrecta!"); } break; } else { JOptionPane.showMessageDialog(null,"Primero menciona quién va a " + "jugar"); } break; case 5: if(ope1){ if(!ope2){ JOptionPane.showMessageDialog(null,"Primero debe repartir cartas"); break; } else { a=-1; String m = JOptionPane.showInputDialog(null,"Ingrese el password: "); try { pa = m; }catch(Exception e) { JOptionPane.showMessageDialog(null,"Error en la captura!"); Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 20 -
  • 21. } if(pa.equals(temp.getArregloJugador(numberJug-1).getPass())) { for(int i = 0; i < numberJug; i++) { temp.getArregloJugador(i).verCartas(); } JOptionPane.showMessageDialog(null,"El ganador fue: " + comparaJugadores(temp, numberJug) + " y gano n" + temp.sumaApuestas(numberJug)); indiceMenu=6; } else { JOptionPane.showMessageDialog(null,"Usted no puede abrir la " + "Mesa, El Banco es el unico " + "autorizado!"); } break; } } else { JOptionPane.showMessageDialog(null,"Primero menciona quién va a " + "jugar"); } break; case 6: JOptionPane.showMessageDialog(null,"tttt NO ES DIFÍCIL JUGAR BLACK " + "JACK... Te ofrecemos una ayudann" + "1. Te recomendamos seguir los el orden del menún" + "2. Debes tratar de alcanzar la suma de tus " + "cartas cercano a 21 pero si lo superas " + "pierdes el juego automáticamenten" + Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 21 -
  • 22. "3. El As puede tomar el valor de uno u oncen" + "4. No te preocupes por los resultados podrás" + "mirarlo en la opción del menú correspondiente" + "conocer estado de la mesan" + "5. GRACIAS POR JUGAR ES UN " + "GUSTO SERVIRTEn"); break; case 7: { JOptionPane.showMessageDialog (null,"ESPERO QUE ESTE PROGRAMA HAYA SIDO DE SU AGRADO"); System.exit(0); }break; default: JOptionPane.showMessageDialog(null,"Opción Incorrecta, escoja de nuevo"); } }while(indiceMenu!=7); } public static String comparaJugadores(Mesa a, int numberJug) { int altoPuntaje = a.getArregloJugador(0).total(); if (altoPuntaje >= 2) altoPuntaje=0; int winner=0; for(int i=1;i<numberJug;i++) { if(a.getArregloJugador(i).total()>altoPuntaje && a.getArregloJugador(i).total()<=21) { altoPuntaje=a.getArregloJugador(i).total(); winner=i; } } return "" + a.getArregloJugador(winner).getNombre() + " con: " + a.getArregloJugador(winner).total(); } public static int capturarPassword(int numberJug, Mesa temp, String pa) { int p=-1; String m =JOptionPane.showInputDialog(null,"***Digita tu password: "); try { pa=m; }catch(Exception e) { Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 22 -
  • 23. JOptionPane.showMessageDialog(null,"ERROR!!!!"); } for(int i=0 ; i<numberJug ; i++) if(pa.equals(temp.getArregloJugador(i).getPass())) { p=i; } return p; } } Creación de la Clase Carta Al principio del programa de debe definir la clase Carta, a continuación se debe declarar todas las variables que necesitemos utilizar. En esta clase se generan todas las 52 cartas del que se dispone en un juego de naipes, se les asignan los valores para que puedan sumarse posteriormente. package ocio; import java.util.Random; public class Carta { private String valor; private String palo; public Carta() { Random rnd = new Random(); int x = 1; x += (int)(rnd.nextDouble() * 13.0); switch (x) { case 1: valor = "A"; break; case 11: valor = "J"; x = 10; break; case 12: valor = "Q"; x = 10; break; case 13: valor = "K"; x = 10; break; default: valor =Integer.toString(x); } int y = 1; Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 23 -
  • 24. y += (int)(rnd.nextDouble() * 4.0); switch (y) { case 1: palo="Corazones Rojos"; break; case 2: palo="Diamantes"; break; case 3: palo="Trébol"; break; case 4: palo="Espadas"; break; default: palo = Integer.toString(y); } } public int getValor() { if(valor.equals("A")) return 1; else if(valor.equals("J") || valor.equals("Q") || valor.equals("K")) return 10; return Integer.parseInt(valor); } public String getPalo() { return palo; } } Creación de la Clase Jugador Al principio del programa de debe definir la clase Jugador, a continuación se debe declarar todas las variables que necesitemos utilizar. Luego se pude apreciar que se declaran variables ingresadas por teclado y se les asigna una letra para facilitar su uso posteriormente. Se utilizo arreglos para repartir las cartas a cada jugador Un arreglo es una colección de objetos numerados del mismo tipo, en donde cada variable o celda en el arreglo tiene un índice. Las celdas están numeradas del 0 al N-1, donde N es el número de celdas del arreglo es decir su capacidad. Los índices de un arreglo en Java deben estar dentro de los límites, 0 – N-1, de lo contrario se generará un error durante la ejecución. Java implementa los arreglos como objetos que pueden ser tratados como cualquier otro objeto. Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 24 -
  • 25. También implementa los arrays auténticos, en vez de listas enlazadas de punteros, con comprobación de límites, para evitar la posibilidad de sobreescribir o corromper memoria resultado de punteros que señalan a zonas equivocadas. Estas características reducen drásticamente el tiempo de desarrollo de aplicaciones en Java. Además se utilizaron lazos if para generar condiciones como la de que las cartas deben sumar 21. package ocio; import javax.swing.JOptionPane; public class Jugador { private String nombre; private String password; private int apuesta; private Carta[] arregloCartas; private int numCarta; private boolean as; public Jugador(int nj, int i) { this.arregloCartas = new Carta[10]; as=false; String a = JOptionPane.showInputDialog(null,"**Digita tu nombre: "); nombre = a ; String b = JOptionPane.showInputDialog(null,"**Digita tu password: "); password = b; for(;;){ String c = JOptionPane.showInputDialog(null,"Tu apuesta es...?"); int d; try { d=Integer.parseInt(c); if(d < 1) JOptionPane.showMessageDialog(null,"Te recordamos que tus apuestas deben exceder" + " a un dólar"); else { apuesta = d; break; } }catch(Exception e){ Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 25 -
  • 26. JOptionPane.showMessageDialog(null,"Te recordamos que tus apuestas deben exceder" + " a un dólar"); } } numCarta=1; } public void setArregloCartas(){ for(int i=0;i<2;i++){ this.arregloCartas[i] = new Carta(); if (this.arregloCartas[i].getValor()==1) as=true; } } public void setCarta() { numCarta+=1; arregloCartas[numCarta] = new Carta(); } public int getApuesta() { return(apuesta); } public String getPass() { return password; } public String getNombre() { return nombre; } public boolean preguntar() { String no = JOptionPane.showInputDialog(null,this.nombre + " ¿Desea otra carta?: n S o N"); if(no .toUpperCase().equals("S")) { return true; } else { if(no.toUpperCase().equals("N")) { return false; Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 26 -
  • 27. } else { JOptionPane.showMessageDialog(null,"Su opción no es válida"); } return false; } } public int total() { int sum = 0; try { for(int i = 0 ;i <= this.arregloCartas.length; i++) { if(this.arregloCartas[i].getValor() == 1) { sum = 11 + sum; as=true; } else sum = this.arregloCartas[i].getValor() + sum; } }catch(Exception e) { System.out.print(""); } if(as) if(sum > 21) sum -= 10; return (sum); } public void verCartas() { JOptionPane.showMessageDialog(null,""+ this.nombre + ", tus Cartas son:"); for(int i=0 ; i <= numCarta ; i++) JOptionPane.showMessageDialog(null,this.arregloCartas[i].getValor() + " " + this.arregloCartas[i].getPalo()); } } Creación de la clase Mesa Al principio del programa de debe definir la clase Jugador, a continuación se debe declarar todas las variables que necesitemos utilizar. En esta clase se imprime la suma de todas las apuestas de los jugadores y la imprime en pantalla. package ocio; Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 27 -
  • 28. import javax.swing.JOptionPane; public class Mesa { private int apuestaTotal; private int saldo; private Jugador [] arregloJugador = {}; public Mesa(int nj) { Jugador [] arregloJugador = new Jugador[nj]; try{ for(int i=0;i<nj;i++) { JOptionPane.showMessageDialog(null,"Jugador: " + (i+1)); arregloJugador[i] = new Jugador(nj,i); } }catch(Exception e) { } this.arregloJugador = arregloJugador; apuestaTotal = sumaApuestas(nj); JOptionPane.showMessageDialog(null,"la apuesta acumulada en mesa es: $ " + apuestaTotal); saldo = sumaApuestas(nj); } public Jugador getArregloJugador(int n) { return (arregloJugador[n]); } public int sumaApuestas(int nj) { int sum = 0; try { for(int i = 0 ;i <= nj; i++) { sum = this.getArregloJugador(i).getApuesta() + sum; } }catch(Exception e) { System.out.print(""); } return (sum); } } Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 28 -
  • 29. PROGRAMA TIC-TAC-TOE INTRODUCCION Este programa simula al juego de tres en raya en el cual participan dos personas y la que logra completar una línea horizontal, vertical o diagonal con (x) o (0) gana, este juego fue realizado con applets para tener una interfaz grafica en el cual se muestre el tablero. Los applet o apliques son pequeñas aplicaciones escritas en Java que permiten obtener una gran variedad de efectos en las páginas web. En nuestro caso nos ayudo a crear el entorno grafico DESARROLLO El paquete game contendrá al juego. Importamos los paquetes que sean necesarios, todos con igual importancia pero destacan las clases del paquete javax.swing para nuestras finalidades gráficas, tales como javax swing applet. ActionListener es una Interface del grupo de los Listeners (escuchadores). Nos ayuda a realizar una aqcción por ejemplo al ingresar un botón. ActionEvent invoca al método actionPerformed que realiza las acciones programadas. Insertamos objetos por posición x e y con largo y ancho, mientras que la clase "String" y la clase "TextField". Se verán las operaciones básicas con tiras (Strings) y algunos métodos asociados. package game; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class Ejecutable extends JApplet implements ActionListener{ private JTextField t1,t2,t3,t4,t5,t6,t7,t8,t9,t10; private JLabel ganador,jugador; private JButton player,reset; private JPanel panel1; private String playerA,playerB; private String dato; public void init(){ //Creacion de los elementos t1=new JTextField("1"); t1.disable(); t2=new JTextField("2"); t2.disable(); t3=new JTextField("3"); Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 29 -
  • 30. t3.disable(); t4=new JTextField("4"); t4.disable(); t5=new JTextField("5"); t5.disable(); t6=new JTextField("6"); t6.disable(); t7=new JTextField("7"); t7.disable(); t8=new JTextField("8"); t8.disable(); t9=new JTextField("9"); t9.disable(); t10= new JTextField("Name"); jugador=new JLabel(); ganador=new JLabel(); player=new JButton("Player 1"); player.addActionListener(this); reset=new JButton("Reset"); reset.addActionListener(this); panel1=(JPanel)this.getContentPane(); panel1.setLayout(null); addComponent(panel1, jugador, 27, 2, 105, 18); addComponent(panel1, ganador, 10, 152, 150, 18); addComponent(panel1, t1, 27, 47, 20, 22); addComponent(panel1, t2, 54, 47, 20, 22); addComponent(panel1, t3, 81, 47, 20, 22); addComponent(panel1, t4, 27, 78, 20, 22); addComponent(panel1, t5, 54, 78, 20, 22); addComponent(panel1, t6, 81, 78, 20, 22); addComponent(panel1, t7, 27, 109, 20, 22); addComponent(panel1, t8, 54, 109, 20, 22); addComponent(panel1, t9, 81, 109, 20, 22); addComponent(panel1, t10, 148, 47,105, 22); addComponent(panel1, player, 148, 78, 105, 22); addComponent(panel1, reset, 148, 109, 105, 22); this.setSize(new Dimension(269,203)); } //metodo para insertar objetos por posicon x e y con largo y ancho private void addComponent(Container container, Component c,int x,int y, int ancho,int largo) { c.setBounds(x, y, ancho, largo); container.add(c); } //metodo para capturar los eventos public void actionPerformed(ActionEvent e) { try{ game(e); }catch(NullPointerException e1){ } catch (Exception e2) { // TODO Auto-generated catch block Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 30 -
  • 31. ganador.setText("Error"); } } private void game(ActionEvent e) { String check=e.getActionCommand(); if(check.equals("Player 1")){ playerA=t10.getText(); player.setText("Player 2"); t10.setText(" "); } else if(check.equals("Player 2")){ playerB=t10.getText(); player.setText("Play"); t10.setText("Ready GO!"); } else if(check.equals("Play")){ t10.setText("Insert number "); player.setText(playerA+" (X)"); } else if(check.equals(playerA+" (X)")){ int opc=1; jugador.setText("Espera: "+playerA); dato=t10.getText(); compara(dato,opc); premio(); player.setText(playerB+" (O)"); } else if(check.equals(playerB+" (O)")){ int opc=2; jugador.setText("Espera: "+playerB); dato=t10.getText(); compara(dato,opc); premio(); player.setText(playerA+" (X)"); } else if(check.equals("Reset")){ t1.setText("1"); t2.setText("2"); t3.setText("3"); t4.setText("4"); t5.setText("5"); t6.setText("6"); t7.setText("7"); t8.setText("8"); t9.setText("9"); t10.enable(); t10.setText("Name"); player.setText("Player 1"); jugador.setText(""); ganador.setText(""); } Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 31 -
  • 32. else{ ganador.setText("Error inesperado"); } } private void premio() { if(t1.getText().equals("X")&&t2.getText().equals("X")&&t3.getText() .equals("X")|| t4.getText().equals("X")&&t5.getText().equals("X")&&t6.getText().eq uals("X")|| t7.getText().equals("X")&&t8.getText().equals("X")&&t9.getText().eq uals("X")|| t1.getText().equals("X")&&t4.getText().equals("X")&&t7.getText().eq uals("X")|| t2.getText().equals("X")&&t5.getText().equals("X")&&t8.getText().eq uals("X")|| t3.getText().equals("X")&&t6.getText().equals("X")&&t9.getText().eq uals("X")|| t1.getText().equals("X")&&t5.getText().equals("X")&&t9.getText().eq uals("X")|| t3.getText().equals("X")&&t5.getText().equals("X")&&t7.getText().eq uals("X")){ ganador.setText("El ganador es: "+playerA); win(); } else if(t1.getText().equals("O")&&t2.getText().equals("O")&&t3.getText().equal s("O")|| t4.getText().equals("O")&&t5.getText().equals("O")&&t6.getText().eq uals("O")|| t7.getText().equals("O")&&t8.getText().equals("O")&&t9.getText().eq uals("O")|| t1.getText().equals("O")&&t4.getText().equals("O")&&t7.getText().eq uals("O")|| t2.getText().equals("O")&&t5.getText().equals("O")&&t6.getText().eq uals("O")|| t3.getText().equals("O")&&t6.getText().equals("O")&&t9.getText().eq uals("O")|| Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 32 -
  • 33. t1.getText().equals("O")&&t5.getText().equals("O")&&t9.getText().eq uals("O")|| t3.getText().equals("O")&&t5.getText().equals("O")&&t7.getText().eq uals("O")){ ganador.setText("El ganador es: "+playerB); win(); player.disable(); } } private void win() { t10.setText("Thanks for playing!"); t10.disable(); player.disable(); } private void compara(String dato2,int o) { switch(o){ case 1: if(t1.getText().equals(dato2)){ t1.setText("X"); } if(t2.getText().equals(dato2)){ t2.setText("X"); } if(t3.getText().equals(dato2)){ t3.setText("X"); } if(t4.getText().equals(dato2)){ t4.setText("X"); } if(t5.getText().equals(dato2)){ t5.setText("X"); } if(t6.getText().equals(dato2)){ t6.setText("X"); } if(t7.getText().equals(dato2)){ t7.setText("X"); } if(t8.getText().equals(dato2)){ t8.setText("X"); } if(t9.getText().equals(dato2)){ t9.setText("X"); } break; case 2: if(t1.getText().equals(dato2)){ Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 33 -
  • 34. t1.setText("O"); } if(t2.getText().equals(dato2)){ t2.setText("O"); } if(t3.getText().equals(dato2)){ t3.setText("O"); } if(t4.getText().equals(dato2)){ t4.setText("O"); } if(t5.getText().equals(dato2)){ t5.setText("O"); } if(t6.getText().equals(dato2)){ t6.setText("O"); } if(t7.getText().equals(dato2)){ t7.setText("O"); } if(t8.getText().equals(dato2)){ t8.setText("O"); } if(t9.getText().equals(dato2)){ t9.setText("O"); } break; } } } Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 34 -
  • 35. CONCLUSIONES Lo más significativo a nuestro parecer fue que Java realiza verificaciones en busca de problemas tanto en tiempo de compilación como en tiempo de ejecución. La comprobación de tipos en Java ayuda a detectar errores, lo antes posible, en el ciclo de desarrollo. Java obliga a la declaración explícita de métodos, reduciendo así las posibilidades de error. Maneja la memoria para eliminar las preocupaciones por parte del programador de la liberación o corrupción de memoria. Además, para asegurar el funcionamiento de la aplicación, realiza una verificación de los byte- codes, que son el resultado de la compilación de un programa Java. Es un código de máquina virtual que es interpretado por el intérprete Java. No es el código máquina directamente entendible por el hardware, pero ya ha pasado todas las fases del compilador: análisis de instrucciones, orden de operadores, etc., y ya tiene generada la pila de ejecución de órdenes. Se puede modificar cualquier tipo de código fuente a una interfaz gráfica son la ayuda de swing; es importante el entorno grafico en la mayoría de programas en Java. Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 35 -