Você está na página 1de 20

MEMORY LETTERING

MANUAL DEL PROGRAMADOR

Manual del 2Programador

INDICE Introduccin .3 Marco Terico .4 Cdigo Fuente .5 Clase Tiempo. 5 Clase Cuerpo ..7 Clase ProyectoFinal 9 Conclusiones. 17 Recomendaciones .18

Manual del 3Programador

Manual del 4Programador

INTRODUCCIN
El juego pondr a prueba tu memoria. El juego consiste en recordar una letra de cada fila que va a estar situado en la parte izquierda y escribirla tiene que ingresar 5 veces correctamente. Despus de haber acertado 5 veces presenta cual es el puntaje y en qu tiempo lo a logrado.

Manual del 5Programador

MARCO TERICO
Import: Sirve Para importar clases de un paquete .Se puede importar una clase individual, o bien, se puede importar las clases declaradas pblicas de un paquete completo public class: Estamos indicando que esta clase es publica Math.round((float) :Redondea un valor decimal al entero ms prximo Math.random( ): Me genera nmeros aleatorios return (char): Retorna un valor de tipo char BoxLayout: Me permite poner los componentes de forma vertical append: Permite aadir texto for: Consiste en repetir N veces un bloque de acciones If, else: Con eso podes hacer comparaciones Int: La variable es de tipo entero charAT: Para revisar una cadena de texto letra por letra showInputDialog: Me permite escribir un mensaje showMessageDialog: Muestra el cuadro del mensaje del dialogo setMaximunSize: Sirve para establecer un tamao setSize: Establece el tamao del JFRAME setForeground: Da color al texto de un componente setVisible: Hace visible un componente setTitle: Cambia el ttulo del JFRAME getText: Obtenemos el texto de un componente setText: Cambiamos el texto de un componente

Manual del 6Programador

setEnabled: Cambia la Habilitacion de un componente this: Sirve para obtener variables de esa clase getContentPane: Obtiene el contenedor de nuestro JFRAME setLayout: Cambia el Layout de un contenedor setToolTipText: Emite un mensaje de ayuda al pasar el mouse sobre un componente addActionListener: Agrega un escuchador a un componente getSource: Obtenemos un escuchador

CODIGO FUENTE
Clase Tiempo
package Proyecto; /** * 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; } /**

Manual del 7Programador


* 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; }

Manual del 8Programador

Clase Cuerpo
package Proyecto; 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) { 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

Manual del 9Programador


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) { for (int x = 0; x < 4; ++x) { for (int y = 0; y < 5; ++y) { // Compara cada letra ingresada con cada letra // la matriz if (txfIngreso.charAt(x) == palabra[x][y]) { // Si la comparacion se da, aumentamos // auxiliar aux++; // Rompemos el segundo FOR y // siguiente letra a comparar break; } la } } // Si AUX es 4, entonces quiere decir que cada letra estuvo en // fila comparada if (aux == 4) // Asignamos un bandera para saber que cuando es // 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

de la fila de

en 1 una variable

continuamos con la

correcto el

incompleta o

Manual del 10Programador


// demasiado extensa k = 3; } // Retornamos el valor de la bandera 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 // 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 // frecuentes else if ((txfIngreso.charAt(m) == 'B') || (txfIngreso.charAt(m) == 'F') || (txfIngreso.charAt(m) == 'N') || (txfIngreso.charAt(m) == 'O') || (txfIngreso.charAt(m) == '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 terGrupo = terGrupo + 10; } // Sumamos todos los puntejes parciales punTotal = (punTotal + (primGrupo + segGrupo + terGrupo)); // Retornamos el puntaje total return punTotal;

que mas

poco

10

} }

Manual del 11Programador

Clase ProyectoFinal
package Proyecto; 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; 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

Manual del 12Programador


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 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 cambiar // los componentes que queremos agregar // El BOXLAYOUT recibe 2 parametros: el panel al que le queremos // 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();

Manual del 13Programador


// 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"); // 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 ensamblaje(); // Desactivamos en un principio los siguientes botonnes indicados btnPuntaje.setEnabled(false); btnNuevo.setEnabled(false); btnVerificar.setEnabled(false); txaArreglo.setEditable(false); txfIngreso.setEnabled(false);

Manual del 14Programador


// 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();

orden

/** * Ensambla cada uno de los componentes de la ventana colocandolos en */ // 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); // Agregamos al panel oeste nuestro boton btnVerificar oeste.add(btnVerificar); // Agregamos en cada zona de nuestro contenedor principal los paneles el // Atravez de BorderLayout.NORTH agregamos en el NORTE, asi para // 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;

Manual del 15Programador


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 + "... // Llenamos el TextArea miJuego.llenar(txaArreglo); // Activamos el boton JuGAR btnJugar.setEnabled(true); // Desactivamos el boton NUEVO btnNuevo.setEnabled(false); // Empezamos de nuevo el cronometro miCrono.start();

Suerte!!!");

// 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 chances quedan lblCorrecto.setText("Correcto !!!... Oportunidades: " + chances); // Vaciamos el TextArea txaArreglo.setText(null);

Manual del 16Programador


// Llenamos de nuevo el TextArea miJuego.llenar(txaArreglo); } // Si las chances son 0 if (chances == 0) { //presentamos un mensaje en el LABEL lblCorrecto.setText("Correcto !!!... Da click en //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 lblCorrecto.setText("Incorrecto !!!... Intenta de // 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 letras..."); lblCorrecto.setText("Incorrecto !!! Ingresa las 4 // Vaciamos el TextArea txaArreglo.setText(null); // Llenamos de nuevo el TextArea miJuego.llenar(txaArreglo); }

secundario Puntaje");

secundario nuevo...");

} } //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

Manual del 17Programador


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 JOptionPane.showMessageDialog(null, "Felicitaciones " + nombre min + "\n" + "Tu tiempo fue de " + hor + " horas " + + " minutos " + seg + " segundos" + "\n" + "\n" + "Las palabras y tu puntaje son..." + "\n" + palabrasIng[4] + " ------------->>> " + + " puntos" + "\n" + palabrasIng[3] + " + puntos[3] + " puntos" + "\n" + palabrasIng[2] + " ------------->>> " + puntos[2] + " puntos" + + palabrasIng[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 if (i == 0) { System.exit(0); }

puntos[4] ------------->>> " "\n" puntos[1] ------------->>> "

} } }

Manual del 18Programador

CONCLUSIONES
Este juego nos ayuda a desarrollar nuestra habilidad mental para recordar.

Manual del 19Programador

Manual del 20Programador

RECOMENDACIONES
Utilizar de preferencia varias clases Seguir perfeccionando el cdigo.

Você também pode gostar