Sie sind auf Seite 1von 30

Proyecto Final de Programacin I

UNIVERSIDAD TECNICA DE MACHALA FACULTAD DE INGENIERA CIVIL ESCUELA DE INFORMTICA PRIMER QUIMESTRE PARALELO A PROGRAMACIN 1 UTILITARIOS 1

Memory Lettering Proyecto Final de Asignatura Autores: Bryan Stalin Espinoza Lara Dannes Michael Cruz Laas Jorge Enrique Feijo Medina Leandro Miguel Pinto Vega Docente: Ing. Fausto Redrovn Castillo, Mg.

MACHALA ECUADOR SEPTIEMBRE, 2013


1

Proyecto Final de Programacin I

AUTORA: Nosotros, Bryan Stalin Espinoza Lara, Dannes Michael Cruz Laas, Jorge Enrique, Feijo Medina y Leandro Miguel Pinto Vega, como autores del presente trabajo de investigacin, somos responsables de las ideas, conceptos, procedimientos y resultados vertidos en la misma.

f. Bryan Stalin Espinoza Lara


C.I.: 0704612514

f. Dannes Michael Cruz Laas


C.I.: 070655213

f. Jorge Enrique Feijo Medina


C.I.: 0705820934

f. Leandro Miguel Pinto Vega


C.I.: 0705840304

Proyecto Final de Programacin I

ndice de contenido

1.JUSTIFICACIN ............................................................................4 2.OBJETIVOS .................................................................................5 2.1. Objetivo General ......................................................................5 2.2.Objetivos Especficos ..................................................................5 3.- ANTECEDENTES .........................................................................5 4.- MARCO TERICO .......................................................................6 5.- MARCO METODOLGICO ...........................................................11 5.1 Anlisis de resultados ...............................................................11 5.2 Solucin .................................................................................12 6.- CONCLUSIONES .......................................................................12 7.- RECOMENDACIONES .................................................................13 9.- REFERENCIAS BIBLIOGRFICAS .................................................13 10.- ANEXOS. ...............................................................................14 10.1.- Cdigo fuente del programa ...................................................14 10.1.1 Clase Tiempo.......................................................................14

Proyecto Final de Programacin I 1.JUSTIFICACIN Actualmente el juego no es considerado como una mera forma de descargar la energa sobrante, las distintas teoras psicolgicas han puesto de manifiesto la importancia del juego dentro del desarrollo infantil, sobre todo en los primeros aos.En este sentido, los juegos de simulacin constituyen un ejemplo ms de las posibilidades pedaggicas de la conducta ldica. A la hora de ensear contenidos de las ciencias sociales, nos encontramos con la dificultad de plantear un aprendizaje activo de estos temas, la mayora de los fenmenos sociales son difciles de manipular y reproducir a voluntad, no podemos provocar un conflicto entre grupos, una batalla o una crisis econmica. Los juegos de simulacin imponen una posible solucin a estas limitaciones. Se trata de reproduccin de acontecimientos de la vida real, eliminando la informacin irrelevante, se secuencian los pasos y conseguimos que los alumnos afronten la necesidad de tomar una decisin y de valorar sus resultados. Las ventajas que presentan estos juegos son numerosas, aunque como principal ventaja destacaramos su capacidad de motivar e interesar a los alumnos.

Proyecto Final de Programacin I 2.OBJETIVOS 2.1. Objetivo General Preparar y poner a punto los recursos informticos y aprendizajes adquiridos en el transcurso del semestre, conocer el funcionamiento y la dinmica de los diferentes juegos educativos en los cuales influyan mtodos de contenido lgicos, seleccionando los que mejor se adapten a las caractersticas del alumnado; implementando la programacion de forma adecuada a las actividades basadas en la utilizacin de los mismos y evaluando la aplicacin de los juegos didcticos en el aula, obteniendo los resultados deseados.

2.2.Objetivos Especficos Evaluar la aplicacin del juego de lgica como estrategia de enseanzaaprendizaje para personas de temprana edad. Utilizar los juegos didcticos para hacer mas amena las actividades de evaluacin. Implementar una aplicacion pedagogica que permitar desarrollar la habilidad de captacion textual. 3.- ANTECEDENTES Es de hacer notar que los privilegios modernos relacionados con el proceso de enseanza-aprendizaje de los educandos, permite incluir al juego como una estrategia innovadora, eficaz y participativa para el desarrollo intelectual del alumno. De all, que han surgido en los ltimos tiempos diversas investigaciones y aportes que proponen al juego como alternativa novedosa para el aprendizaje. A continuacin se presentan una serie de trabajos que figuran como antecedentes de la investigacin planteada. Araujo y Valera (2006) disearon un estudio para promover el juego como estrategia de globalizacion del eje ambiente, dirigido a los docentes de la II etapa de Educacin
5

