Escolar Documentos
Profissional Documentos
Cultura Documentos
INDICE Introduccin .3 Marco Terico .4 Cdigo Fuente .5 Clase Tiempo. 5 Clase Cuerpo ..7 Clase ProyectoFinal 9 Conclusiones. 17 Recomendaciones .18
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.
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
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; } /**
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
} }
/** * 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
/** * 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
} }
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
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;
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);
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
// 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); }
} } }
CONCLUSIONES
Este juego nos ayuda a desarrollar nuestra habilidad mental para recordar.
RECOMENDACIONES
Utilizar de preferencia varias clases Seguir perfeccionando el cdigo.