informe final del proyecto poo

35
Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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 .

Upload: epn

Post on 26-May-2015

1.421 views

Category:

Education


12 download

DESCRIPTION

Informe Final del Proyecto POO

TRANSCRIPT

Page 1: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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 .

Page 2: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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

Page 3: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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

Page 4: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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.

Page 5: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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: \n\n1. Subir Pasajero\n" +

"2. Bajar Pasajero\n" +

"3. Total de Pasajeros\n" +

"4. Listado de los Pasajeros\n" +

"5. Promedio de edad de los Pasajeros\n" +

"6. Buscar Pasajero\n" +

"7. Salir\n");

Page 6: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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!!!");

Page 7: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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)) {

Page 8: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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

erronea\n\n\nElija 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> */

Page 9: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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>

Page 10: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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>

Page 11: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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() {

Page 12: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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) {

Page 13: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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) {

Page 14: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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();

}

Page 15: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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;

}

}

Page 16: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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.

Page 17: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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,"\t\t MENU:

\n\t\t1. Quiénes vamos a jugar?" +

"... \n\t\t2. Repartir cartas\n" +

"\t\t3. Desea más cartas...\n" +

"\t\t4. Ver mis cartas\n" +

"\t\t5. Conocer el estado de la mesa\n" +

"\t\t6. Ayuda\n" +

"\t\t7. Salir\n");

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 {

Page 18: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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

ingresar\n");

}

if(numberJug > 0 && numberJug < 2) {

number = true;

JOptionPane.showMessageDialog(null,"\nDebe haber más de un " +

"jugador\n 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!" +

"\n\n\n\n\n\n\n\n");

ope2=true;

}

break;

case 3:

if(ope1) {

Page 19: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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 " +

Page 20: Informe Final Del Proyecto Poo

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

"jugar");

}

break;

case 4:

if(ope1) {

if(!ope2) {

JOptionPane.showMessageDialog(null,"Primero se deben repartir" +

" las cartas\n\n ");

}

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!");

Page 21: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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,"\t\t\t\t

NO ES DIFÍCIL JUGAR BLACK " +

"JACK... Te ofrecemos una

ayuda\n\n" +

"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áticamente\n" +

Page 22: Informe Final Del Proyecto Poo

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

"3. El As puede tomar el valor

de uno u once\n" +

"4. No te preocupes por los

resultados podrás" +

"mirarlo en la opción del menú

correspondiente" +

"conocer estado de la mesa\n" +

"5. GRACIAS POR JUGAR ES UN " +

"GUSTO SERVIRTE\n");

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) {

Page 23: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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;

Page 24: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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.

Page 25: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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){

Page 26: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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;

Page 27: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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;

Page 28: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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);

}

}

Page 29: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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");

Page 30: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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

Page 31: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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("");

}

Page 32: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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")||

Page 33: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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)){

Page 34: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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;

}

}

}

Page 35: Informe Final Del Proyecto Poo

Documento elaborado por: Pérez Cristian y Pinto Andrea Página - 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.