Proyecto Final de Programacin I Basca, para lo cual se llevaron a cabo una recoleccin de la informacin, diseando un cuestionario tipo lickert1 que una vez aplicado y analizado su contenido logro concluir que los docentes si bien utilizan estrategias diversas, por lo que se considero la elaboracin de una propuesta que contiene un conjunto de juegos ecolgicos para desarrollar los alcances del eje transversal ambiente en la segunda etapa de educacin bsica. Por su parte Briceo y Villegas (2006) realizaron un estudio dirigido al diseo de estratiegias didcticas para la enseanza del sistema nervioso en el 8 grado de educacin bsica, planteada como una investigacin de tipo descriptivo la cual se llevo a cabo con una muestra de 140 alumnos, aplicndolos una prueba sobre los contenidos a desarrollar para medir los conocimientos previos sobre el tema. Seguidamente implementaron las estrategias diseadas entre ellas: juegos didcticos como el rompecabezas del cerebro y sopa de letras. Dichos juegos buscaban determinar la capacidad de reconocimiento de las partes del cerebro y la agilidad y destreza en la ejecucin de los mismos 4.- MARCO TERICO Investigacin Comentarios en Java Los comentarios, anotaciones en el cdigo que el compilador ignora pero son tiles para los programadores, existen en los lenguajes de programacin desde el principio. Desde hace mucho tiempo se observ que en realidad los comentarios se usaban para dos propsitos diferentes: Para explicar el propsito de sentencias o grupos de sentencias. Estos comentarios son tiles para el propio autor del cdigo, y para otros que quieran modificar ese cdigo. Comentarios explicando qu hace una "pieza" cerrada de cdigo. Estos comentarios
1 (tambin denominada mtodo de evaluaciones sumarias) se denomina as por Rensis Likert, quin public en 1932 un informe donde describa su uso. Es una escala psicomtrica comnmente utilizada en cuestionarios, y es la escala de uso ms amplio en encuestas para la investigacin, principalmente en ciencias sociales. 6

Proyecto Final de Programacin I son tiles para quien quiere utilizar esta "pieza" en su propio programa, y que por tanto est necesita saber lo que hace, no cmo se las ha arreglado el programador para conseguir este resultado. Al disear Java se distinguieron desde el principio ambas posibilidades. Para el primer tipo, comentarios "internos" se usan los caracteres // seguidos del comentario, o /* .... */ con el comentario en el lugar de los puntos suspensivos. La primera posibilidad indica que el resto de la lnea, tras las dos barras, es un comentario, mientras que la segunda se usa para comentarios de ms de una lnea. Por ejemplo, un fragmento de cdigo que calcula la suma 1+3+5+ ... +99 y muestra el resultado por pantalla: int suma = 0; // al principio la suma vale 0 // vamos sumando cada uno de los cuadrados entre 1 y 100 y acumulando el resultado for (int i=1; i<=99; i+=2) suma += i; // finalmente mostramos el resultado por pantalla System.out.println(suma); // por cierto, que valor se mostrar por pantalla? El segundo tipo, los usados para explicar qu hace un cdigo son los llamados en Java comentarios JavaDoc, y se escriben comenzando por /** y terminando con */ , pudiendo ocupar varias lneas. Mientras que los comentarios usuales no tienen ningn formato, los comentarios JavaDoc siguen una estructura prefijada que describimos en el siguiente apartado. JavaDoc Este artculo es el inicio de una serie de ellos dedicados a aprender cmo comentar el cdigo Java y cmo generar la documentacin HTML de nuestras API's mediante la herramienta de generacin automtica JavaDoc. Como mi mentor en Java me dijo una vez, el buen cdigo en Java se comenta solo y no le falta razn. Por eso, aqu vamos a aprender que no es necesario comentar
7

Proyecto Final de Programacin I todas las lneas de cdigo (salvo algn caso excepcional que requiera ser remarcado por su importancia). Realmente lo nico necesario es comentar la clase y cada uno de los mtodos que empleemos, bien para quien quiera entender qu hace esa clase o la funcin que desempean cada uno de los mtodos o bien, como es la intencin de este artculo para que luego la herramienta de generacin automtica de documentacin nos cree la nuestra. En este primer artculo nos dedicaremos a aprender cmo se comentan las clases y las etiquetas que disponemos para aadir informacin adicional. Tipo de comentario para generar la documentacin. A parte de los ya sabidos /* */ //, tambin tenemos un tercero propio de java y que es el que usa el JavaDoc como delimitador para reconocer la documentacin que tiene que generar. Cualquier comentario de este tipo debe comenzar por el delimitador /** y, luego, cada lnea de comentario que aadamos debe seguir al operador *. As mismo, tambin comenzarn por un * las etiquetas, slo que stas a su vez deben ser precedidas por el operador @ como se ver en el prximo captulo. Una cosa muy importante que quiero resaltar ya es que javadoc lo nico que hace es copiar el contenido a una pgina HTML por lo que se admite cualquier etiqueta HTML que queris para darle ms claridad o vistosidad a vuestra documentacin. Vemos a continuacin el formato tpico de un comentario al estilo javadoc. /** * Al usar este estilo de comentario estoy consiguiendo que cuando * lo pase por JavaDoc, esta herramienta copie este texto a una pgina * html. * Puedes ver que tambin admite <b>etiquetas HTML</b> * y sto ltimo que acabo de escribir aparecer en negrita. */ Las etiquetas. Aparte de los comentarios propios, la utilidad javadoc nos proporciona una serie de etiquetas para completar la informacin que queremos dar de una determinada clase
8

Proyecto Final de Programacin I o mtodo. Son las siguientes: @author nombre (desde la versin 1.0 del JDK/SDK)http://www.javahispano.com 2 Indica el autor de la clase en el argumento nombre. Un comentario de este tipo puede tener ms de un autor en cuyo caso podemos usar tantas etiquetas de este tipo como autores hayan colaborado en la creacin del cdigo fuente o bien podemos ponerlos a todos en una sola etiqueta. En ste ltimo caso, JavaDoc inserta una (,) y un espacio entre los diferentes nombres. @deprecated comentario (desde la versin 1.0 del JDK/SDK) Aade un comentario indicando que este API no debera volver a usarse, aunque aun siga perteneciendo a la distribucin del SDK que estemos utilizando, por estar desautorizado o "desfasado". No obstante, sto es slo una advertencia que nosotros damos a los usuarios de nuestras API's, al igual que las distribuciones de Sun hacen con nosotros. Realmente, lo que estamos haciendo al decir que una determinada API est desfasada es prevenir de que en un futuro podrn surgir incompatibilidades si seguimos usndolas ya que ste es el paso a previo a la desaparicin del API en concreto. En la primera frase del comentario, que es la que la documentacin nos la muestra en la seccin del resumen de nuestra clase, deberamos como mnimo poner desde que versin de nuestra API est desautorizada y por quin se debera sustituir. A partir de Java 1.2 podemos usar {@link} para reverenciar por quin debemos hacer la sustitucin. @exception nombre-clase descripcin (desde la versin 1.0 del JDK/SDK).Esta etiqueta acta exactamente igual que @throws. Formato de los comentarios JavaDoc Los comentarios JavaDoc estn destinados a describir, principalmente, clases y mtodos. Como estn pensados para que otro programador los lea y utilice la clase (o mtodo) correspondiente, se decidi fijar al menos parcialmente un formato comn, de forma que los comentarios escritos por un programador resultaran legibles por otro. Para ello los comentarios JavaDoc deben incluir unos indicadores
9

Proyecto Final de Programacin I especiales, que comienzan siempre por '@' y se suelen colocar al comienzo de lnea. Por ejemplo esta es una clase para representar nmeros crculos (reducida al mnimo): package figuras; /** * Una clase para representar crculos situados sobre el plano. * Cada crculo queda determinado por su radio junto con las * coordenadas de su centro. * @version 1.2, 24/12/04 * @author Rafa Caballero */ public class Crculo { protected double x,y; // coordenadas del centro protected double r; // radio del crculo /** * Crea un crculo a partir de su origen su radio. * @param x La coordenada x del centro del crculo. * @param y La coordenada y del centro del crculo. * @param r El radio del crculo. Debe ser mayor o igual a 0. */ public Circulo(double x, double y, double r) { this.x=x; this.y = y; this.r = r; } /** * Clculo del rea de este crculo. * @return El rea (mayor o igual que 0) del crculo. */ public double rea() { return Math.PI*r*r; } /**
10

Proyecto Final de Programacin I * Indica si un punto est dentro del crculo. * @param px componente x del punto * @param py componente y del punto * @return true si el punto est dentro del crculo o false en otro caso. */ public boolean contiene(double px, double py) { /* Calculamos la distancia de (px,py) al centro del crculo (x,y), que se obtiene como raz cuadrada de (px-x)^2+(py-y)^2 */ double d = Math.sqrt((px-x)*(px-x)+(py-y)*(py-y)); // el crculo contiene el punto si d es menor o igual al radio return d <= r; } } Como se ve, y esto es usual en JavaDoc, la descripcin de la clase o del mtodo no va precedida de ningn indicador. Se usan indicadores para el nmero de versin (@version), el autor (@author) y otros. Es importante observar que los indicadores no son obligatorios; por ejemplo en un mtodo sin parmetros no se incluye obviamente el indicador @param. Tambin puede darse que un comentario incluya un indicador ms de una vez, por ejemplo varios indicadores @param porque el mtodo tiene varios parmetros. 5.- MARCO METODOLGICO Aqu se detallan todos los algoritmos que se disearon para obtener el programa final. Debe constar la opcin del men, el propsito y el diagrama de flujo de cada algoritmo. 5.1 Anlisis de resultados Presentar una prueba de escritorio de cada algoritmo. Colocar la prueba en formato de tablas. Numerar las tablas con su respectivo epgrafe.

11

Proyecto Final de Programacin I 5.2 Solucin Aqu se deber describir: El problema que intenta resolver el programa. Cmo se dise la interfaz de usuario (las pantallas). Incluir y numerar imgenes de las pantallas, y colocar un epgrafe. Cmo se implementaron los algoritmos en Java. Hacer referencia a la codificacin, pero presentarla en los Anexos.

6.- CONCLUSIONES Preparar y poner a punto los recursos informticos y aprendizajes adquiridos en el transcurso del semestre, conocer el funcionamiento y la dinmica de los diferentes juegos educativos en los cuales influyan mtodos de contenido lgicos, seleccionando los que mejor se adapten a las caractersticas del alumnado; implementando la programacion de forma adecuada a las actividades basadas en la utilizacin de los mismos y evaluando la aplicacin de los juegos didcticos en el aula, obteniendo los resultados deseados. Esta aplicacion servira para evaluar tanto al docente como al estudiante de una manera practica y sencilla a traves de recursos informaticos, dando a conocer las falencias del alumno y de esta forma el docente podra reforzar sus puntos fragiles. Mediante este programa tendremos una manera entretenida de evaluar al usuario, tomando en cuenta su rentencion de imagenes o letras y tener una respuesta rapida. Obtener como resultado las diferentes formas de plasmar el aprendizaje no solo de manera escrita, verbal o mimica, sino tambien por medio de la tecnologia que en este caso seria el presente programa.

12

Proyecto Final de Programacin I 7.- RECOMENDACIONES Utilizar de preferencia varias clases Seguir perfeccionando el cdigo.

9.- REFERENCIAS BIBLIOGRFICAS Usar norma APA para colocar la Bibliografa. A continuacin algunos ejemplos de referencias que usan la Norma APA, para que los tomen como base para el formato: Aguilera P., J., & Rodrguez S., A. (s.f.). Principios de subsidiariedad y equidad en la gestin de las organizaciones educativas. Chile-Espaa: Universidad de los Andes, Universidad de Navarra. Autoridades y Jefes de rea, U. (agosto de 2011). Gestin de la Organizacin. (F. F. Redrovn Castillo, Entrevistador) Barrios Cisnero, H. (s.f.). Investigacin Holstica. Obtenido de Ciencias de la Salud: http://www.biosalud.saber.ula.ve/db/ssalud/edocs/articulos/saludholistica/libro/cap11. pdf Chininn C., V. E. (febrero de 2011). Planificacin Estratgica Educativa. Presentacin Diapositivas. Ecuador. El Educador.com. (s.f.). Informacin y servicios educativos para docentes de Amrica Latina. Recuperado el 09 de marzo de 2012, de eleducador.com: http://www.eleducador.com/recursos-educativos/instrumentos-de-gestion.html McMillan, J. H., & Schumacher, S. (2005). Investigacin Educativa (Quinta ed.). Madrid: Pearson Educacin, S. A.

13

Proyecto Final de Programacin I 10.- ANEXOS. 10.1.- Cdigo fuente del programa

10.1.1 Clase Tiempo


/** * Esta clase empieza y termina un cronometro * @author (Dannes Cruz, Bryan Espinoza, Jorge Feijo y Leandro Pinto) * @version (17.08) */ public class Tiempo { // Declaracion de variables private long inicio; private int totalTiempo, segundos, min, horas; /** * Empieza el cronometro */ public void start() { // Guardamos el tiempo en que iniciamos el juego inicio = System.currentTimeMillis(); } /** * Termina el cronometro * * @return Retorna el total del tiempo */ public int stop() { // Hacemos el calculo respectivo para saber el total del tiempo // transcurrido // Dividimos para 1000 porque el tiempo esta dado en milisegundos // Nos da el tiempo total dado en segundos, ejem: 643 seg totalTiempo = (int) (System.currentTimeMillis() - inicio) / 1000; // Retorna el total del tiempo transcurrido en segundos return totalTiempo; 14

Proyecto Final de Programacin I


} /** * Transforma el tiempo total en horas * * @return Retorna las horas */ public int horas() { // Llamamos a "STOP" y dividimos para 3600, sabiendo que 1 hora tiene // 3600 segundos // Nos da el tiempo trancurrido en horas horas = (int) stop() / 3600; // Retorna el tiempo transcurrido en horas return horas; } /** * Transforma el tiempo total en minutos * * @return Retorna los minutos */ public int min() { // Nos da el tiempo trancurrido en minutos min = (int) (stop() - (horas() * 3600)) / 60; // Retorna el tiempo transcurrido en minutos return min; } /** * Transforma el tiempo total en segundos * * @return Retorna los segundos */ public int seg() { // Nos da el tiempo trancurrido en segundos segundos = (int) stop() - (horas() * 3600) - (min() * 60); // Retorna el tiempo transcurrido en segundos return segundos; } }

15

Proyecto Final de Programacin I

10.1.2 Clase Cuerpo


import javax.swing.JTextArea; /** * Esta clase genera una letra aletatoria del alfabeto en mayuscula * @author (Dannes Cruz, Bryan Espinoza, Jorge Feijo y Leandro Pinto) * @version (17.08) */ public class Cuerpo { // Declaracion de variables private char[][] palabra = new char[4][5]; /** * Este metodo genera un letra mayuscula * * @return Retorna una letra Mayuscula de tipo char */ public char genLetras() { // Retorna una letra Mayuscula de tipo char return (char) Math.round((float) Math.random() * 25 + 65); } /** * Genera en el JTextArea las letras tomadas del metodo genLetras() de la * clase Cuerpo Guarda cada letra generada para luego verificarla */ public void llenar(JTextArea txaArreglo) {

16

Proyecto Final de Programacin I


for (int x = 0; x < 4; ++x) { for (int y = 0; y < 5; ++y) { // Guardamos la letra generada en la matriz con su respectiva // fila y columna palabra[x][y] = genLetras(); // Agregamos la letra guardada anteriormente en el Area de Texto // Hasta la columna N 4 damos una tabulacion if (y < 4) txaArreglo.append(palabra[x][y] + "\t"); // Caso contrario solo agragamos la letra else txaArreglo.append("" + palabra[x][y]); } // Agregamos 2 saltos de linea hasta la fila 3 del JTextArea if (x < 3) txaArreglo.append("\n" + "\n"); } } /** * Verifica que las palabra estn ingresadas correctamente. Convierte la * cadena de caracteres de JTextField en Maysculas * * @return Retorna un valor el cual se comparara mas adelante para * verificar. Si la palabra es correcta, incorrecta, o si no tiene * las cuatro letras completas */ public int verificar(String txfIngreso) { int aux = 0, k = 0; // Guardamos la palabra ingresada y la convertimos a mayuscula txfIngreso = txfIngreso.toUpperCase(); // Realizamos una comparacion para saber si existen las 4 letras // obligatorias if (txfIngreso.length() == 4) {

17

Proyecto Final de Programacin I


for (int x = 0; x < 4; ++x) { for (int y = 0; y < 5; ++y) { // Compara cada letra ingresada con cada letra de la fila de // la matriz if (txfIngreso.charAt(x) == palabra[x][y]) { // Si la comparacion se da, aumentamos en 1 una variable // auxiliar aux++; // Rompemos el segundo FOR y continuamos con la // siguiente letra a comparar break; } } } // Si AUX es 4, entonces quiere decir que cada letra estuvo en la // fila comparada if (aux == 4) // Asignamos un bandera para saber que cuando es correcto el // valor retornado sera 1 k = 1; // Si AUX no es 4, entonces alguna letra no estuvo en la fila // respectiva if (aux != 4) // La bandera sera 2 cuando la palabra sea incorrecta k = 2; } else { // Si la palabra no tiene las cuatro letras completas, o tiene // letras demas if (txfIngreso.length() < 4 || txfIngreso.length() > 4) // La bandera sera 3 cuando sea la palabra este incompleta o // demasiado extensa k = 3; } // Retornamos el valor de la bandera 18

Proyecto Final de Programacin I


return k; } /** * Calcula el puntaje basndose en la palabra ingresada correctamente * * @return Retorna el puntaje de cada palabra */ public int puntaje(String txfIngreso) { int primGrupo = 0, segGrupo = 0, terGrupo = 0, punTotal = 0; // Obtenemos el texto y transformamos a mayuscula txfIngreso = txfIngreso.toUpperCase(); for (int m = 0; m < 4; ++m) { // Comparamos cada letra del texto ingresado con las letras que mas // se repiten if ((txfIngreso.charAt(m) == 'A') || (txfIngreso.charAt(m) == 'C') || (txfIngreso.charAt(m) == 'D') || (txfIngreso.charAt(m) == 'E') || (txfIngreso.charAt(m) == 'L') || (txfIngreso.charAt(m) == 'M') || (txfIngreso.charAt(m) == 'R') || (txfIngreso.charAt(m) == 'S')) // Si esto sucede hacemos que el puntaje aumente en 3 primGrupo = primGrupo + 3; // Comparamos cada letra del texto ingresado con las letras poco // frecuentes else if ((txfIngreso.charAt(m) == 'B') || (txfIngreso.charAt(m) == 'F') || (txfIngreso.charAt(m) == 'N') || (txfIngreso.charAt(m) == 'O') || (txfIngreso.charAt(m) == 'I') 19

Proyecto Final de Programacin I


|| (txfIngreso.charAt(m) == 'P') || (txfIngreso.charAt(m) == 'T') || (txfIngreso.charAt(m) == 'U')) // Si esto sucede hacemos que el puntaje aumente en 6 segGrupo = segGrupo + 6; // Comparamos si la letra no esta en ninguno de los 2 grupos // entonces es una letra que no se repiten frecuentemente else // Si esto sucede hacemos que el puntaje aumente en 10 terGrupo = terGrupo + 10; } // Sumamos todos los puntejes parciales punTotal = (punTotal + (primGrupo + segGrupo + terGrupo)); // Retornamos el puntaje total return punTotal; } }

10.1.3 Clase ProyectoFinal


import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * Esta clase pone en marcha un juego de letras * @author (Dannes Cruz, Bryan Espinoza, Jorge Feijo y Leandro Pinto) * @version (17.08) */ // Hacemos que esta clase sea un JFRAME para poder reutilizar sus mtodos // Implementamos el ACCIONLISTENER para dar acciones a los botones public class ProyectoFinal extends JFrame implements ActionListener { // Declaracin de variables private Container contenedor; private JPanel norte, sur, este, oeste, centro; private JLabel lblCorrecto, lblForPalabra; private JTextArea txaArreglo; private JTextField txfIngreso; private JButton btnVerificar, btnPuntaje, btnSalir, btnNuevo, btnJugar; 20

Proyecto Final de Programacin I


private static String nombre; private int chances = 5, hor = 0, min = 0, seg = 0; private String[] palabrasIng = new String[5]; private int[] puntos = new int[5]; // Declaracin de variables de las clases creadas private Cuerpo miJuego = new Cuerpo(); private Tiempo miCrono = new Tiempo(); /** * Empieza a ejecutar el juego */ public static void main(String[] args) { // Atreves de un Dialogo de Entrada pedimos el nombre del jujador // Este mtodo retorna un valor de tipo STRING, que es lo que ingresamos // Recibe 4 parmetros: null, El texto a mostrar, El titulo del dialogo // y El icono de pregunta nombre = JOptionPane.showInputDialog(null, "Hola, ingresa tu Nombre:", "Proyecto Final", JOptionPane.QUESTION_MESSAGE); // Instanciamos un objeto de nuestra clase ProyectoFinal miProy = new ProyectoFinal(); // Mostramos las reglas del juego JOptionPane.showMessageDialog(null, "Hola " + nombre + " bienvenido. " + "\n" + "Tienes que ingresar una letra de cada fila en su respectivo orden"

+ "\n" + "Tienes 5 oportunidades..." + "\n" + "SUERTE!!!", "Proyecto Final", JOptionPane.INFORMATION_MESSAGE); // Hacemos visible nuestro JFRAME miProy.setVisible(true); } /** * Inicializa todos los componentes de nuestro programa */ public ProyectoFinal() { // Cambiamos el titulo del JFrame

21

Proyecto Final de Programacin I


this.setTitle("Proyecto Final"); // Obtenemos el contenedor de nuestro JFrame contenedor = this.getContentPane(); // Por default nuestro contenedor tiene el LAYOUT BorderLayout // Creamos un panel para cada zona norte = new JPanel(); sur = new JPanel(); este = new JPanel(); oeste = new JPanel(); centro = new JPanel(); // Cambiamos el LAYOUT del panel central para poder agregar hacia abajo // los componentes que queremos agregar // El BOXLAYOUT recibe 2 parametros: el panel al que le queremos cambiar // el layout y en que direccion centro.setLayout(new BoxLayout(centro, BoxLayout.Y_AXIS)); // Cambiamos el texto del LABEL PRINCIPAL lblForPalabra = new JLabel(".:: Formar Una Palabra ::."); // lblForPalabra.setFont(new Font("Lucida Calligraphy", Font.BOLD, 21)); // Cambiamos el texto del LABEL SECUNDARIO lblCorrecto = new JLabel("Empieza el juego " + nombre + ".... Suerte!!!"); // Le damos los valores de ancho y alto al TEXTAREA txaArreglo = new JTextArea(4, 33); // Llenamos nuestro TextArea a travez del metodo LLENAR de la clase // CUERPO miJuego.llenar(txaArreglo); // Creamos el TEXTFIELD para el ingreso txfIngreso = new JTextField(); // Le cambiamos el tamao a travez del metodo MaximunSize // Este recibe un objeto de la clase Dimension // La clase Dimension recibe los parametros de ancho y alto txfIngreso.setMaximumSize(new Dimension(220, 22)); // Creamos el boton verificador btnVerificar = new JButton("Verificar");

22

Proyecto Final de Programacin I


// El metodo ToolTipText sirve para que al poner el mouse sobre el boton // me emita un mensaje de ayuda btnVerificar .setToolTipText("Verifica si la palabra fue ingresada correctamente"); // Escuchador del boton btnVerificar.addActionListener(this); // Creamos el boton btnNuevo btnNuevo = new JButton("Nuevo"); //Presenta un mensaje al pasar el mouse sobre el btnNuevo btnNuevo.setToolTipText("Empiezas un nuevo juego"); //escuchar el btnNuevo btnNuevo.addActionListener(this); // Creamos el boton btnPuntaje btnPuntaje = new JButton("Ver Puntaje"); //Presenta un mensaje al pasar el mouse sobre el btnPuntaje btnPuntaje.setToolTipText("Te aparecera una ventana indicando tu tiempo y tu puntaje"); //escuchar el btnPuntaje btnPuntaje.addActionListener(this); // Creamos el boton btnSalir btnSalir = new JButton("Salir"); //Presenta un mensaje al pasar el mouse sobre el btnSalir btnSalir.setToolTipText("Terminas el juego"); //escuchar el btnSalir btnSalir.addActionListener(this); // Creamos el boton btnJugar btnJugar = new JButton("Jugar"); //Presenta un mensaje al pasar el mouse sobre el btnJugar btnJugar.setToolTipText("Juega!!!!"); //escuchar el btnJugar btnJugar.addActionListener(this); // Llamamos al metodo ensamblaje

23

Proyecto Final de Programacin I


ensamblaje(); // Desactivamos en un principio los siguientes botonnes indicados btnPuntaje.setEnabled(false); btnNuevo.setEnabled(false); btnVerificar.setEnabled(false); txaArreglo.setEditable(false); txfIngreso.setEnabled(false); // Damos tamao a nuestro JFRAME this.setSize(680, 215); // Hacemos que la ventana no se pueda redimensionar this.setResizable(false); // Permite colocar en el centro nustro JFRAME this.setLocationRelativeTo(null); // Empezamos el cronometro miCrono.start(); } /** * Ensambla cada uno de los componentes de la ventana colocandolos en orden */ // lo hacemos PRIVATE para que solo lo utilize esta CLASE private void ensamblaje() { // Agregamos al panel NORTE nuestro LABEL principal // El metodo ADD permite agregar componentes a nuestro panel NORTE norte.add(lblForPalabra); // Agregamos al panel sur nuestro los botones btnNuevo,btnSalir,btnPuntaje sur.add(btnNuevo); sur.add(btnPuntaje); sur.add(btnSalir); // Agregamos al panel este nuestro txaArreglo este.add(txaArreglo); // Agregamos al panel centro nuestro txfIngreso,lblCorrecto,btnJugar centro.add(txfIngreso); centro.add(lblCorrecto); centro.add(btnJugar); 24

Proyecto Final de Programacin I


// Agregamos al panel oeste nuestro boton btnVerificar oeste.add(btnVerificar); // Agregamos en cada zona de nuestro contenedor principal los paneles // Atravez de BorderLayout.NORTH agregamos en el NORTE, asi para el // resto contenedor.add(norte, BorderLayout.NORTH); contenedor.add(este, BorderLayout.WEST); contenedor.add(centro, BorderLayout.CENTER); contenedor.add(oeste, BorderLayout.EAST); contenedor.add(sur, BorderLayout.SOUTH); } /** * Se le asigna a cada uno de los botones la funciones correspondientes */ public void actionPerformed(ActionEvent e) { // Creamos variables locales int res; // Asignamos el evento al boton NUEVO if (e.getSource() == btnNuevo) { // Inicializamos las variables para poder jugar de nuevo hor = 0; min = 0; seg = 0; puntos[0] = 0; palabrasIng[0] = null; chances = 5; // Vaciamos nuestro TextArea y TextField txaArreglo.setText(null); txfIngreso.setText(null); // Cambiamos el texto del LABEL SECUNDARIO lblCorrecto.setText("Empiezas desde 0 " + nombre + "... Suerte!!!"); // Llenamos el TextArea miJuego.llenar(txaArreglo); // Activamos el boton JuGAR btnJugar.setEnabled(true);

25

Proyecto Final de Programacin I


// Desactivamos el boton NUEVO btnNuevo.setEnabled(false); // Empezamos de nuevo el cronometro miCrono.start(); } // Asignamos el evento al boton JUGAR if (e.getSource() == btnJugar) { // Vaciamos nuestro TextField txfIngreso.setText(null); //Activamos nuestro TextField txfIngreso.setEnabled(true); //pintamos de color blanco las letras de nuestro txaArreglo txaArreglo.setForeground(Color.white); //Activamos el boton verificar btnVerificar.setEnabled(true); ///desactivamos el botn jugar btnJugar.setEnabled(false); } // Asignamos el evento al boton VERIFICAR if (e.getSource() == btnVerificar) { // Guardamos los valores de verificacion de la palabra ingresada res = miJuego.verificar(txfIngreso.getText()); // Aplicamos la condicion cuando la palabra sea correcta if (res == 1) { // Si la palabra es correcta las chances disminuyen en UNO chances--; // Guardamos la palabra correcta en nuestro array palabrasIng[chances] = txfIngreso.getText(); // Obtemos el puntaje de la palabra ingresada puntos[chances] = miJuego.puntaje(txfIngreso.getText()); // Si las chances son mayores que UNO... if (chances >= 1) { // Presentamos cuantas

26

Proyecto Final de Programacin I


chances quedan lblCorrecto.setText("Correcto !!!... Oportunidades: " + chances); // Vaciamos el TextArea txaArreglo.setText(null); // Llenamos de nuevo el TextArea miJuego.llenar(txaArreglo); } // Si las chances son 0 if (chances == 0) { //presentamos un mensaje en el LABEL secundario lblCorrecto.setText("Correcto !!!... Da click en Puntaje"); //Desactivamos el boton verificar btnVerificar.setEnabled(false); //Activamos el boton btnPuntaje btnPuntaje.setEnabled(true); //Desactivamos el boton btnJugar btnJugar.setEnabled(false); // Llamamos a los respectivos metodos para saber el tiempo // demorado hor = miCrono.horas(); min = miCrono.min(); seg = miCrono.seg(); } } else { // Cuando la palabra es incorrecta if (res == 2) { //presentamos un mensaje en el LABEL secundario

27

Proyecto Final de Programacin I


lblCorrecto.setText("Incorrecto !!!... Intenta de nuevo..."); // Vaciamos el TextArea txaArreglo.setText(null); // Llenamos de nuevo el TextArea miJuego.llenar(txaArreglo); } // Cuando la palabra es incorrecta else if (res == 3) { //presentamos un mensaje en el LABEL secundario lblCorrecto.setText("Incorrecto !!! Ingresa las 4 letras..."); // Vaciamos el TextArea txaArreglo.setText(null); // Llenamos de nuevo el TextArea miJuego.llenar(txaArreglo); } } //Desactivamos el txfIngreso txfIngreso.setEnabled(false); //pintamos de color negro las letras de nuestro txaArreglo txaArreglo.setForeground(Color.black); //Desactivamos el boton verificar btnVerificar.setEnabled(false); //Si los chances son mayores o igual a 1 if (chances >= 1) //Activamos el boton jugar btnJugar.setEnabled(true); } // Damos el evento if (e.getSource() == btnPuntaje) { //declaramos la variable suma int suma=0; //sumamos el puntaje total for(int x=0; x<5; ++x) suma+=puntos[x]; //presentamos el mensaje

28

Proyecto Final de Programacin I


JOptionPane.showMessageDialog(null, "Felicitaciones " + nombre + "\n" + "Tu tiempo fue de " + hor + " horas " + min + " minutos " + seg + " segundos" + "\n" + "\n" + "Las palabras y tu puntaje son..." + "\n" + palabrasIng[4] + " ------------->>> " + puntos[4] + " puntos" + "\n" + palabrasIng[3] + " ------------->>> " + puntos[3] + " puntos" + "\n" + palabrasIng[2] + " ------------->>> " + puntos[2] + " puntos" + "\n" + palabrasIng[1] + " ------------->>> " + puntos[1] + " puntos" + "\n" + palabrasIng[0] + " ------------->>> " + puntos[0] + " puntos" + "\n" + "Tu puntaje total fue: " + suma , "ProyectoFinal", JOptionPane.INFORMATION_MESSAGE); //desactivamos el boton btnPuntaje btnPuntaje.setEnabled(false); //activamos el boton nuevo btnNuevo.setEnabled(true); } // Damos el evento if (e.getSource() == btnSalir) { // Este metodo confirma algo int i = JOptionPane.showConfirmDialog(null, "Realmente deseas salir del juego???", "ProyectoFinal", JOptionPane.YES_NO_OPTION); // El YES_NO_OPTION permite ver los 2 botones de SI o NO // Si la respuesta en SI cierra el programa 29

Proyecto Final de Programacin I


if (i == 0) { System.exit(0); } } } }

30

Das könnte Ihnen auch gefallen