LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
Informe proyecto trivia java
1. UNIVERSIDAD TECNICA PARTICULAR DE LOJA
La Universidad Católica de Loja
Escuela de Ciencias de la Computación
Carrera de Sistemas Informáticos y Computación
Programación de Algoritmos
Profesional en Formación:
Castillo Cevallos Miguel Eduardo
Docente:
Ing. Quezada Sarmiento Pablo Alejandro
Loja – Ecuador
2012
2. CONTENIDOS
Tabla de contenidos…………………………………………………………….... I
Tema……………………………………………………………………………... Ii
Objetivos…………………………………………………………………………… Iii
Justificación………………………………………………………………………... Iv
Alcance…………………………………………………………………………...... Vi
Limitaciones………………………………………………………………….......... Vii
Marco Teórico……………………………………………………………………... 1
Análisis y diseño de la aplicación……………………………………………….. 13
Análisis de Requisitos…………………………………………………….. 13
Análisis y Diseño preliminar……………………………………………… 16
Diseño………………………………………………………………………. 22
Implementación…………………………………………………………… 26
Arquitectura de la aplicación grafica y descripción de componentes……….. 29
Prototipos…………………………………………………………………………... 34
Descripción de la aplicación……………………………………………………... 36
Codificación………………………………………………………………………... 37
Conclusiones………………………………………………………………………. 47
Recomendaciones………………………………………………………………… 50
Bibliografía…………………………………………………………………………. 51
i
4. OBJETIVOS:
◦ General:
Hacer uso de un juego de trivia para ayudar en la formación de los
estudiantes de la Escuela de Sistemas Informáticos y Computación
de la Universidad Técnica Particular de Loja.
◦ Específicos:
Fortalecer los conocimientos en el uso de ficheros en java
Ayudar a fortalecer los conocimientos en computación de los
estudiantes con el uso de un juego de trivia.
Fortalecer los conocimientos del uso de interfaces graficas en
Java.
iii
5. JUSTIFICACION
Los juegos en donde se pone a prueba la capacidad de razonamiento y
memoria de los estudiantes son muy utilizados en la actualidad como y una
herramienta en el aprendizaje.
Anteriormente se creía que el tiempo que las personas utilizaban para jugar era
una perdida de tiempo y no se adquirían conocimientos durante este tiempo; es
decir era tiempo que el estudiante perdía.
Esta afirmación depende del tipo de juegos que se le presente al estudiante
sea este del nivel que sea; ya que el juego logra estimular los sentidos de los
estudiantes para poder lograr superarse en el mismo, de manera que puedan
subir en los niveles en el juego y así poder organizar competencia en donde se
comparara los puntajes obtenidos o niveles alcanzados por cada uno de los
estudiantes.
En la actualidad en algunas instituciones educativas se usa el juego como un
método para el reforzamiento en el proceso de la educación de niños y
jóvenes; entonces contrario a lo que se pensaba anteriormente sobre el juego
quedaron desechadas ya se con la ayuda de este se pudo reforzar
En base a estos antecedentes se pensó en el desarrollo de este proyecto para
que sea usado a manera de herramienta de reforzamiento de los
conocimientos en la materia de Programación de Algoritmos. El presente
proyecto constara de diferentes categorías en las cuales se encontrara una
serie de preguntas que podrán ser cambiadas de manera muy sencilla debido a
la utilización de ficheros que permitan un mejor manejo de las mismas.
El uso de ficheros para la realización de este proyecto fue para poder tener un
mejor manejo del espacio durante la ejecución de la aplicación, debido a que si
cargamos toda la información que contiene los ficheros en la memoria de la
computadora podemos hacer que esta sea mas lenta al momento de la
realización de los procesos de la aplicación o podemos con ello provocar que el
computador se cuelgue y se dañen todas las actividades que se encuentre
realizando el usuario al momento de la ejecución del mismo.
iv
6. Se pensó hacerlo utilizando ficheros de manera que el profesor, tutor o
cualquier usuario pueda realizar cambios en las preguntas sin la necesidad
que al momento de hacer los cambios este presente un programador. Esto
ayudara al usuario final a tener varias posibilidades de cambios en el programa.
Otra de las ventajas que tanto el usuario final como el programador tienen al
usar ficheros es que para la corrección de errores en las preguntas u opciones
no se tiene que revisar todo el código para encontrar las líneas de código a
modificar si no que se realizaran en el fichero, en el cual podemos utilizar las
opciones de búsqueda que tienen cada uno de los programas que se usan para
la administración de los mismos
v
7. ALCANCE
El alcance del presente proyecto se definirá de la siguiente manera:
La aplicación que se desarrollara en el lenguaje de programación java con el
uso de Netbeans es un juego de trivia en java en cual tendrá algunas
características que se irán detallando durante el desarrollo del presente
alcance.
La aplicación constara de una primera ventana en donde se dará la bienvenida
al usuario con un botón para poder ingresar al juego, luego de ello se le
presentara al usuario una ventana en donde deberá poner el nombre que lo
identificara durante el juego, una vez que se haya seleccionado el nombre, y
pulsado el botón de JUGAR al usuario se le presentara la ventana del juego
propiamente dicha en donde tendremos los siguientes elementos gráficos:
Un panel con los nombres y puntuación de todos los jugadores resaltado
en negrita el jugador activo
Se encontrara junto al panel de Datos de Jugadores tendrá el panel con
las diferentes opciones de categorías con las que cuenta el juego.
En la parte inferior al panel de Datos de Jugadores se encontraran los
botones de opción correspondientes a las apuestas que se puede
realizar.
En la parte baja de la aplicación tendremos 2 partes; en la parte
izquierda tendremos las preguntas que serán seleccionadas de forma
aleatoria con sus respectivas opciones. La pregunta se presentara en un
etiquetas y las opciones serán presentadas en botones de opción en
donde el usuario podrá seleccionar la respuesta que considere correcta,
también se tendrá un botón en donde el usuario podrá comprobar sus
respuestas. En la segunda parte o parte izquierda tendrá un cuadro con
un mensaje que mostrara si su respuesta es correcta o incorrecta, este
panel a su vez cambiara también de color sea su respuesta.
Como ya se indico anteriormente para el manejo de las preguntas se usaran
ficheros por su facilidad de realizar cambios sin la necesidad de modificar el
código fuente de la aplicación. Es decir el juego se convertiría en un juego
vi
8. netamente dinámico ya que si el usuario considere que las preguntas que tiene
la aplicación no están acordes con sus necesidades, se podrá hacer los
cambios respectivos sin la necesidad de que este recurra a un gasto
económico para que un programador realice los cambios en el código fuente de
la aplicación debido a que esto representaría un uso de recursos tanto en
tiempo como en dinero para el usuario, debido a que no podría tener listo el
material para su clase por la dificultad para realizar los cambios en la
aplicación.
vii
9. LIMITACIONES
Dentro de las limitaciones que pueden darse durante el transcurso del
desarrollo del presente proyecto están las siguientes:
Las rutas de los ficheros deben ser tratadas de forma absoluta de
manera para evitar errores de archivos no encontrados.
El control de las excepciones que se puedan dar debido a los ficheros.
El control de las excepciones que se puedan dar debido a la utilización
de interfaces graficas.
El programa solo podrá ser usados en ordenadores con sistemas
operativos Windows
El nombre de las categorías debe ser cambiado desde el código de la
aplicación.
La versión de la maquina virtual de java (JVM), debe ser la misma con la
que se desarrollo la aplicación.
viii
10. MARCO TEORICO
Entre los conceptos que se usaran para el desarrollo del siguiente proyecto
están los siguientes:
TRIVIA
Se denomina trivia a una pregunta o serie de preguntas con tres opciones de
respuesta que normalmente van enfocadas a un concurso
EXCEPCIONES EN JAVA
Se conoce con el nombre de excepción a una condición anormal que surge en
una secuencia de código durante la ejecución de un programa
Para la gestión de errores java cuenta con palabras reservados como son:
try/catch/finally/throw/throws; están se analizaran mas adelante.
Cuando un método provoca una excepción, tiene una de las 2 siguientes
posibilidades:
Gestionarla el mismo.- Es decir, el método en donde ocurrió la excepción
deberá capturarlo o detectarlo al error producido y tratar de darle una solución.
Pasarla a otro método.- El método que ha producido un error tiene la
posibilidad de pasar el objeto tipo excepción al método que lo invocase.
Una excepción puede ser producida por el intérprete de Java o por el código.
La gestión de las excepciones en Java se realiza mediante un conjunto de
palabras reservadas propias de los lenguajes de programación.
Todas las excepciones en Java son subclases de la clase Throwable que se
divide en 2 partes que son:
Exception
Esta es aquella que representa excepciones que deben capturarse y tratarse.
Una de las subclases de Exception es RuntimeException de la cual heredan
otras excepciones.
Error
Esta en cambio representa errores graves que generalmente no están
controlados y por consiguiente provocan que la aplicación se detenga.
1
11. Entre las excepciones más comunes se pueden encontrar las siguientes:
IOException.- Problema de entrada o salida de datos
ArithmeticException.- Desbordamiento o división para cero
NumberFormatException.- Conversión ilegal de un String a un entero.
IndexOutOfBoundsException.- Acceso a un elemento inexistente de un
vector o de un String
NegativeArraySizeException.- Intento de creación de un vector con
longitud negativa.
NullPointerException.- Intento de uso de una referencia nula
SecurityException.- Violación de la seguridad en tiempo de ejecución.
UML
Analizaremos gran parte de lo que es UML debido a que se usara mas
adelante como una herramienta para el desarrollo del presente proyecto.
Se conoce como UML a un lenguaje de modelo visual de propósito general
orientado a objetos; el cual agrupa notaciones y conceptos provenientes de
distintos tipos de métodos orientados a objetos
Podemos citar 2 características importantes UML que son:
UML es independiente del proceso de desarrollo
Cubre las diferentes vistas de la arquitectura de un sistema.
Ahora analizaremos algunas de las ventajas y desventajas que tiene UML
o Es estándar
o Se basa en el metamodelo con una semántica bien definida
o Basado en una notación grafica que es concisa, de fácil aprendizaje y uso.
o Se puede usar para el modelado de sistemas de software en distintos
dominios.
o Es fácil extenderlo
Las anteriormente descritas son algunas de las ventajas que ofrece UML,
ahora veremos algunas de las desventajas del mismo.
o No es una metodología
o No cubre todas las necesidades de especificación de un software
o Puede resultar complejo alcanzar un conocimiento completo del lenguaje.
2
12. Entre los tipos de diagramas UML que existen vamos a analizar aquellos que
van a ser parte importante de la metodología a utilizar (ICONIX). Entre ellos
tenemos:
Diagrama de secuencia
Los diagramas de secuencia son aquellos que modelan el flujo de la lógica
dentro del sistema de forma visual, permitiendo al programador la
documentación y validación. Pueden ser usados tanto en etapas de análisis así
como en las de diseño.
La secuencia puede expresar un caso de uso en completo o quizá un caso de
uso concreto del mismo, en el cual se pueden contemplar alternativas. Los
diagramas de secuencia también nos ayudan a identificar cual de las clases de
sistema van a ser las mas complejas de implementar.
Los diagramas de secuencia poseen 2 características que los distinguen de los
demás.
La línea de vida.- Que es aquella que representa la existencia de un objeto a
lo largo de un periodo del tiempo. Mediante el uso de la línea de vida se puede
indicar la creación o destrucción de objetos o roles durante una iteración.
Foco de control o barra de activación.- Es aquella que representa el periodo
de tiempo durante el cual un objeto realiza la ejecución de una acción
Su representación en la línea de tiempo es un rectángulo que tiene las
siguientes características: la parte superior se alinea con el principio de la
acción, en cambio la parte inferior se alinea con la terminación, la cual puede
tener un mensaje de retorno
Los focos de control no son necesarios colocarlos en el diagrama de
secuencia, es decir son opcionales. Gracias al foco de control se puede
observar el anidamiento de las llamadas
Una vez que hemos analizado algunas de las características que tienen los
diagramas ahora analizaremos los elementos que tienen los mismos, entre los
que están:
3
13. Objeto: Dentro de los diagramas de secuencia se le conoce como objeto a
una instancia de una clase que se puede empezar a identificar como
participante en la secuencia de operaciones que representa un caso de uso.
Actor: En cambio los actores son aquellos que pueden establecer
comunicación con los objetos, por esta razón formaran parte de este
diagrama.
Vida de objeto: Se indica la existencia de un objeto mediante el uso de una
línea discontinua, el fin del mismo se lo indica con un aspa.
Activación: Este elemento es aquel que nos indica cuando un objeto se
encuentra realizando una acción en concreto.
Mensaje: Al mensaje se lo pueden definir como la comunicación entre los
objetos y sus actividades.
Diagrama de clases
El diagrama de clases es el mas conocido de todos los diagramas UML es
aquel que nos permite la identificación de la estructura de clases del sistema en
donde se incluye las propiedades y métodos de cada una de las clases
Este tipo de diagrama tiene solo 2 elementos que son las clases y relaciones.
Las clases en este diagrama se representan con un rectángulo divido en 3
parte en la parte superior va el nombre de la clase, en el rectángulo siguiente
van los atributos y en el ultimo en cambio irán los métodos de esta clase.
Para el análisis de las relaciones que pueden existir entre las clases se las
dividirá de la siguiente manera: Asociación, Composición, Dependencia,
Generalización.
Asociación.- Esta es aquella que representa la relación genérica que existe
entre 2 clases y la notación es muy simple ya que es una línea que las une en
donde se puede indicar la multiplicidad que existe entre las 2 clases.
Composición, agregación.- Se habla de composición cuando una clase esta
compuesta de otras, donde las ultimas no pueden existir sin la primera. La
agregación en cambio se da cuando una clase incluye a la otra, pero la clase
incluida tiene entidad en si misma.
4
14. Dependencia.- Se habla de dependencia cuando una clase depende de la otra
en el sentido que la una clase la usa a la otra como atributo o parámetro de
algún método.
Generalización.- Se habla de generalización cuando es equivalente a la
herencia o extensión tal como se ve en otros diagramas.
Diagramas de casos de uso
Los diagramas de casos de uso son aquellos que muestran no solo un caso de
uso sino todos los casos de uso de un sistema dado. Un caso de uso individual
que se representa con un ovalo con su nombre, representa a su vez un tipo de
tarea que tiene que soportar el sistema en el desarrollo.
El diagrama de casos de uso muestra solo una parte de la información que se
necesita, los diagramas de casos de uso se pueden ver como un resumen
conciso de la información que contiene en todas las descripciones de los casos
de uso.
A mas de la representación del caso de uso mediante un ovalo tenemos la
representación de un actor que es otra de las piezas claves en este diagrama,
este en cambio se representa como un muñeco, en estos diagramas también
podemos encontrar una línea que es la conexión entre el actor y los casos de
uso.
Fig. 1
En la figura anterior podemos observar un ejemplo de un diagrama de uso para
una aplicación.
5
15. FICHEROS EN JAVA
Un archivo o fichero se puede definir como una colección de datos
homogéneos que se almacenan en un soporte físico del computador que puede
ser permanente o volátil.
Algunas características generales que se deben tener en cuenta por el
programador antes de utilizar este tipo de estructuras, estas son las siguientes:
Todos los elementos de un fichero poseen una determinada posición dentro
de la secuencia de datos.
El tamaño de un fichero a diferencia de otro tipo de estructuras no es fijo,
pudiendo cambiar de forma dinámica el numero de elementos que
almacena
Cada uno de los ficheros podrá ser referenciado dentro del programa
mediante un identificador, que se utilizara como una referencia lógica al
fichero físico, o real, que se encuentra almacenado dentro de la memoria.
En cada una de las operaciones de lectura/escritura sobre un fichero solo
podrá leerse/escribirse un único registro.
Las operación que se realicen para el acceso a la información de un fichero
pueden realizarse de 2 formas diferentes:
Acceso secuencial
Acceso directo o aleatorio.
Como en todas las operaciones dentro un lenguaje de programación tenemos
algunas clases básicas para la manipulación de los ficheros las cuales se
resumirán el siguiente cuadro.
6
16. En el cuadro anterior se pueden observar algunas de las clases de
excepciones que se pueden dar durante el manejo de los ficheros en java.
Los programas en java realizan la apertura de un archivo creando un objeto el
cual se asociara a un flujo de bytes o caracteres. El lenguaje de programación
java crea tres objetos flujo los cuales se asocian con dispositivos cuando un
programa java empieza su ejecución; estos son: System.in, System.out,
System.err.
System.in.- Es aquel que permite a un programa recibir bytes desde teclado.
System.out.- Es aquel que permite a un programa mostrar datos por pantalla.
System.err.- Es aquel que permite a un programa mostrar un mensaje de error
en la pantalla.
Claro que no siempre se aplica las definiciones antes descritas ya que cada
uno de estos flujos tiene la capacidad de redirigirse. Es así como System.in
tiene la capacidad de leer bytes desde un origen distinto, los otros 2 en cambio
pueden permitir que la salida se envié a una ubicación distinta, como por
ejemplo a un archivo en disco. La clase System proporciona algunos métodos
para la redirección de flujos estándar de entrada, salida y error como son: setIn,
setOut y setErr.
El manejo de los archivos en java se da gracias a las clases del paquete java.io
el cual posee definiciones para las clases de flujos como las siguientes:
FileOutputStream
FileReader
FileWriter
7
17. Todos los archivos se abren gracias a que se crean objetos de estas clases de
flujos, que heredan de las siguientes clases:
InputStream
OutputStream
Reader
Writer
Para la realización de entrada y salida de datos pueden usarse objetos de las
clases siguientes:
ObjectInputStream
ObjectOutputStream
FileInputStream
FileOutputStream
Para las operaciones de entrada y salida que se basan en caracteres se las
puede llevar a cabo con las siguientes clases:
Scanner
Formatter
La primera se usa en forma extensa la cual recibe datos desde teclado, claro
que también puede ser usada para leer datos desde archivos; la segunda en
cambio permite la visualización de datos con formato por pantalla o enviarlos a
un archivo.
JAVA
Java es un lenguaje de programación y la primera plataforma informática que
fue desarrollada por Sun Microsystem en 1995. Es la tecnología que permite el
uso de programas punteros como herramientas, juegos y aplicaciones.
Java Virtual Machine es únicamente un aspecto del software de Java, que es
utilizado específicamente para interacción en la web.
8
18. ARREGLOS EN JAVA
Se conoce como un arreglo a una colección de elementos que son del mismo
tipo agrupados bajo un nombre de variable, a los cuales se los puede
diferenciar entre si por el numero de índice, cada celda de este tipo de
variables es numerada del 0 hasta n-1; donde n es la longitud del arreglo.
A los vectores que poseen una sola dimensión se les conoce como arreglos
unidimensionales o vectores; en cambio a los arreglos que pueden tener 2
dimensiones se les conoce como arreglos bidimensionales o matrices.
A un arreglo se lo puede declarar de varias maneras entre las que están:
Int calif [ ] = new int [50];
String diaSem [ ] = {“lun”,”mar”,”mie”,”jue”,”vie”,”sab”};
Los 2 ejemplos anteriores son formas correctas de declarar un arreglo. A
continuación se va a analizar como se puede obtener el tamaño de un arreglo.
La dimensión de un arreglo se lo puede obtener mediante la siguiente
sentencia:
Int longitud = arreglo.length;
Lo que se ha hecho es declarar una variable longitud en donde se almacenara
la longitud de dicho arreglo después colocamos nombre del arreglo seguida de
un punto y la palabra reservada length que nos retornara el tamaño del arreglo.
A un arreglo se lo puede recorrer mediante un ciclo repetitivo con el fin de tener
acceso a cada una de las posiciones del mismo.
JAVA.IO
Java.io es un paquete de clases el cual provee la entrada y salida del sistema a
través de flujos de datos Serialización y sistemas de archivos. Entre las clases
que posee este paquete para el manejo de información se analizaran las que
van a ser usadas en el presente proyecto.
FileWriter.
La clase FileWriter ayuda a que sea posible escribir un archivo como una
secuencia de caracteres. La clase FileWriter se basa en caracteres, la clase
FileWriter posee constructores que permiten especificar el archivo para la
escritura de diversas formas.
9
19. Si en el supuesto caso de que el archivo que se especifica ya existe entonces
este se sobrescribe.
IOException.
La clase IOException del paquete java.io se nuestra cuando un error de
entrada o salida de datos a ocurrido. La clase IOException es una clase
general para las excepciones de entrada o salida de datos
BufferedReader.
La clase BufferedReader es la encargada de leer el texto de un flujo de
caracteres de entrada, el tamaño del buffer puede ser especificado o puede
usarse el tamaño por defecto el cual es lo suficientemente grande como para la
mayor parte de los propósitos.
MÉTODOS EN JAVA
En java un método es un bloque de código que se define dentro de una clase
que proporciona un mecanismo para la realización de una acción. Un método
tiene acceso a todos los atributos de su clase.
En java un método puede llamar a otro método; pero no se puede definir un
método dentro de otro; un programa realizado en java se ejecuta partiendo de
su método main.
Definición de métodos
Un método se lo puede definir de la siguiente manera:
<tipo de retorno> <nombre método> (<parámetros>…) {
Instrucciones…
}
En donde <tipo de retorno> es en donde se encontrara el tipo de valor que
devolverá el método, en <nombre método> se escribe el nombre del método;
<parámetros> esta parte de la declaración de los método encontraremos todos
los parámetros que usara el método los cuales se componen de un tipo y un
argumento y que son separados por comas.
10
20. El ultimo de los componentes de un método son las <instrucciones> las
instrucciones son aquellas que implementan la tarea que debe realizar el
método.
Si el método usado va a devolver un valor debe finalizar con la palabra
reservada return. El valor que vaya seguido de la palabra return debe ser el
mismo del tipo de retorno que se puso al momento de crear el método. Dentro
de cada uno del método se pueden declarar variables locales según sea el
caso.
La finalización de la ejecución de un método es hasta llegar a la palabra
reservada return o hasta llegar al final del método.
Métodos que no retornan valor
Aquellos métodos que no regresan valor son aquellos que ejecutan
operaciones especificas y no poseen la palabra reservada return dentro de las
funcionalidad del método, estos método poseen en su parte de tipo de retorno
tienen la palabra void.
Metodos que retornan valor
Estos metodos además de ejecutar operaciones especificas poseen la palabra
reservada return dentro de las funcionalidades del metodo, además en la parte
de tipo de retorno debe ir el tipo de dato que el metodo devolverá.
Variables
Se conoce como variable a un valor modificable, son nombres que representan
un valor de un determinado tipo y el valor asociado al nombre se puede variar.
Dentro de las aplicaciones en java se pueden considerar 2 tipos de variables:
globales y locales.
Variables globales
Un algoritmo que usa métodos, se pueden declarar variables tanto dentro de la
clase antes de los métodos o de manera local en cada uno de los métodos. A
las variables que se definen antes de la declaración de los métodos se les
conoce como variables globales o variables de clase, estas pueden ser usadas
por cualquier método de la clase.
11
21. Variables locales
Las variables locales a diferencia de las variables locales se definen dentro de
cada uno de los métodos que puede tener una clase, estas variables pueden
ser usadas por el método en donde fueron definidas.
Parámetros.
Se conoce como procedimiento a una variable que puede pasar su valor a un
procedimiento a partir del principal o de otro procedimiento. Dado que en
ocasiones es necesario mandar a un procedimiento ciertos valores para que
estos sean usados en algún proceso es aquí donde se usan los parámetros.
Dentro de la programación en java se puede considerar 2 tipos de parámetros:
parámetros por referencia, parámetros por valor.
Parámetros por referencia
A los parámetros por referencia también se les conoce como parámetros
variables, son variables locales de un método que se definen como parámetros
dentro del encabezado del mismo, esta sirve de conexión con otra variable a
través de su contenido, al momento de llamarse o invocarse el método es el
que establece la conexión, esto significa que si se le hace algún cambio a la
variable local del método llamado lo mismo le sucederá a la variable del
método con la cual fue conectada; esto se debe a que ambas ocupan la misma
posición de memoria.
Parámetros por valor
Es una variable local de un método que se define como parámetro en el
encabezado del mismo y sirve de conexión entre otra variable de otro método
mediante el envió de su valor, al momento que se hace la llamada del método
se rompe la relación de estas variables; después de esto lo que le suceda a la
variable que paso como parámetro no afectara a la otra variable.
12
22. ANALISIS Y DISENO DE LA APLICACIÓN EN FUNCIÓN DE UNA
METODOLOGIA DE LA PROGRAMACIÓN ICONIX
Antes de comenzar el análisis de la aplicación usando el método escogido se
hará un análisis del método escogido de manera que se puede tener una idea
clara de como se va a trabajar en la aplicación con el uso de este método.
El método ICONIX se lo define como un proceso de desarrollo practico, este
método se encuentra entre la complejidad que presenta y la simplicidad que
posee el XP, esto es sin descartar el análisis y el diseño que XP no tiene
contemplado.
Al ser ICONIX un proceso simplificado en comparación con otros procesos
tradicionales, los cuales unifican un conjunto de métodos de orientación a
objetos esto se hace con el objetivo de abarcar todo el ciclo vida del proyecto.
Las tareas que realiza el método ICONIX son las siguientes:
Análisis de requisitos
Análisis y diseño preliminar
Diseño
Implementación
Como se pueden ver las tareas del método ICONIX con 4 en las cuales se
pretende abarcar todo lo necesario para que la aplicación desarrollada se
encuentre acorde con las necesidades del jugador. Sin mas en adelante con
concentraremos en aplicar estas tareas para el desarrollo de nuestra aplicación
1. Análisis de requisitos
1.1. Requerimientos de los usuarios
En el análisis de requisitos de nuestra aplicación se tomara en cuenta
los requisitos que los usuarios considerarían para que un juego tenga la
debida aceptación entre sus consumidores. Entre dichos requerimientos
tendremos los siguientes:
1. El juego tiene que ser de fácil acceso
2. Debe permitir al usuario elegir el nombre que usura al largo del juego
13
23. 3. Debe permitir al usuario observar cual es su puntuación durante el
juego
4. Debe permitir al usuario elegir la categoría sobre en la cual desea
participar
5. Debe permitir al usuario la cantidad de puntos que juega en cada
ronda de preguntas.
6. Debe permitir al usuario el poder verificar si la respuesta ingresada
es la correcta.
7. Debe permitirle al usuario poder salir del juego cuando este así lo
quisiera.
8. Debe presentarle al usuario los resultados del juego antes de salir
completamente del juego.
9. Debe permitir al usuario jugar contra la computadora.
1.2. Prototipación Rápida
En esta fase del análisis de requisitos se presentaran de manera rápida
un prototipo de diseño de lo que será nuestra aplicación.
Cabe mencionar que las interfaces que se presentan a continuación
están sostenidas a cambios que se darán durante en desarrollo de la
aplicación.
1.2.1. Interfaz de usuario. Bienvenida a la aplicación
Fig. 1. Bienvenida al juego
14
24. 1.2.2. Interfaz del usuario. Nombre de los jugadores
Fig. 2. Ingreso de nombres de jugadores
1.2.3. Interfaz de usuario. Interfaz Principal
Fig. 3. Interfaz del juego
Esta es la interfaz que se presentara antes de que los jugadores empiecen a
jugar.
15
25. 1.2.4. Interfaz de usuario. Interfaz Final.
Fig. 4. Información de resultados del juego
2. Análisis y diseño preliminar
En esta segunda etapa de la metodología ICONIX consiste en los procesos
que desarrollara nuestro juego, se procederá a la realización de los
diagramas necesarios para que reflejen las interfaces de usuario que se
presentaron en el literal anterior.
2.1. Diseño de diagramas de casos de uso
Antes de analizar los diagramas de casos de uso debemos tener en
consideración, que en el caso de jugar contra la computadora esta será
el jugador 1 y los demás jugadores le seguirán según el orden
ingresado.
2.1.1. Caso de uso. Ingreso de 2 o 3 jugadores.
Fig. 5. Caso de uso. Ingreso de 2 o 3 jugadores
16
26. Descripción de caso de uso. Ingreso de 2 o 3 Jugadores
Los jugadores realizan el registro en el juego colocando el nombre
con el que se identificaran a lo largo del juego. Luego de que hayan
ingresado sus nombres en los campos respectivos podrán ingresar.
2.1.2. Caso de uso. Seleccionar Apuesta
Fig. 6 Caso de uso. Seleccionar Apuesta
Descripción de caso de uso. Seleccionar Apuesta
Una vez que los jugadores ingresaron al juego mediante el ingreso
de sus nombres, podrán ver la interfaz de usuario en donde podrán
seleccionar la apuesta por la pregunta que la aplicación les hará
dependiendo de la categoría que hayan seleccionado.
2.1.3. Caso de uso. Seleccionar Categoría.
Fig. 7. Caso de uso. Seleccionar Categoría.
17
27. En esta caso de uso como se podrá observar los jugadores una vez
que seleccionaron una apuesta para la ronda de preguntas
correspondientes entonces tendrán que seleccionar la categoría de
la cual la aplicación seleccionara una pregunta la cual tendrá que
contestar el usuario según las opciones que tenga la misma.
2.1.4. Caso de uso. Contestar Pregunta.
Fig. 8. Caso de uso. Contestar Pregunta
Descripción de caso de uso. Contestar Pregunta.
Como se podrá ver en la Fig. 8 para la elaboración del “Caso de
uso. Contestar Pregunta”, se ha unificado este caso de uso con el
anterior; Una vez que se haya seleccionado la categoría de la
pregunta la aplicación le mostrara al usuario una pregunta con 3
opciones de respuesta la cual deberá contestar. La aplicación le
permitirá al usuario verificar su respuesta y ver la puntación que le
corresponde por la misma.
2.2. Diagramas de Robustez
Los diagramas de robustez se hacen con el fin de ilustrar de manera
grafica las interacciones entre los objetos participantes de los casos de
uso.
18
28. Para la elaboración de los diagramas de robustez es muy necesario
completar el paso anterior, es decir la identificación y graficación de los
casos de uso ya que en base a estos se hará los diagramas de
robustez.
2.2.1. Diagrama de robustez. Ingreso Jugadores
En el diagrama de robustez del ingreso de jugadores se ha tomado
en cuenta lo siguiente.
Se dirige a la interfaz Opciones Jugadores e ingresa los
nombres de los jugadores.
Se obtienen los nombres.
Para ello se revisa que todos los campos que están
destinados para el nombre se encuentren llenos.
Si los campos de nombres no están llenos el programa
lanzara una advertencia y nos llevara de nuevo a la interfaz
para ingresar los datos faltantes.
Si los campos de nombres están llenados entonces el
programa nos llevara a la siguiente parte del juego en donde
nos mostrara el nombre del jugador.
Fig. 9 Diagrama de robustez. Ingreso Jugadores
19
29. 2.2.2. Diagrama de robustez. Seleccionar Apuesta
En el diagrama de robustez de seleccionar apuesta se ha tomado
en cuenta lo siguiente.
Se dirige a la interfaz Trivia en la cual se ingresa el valor de
la apuesta correspondiente.
Se obtiene el valor de la apuesta.
Se comprueba que al menos uno de los valores de apuesta
este seleccionado.
Si ninguno de los campos de apuesta esta seleccionado se
lanzara una advertencia pidiendo que se seleccione la
apuesta.
Fig.10 Diagrama de robustez. Seleccionar Apuesta
2.2.3. Diagrama de robustez. Seleccionar Categoría
En el diagrama de robustez de seleccionar categoría se ha tomado
en cuenta lo siguiente:
Se dirige a la interfaz trivia en la cual el usuario deberá
pulsar en el botón correspondiente a la categoría que desee
jugar.
Se obtiene el nombre de la categoría.
Si ningunos de los botones de la categoría es pulsado el
jugador no podrá avanzar en el juego.
20
30. Fig. 11. Diagrama de robustez. Seleccionar Categoría
2.2.4. Diagrama de robustez. Contestar Pregunta
En el diagrama de robustez de contestar pregunta se ha tomado en
cuenta lo siguiente:
Se dirige a la interfaz trivia, en donde el jugador seleccionar
la respuesta que considere correcta.
Se obtiene la respuesta del usuario.
Se consulta con el fichero correspondiente a las respuestas,
si la respuesta es correcta y el jugador pulsa el botón
verificar entonces la apuesta será positiva en consecuencia
el usuario tendrá una puntuación mas alta; si la respuesta
seleccionada es falsa entonces la apuesta será negativa en
consecuencia la puntuación del usuario bajara.
21
31. Fig. 11. Diagrama de robustez. Contestar Preguntas
3. Diseño
Para continuar con los análisis necesarios para que nuestra aplicación
tenga el éxito deseado se continuara con los siguientes pasos que nos
llevaran a un correcto análisis del diseño de nuestra aplicación antes de
poder pasar al último paso que seria la implementación
3.1. Diagrama de secuencia
Uno de los primeros pasos a analizar dentro del diseño de una
aplicación es el diagrama de secuencia. En nuestra aplicación se
encontraran los siguientes diagramas de secuencias. Los diagramas a
continuación serán representados solamente en forma grafica.
3.1.1. Diagrama de secuencia. Ingreso Jugadores
Fig. 12. Diagrama de secuencia. Ingreso de jugadores
22
32. 3.1.2. Diagrama de secuencia. Seleccionar Apuesta
Fig. 13. Diagrama de secuencia. Seleccionar Apuesta
3.1.3. Diagrama de secuencia. Seleccionar Categoría
Fig. 14. Diagrama de secuencia. Seleccionar Categoría
3.1.4. Diagrama de secuencia. Contestar Pregunta
Fig. 15. Diagrama de secuencia. Contestar Pregunta.
3.2. Refinamiento de diagrama de clases.
Una vez que hemos realizado una serie de diagramas los cuales nos
han ayudado a comprender el funcionamiento de nuestra aplicación
entonces procederemos a modificar el diagrama de clases con los
23
33. cambios que se puedan tomar en cuenta según los diagramas antes
realizados
Fig. 16. Diagrama de clases
3.3. Verificación del diseño
Una vez que se ha realizado todos los análisis que contempla la
metodología utilizada para el presente proyecto se procederá a verificar
si los requisitos que se identificaron en pasos anteriores se han
cumplido en su totalidad.
1. El juego tiene que ser de fácil acceso
El juego que se presenta es de fácil acceso para el usuario debido a
que para el acceso al mismo solamente tiene al iniciar la aplicación
solamente tiene que pulsar un botón que posteriormente lo llevara a
la venta en donde colocara el nombre de los jugadores según el
numero que se haya escogido.
2. Debe permitir al usuario elegir el nombre que usura al largo del
juego.
Como ya se explico brevemente en el paso anterior el usuario podrá
colocar que usara mientras dure el juego, rellenando los campos
correspondientes.
24
34. 3. Debe permitir al usuario observar cual es su puntuación durante
el juego.
Una vez que se han cumplido los 2 pasos anteriores el usuario podrá
observar la interfaz principal del juego en donde podrá observar en la
parte superior de la ventana su nombre de jugador y su puntuación
que variara a lo largo del juego.
4. Debe permitir al usuario elegir la categoría sobre en la cual
desea participar.
En la interfaz principal del juego tenemos varios botones que
representan las categorías del juego.
5. Debe permitir al usuario elegir la cantidad de puntos que juega
en cada ronda de preguntas.
Como se podrá observar debajo del nombre y la puntuación el
usuario podrá observar varios campos correspondientes a la apuesta
que hara en cada ronda de preguntas. Cada vez que el usuario tenga
que contestar una pregunta puede seleccionar también el valor de
puntos que desea apostar en la misma.
6. Debe permitir al usuario el poder verificar si la respuesta
ingresada es la correcta.
Debajo de las opciones de respuesta el usuario podrá encontrar un
botón que al pulsarlo comprobara y actualizara el mensaje de
respuesta lo cual le permitirá saber si su respuesta es correcta o no.
7. Debe permitirle al usuario poder salir del juego cuando este así
lo quisiera.
Debajo del mensaje que muestra si la respuesta ingresada por el
usuario es correcta o no; se encontrara un botón para poder salir de
la aplicación
25
35. 8. Debe presentarle al usuario los resultados del juego antes de
salir completamente del juego.
Antes de salir completamente del juego al usuario se le presenta una
ventana con las estadísticas del juego
9. Debe permitir al usuario jugar contra la computadora
La aplicación también posee la opción de jugar contra la
computadora ya sea un jugador contra la computadora o 2 jugadores
contra la computadora
4. Implementación
Una vez que se han cumplido con todos los pasos anteriores de la
metodología ICONIX, el último de los pasos que debemos completar es la
implementación de nuestra aplicación.
Para poder realizar una correcta implementación de nuestra aplicación
deberemos cumplir con los siguientes procesos los cuales nos llevaran a
una mejor implementación de nuestra aplicación.
4.1. Escribir/Generar Código
En este apartado se encontrara una breve descripción del código que va
a contener cada uno de los módulos de nuestra aplicación; un resumen
del código se podrá encontrar en uno de los siguientes apartados.
Para facilitar aun más la comprensión del código de la aplicación lo
describiremos según las interfaces que la componen. Además
tendremos que aclarar que se tomara en cuenta tanto en este apartado
como en los demás en los que tengamos que referirnos al código de la
aplicación, solo se tomara en cuenta las partes mas importantes del
mismo descartando el código que el asistente de la herramienta genera
automáticamente
26
36. 4.1.1. Interfaz de Bienvenida
Esta es una de las más sencillas ya que solo contendrá el código
del nombre de la ventana, el código necesario para que la
ventana se muestre en el centro de la pantalla, además de un
botón el cual contendrá el código necesario para redirigirnos a la
ventana siguiente. Y contendrá el código de un botón que nos
mostrara un mensaje para el caso de que el usuario necesite
ayuda sobre el juego.
4.1.2. Interfaz Jugadores
En esta interfaz al igual que en la anterior tendremos el código
correspondiente a las propiedades de la ventana que se
mostraran al usuario.
También contendrá el código de cada uno de las acciones de los
menús los cuales permitirán mostrar los cuadros para el ingreso
de los datos de los jugadores según sea el caso.
4.1.3. Interfaz Trivia
Esta interfaz es aquella que contendrá mas código debido a que
todos los procesos referentes a la administración de los ficheros
que contienen las preguntas y las respuestas así como la
verificación de las respuestas seleccionadas por el usuario serán
administrados por esta interfaz mediante el uso de diferentes
elementos que contendrá la interfaz.
A mas de ello para evitar cambios bruscos durante la ejecución de
la aplicación se ha programado para la aplicación bloquee
algunos de los elementos de forma temporal con los códigos
correspondientes.
4.1.4. Resultados
En la clase resultados tendremos programada una interfaz de
usuario la cual recuperara los datos de nombres de jugadores del
27
37. fichero correspondiente así como los datos del juego de la interfaz
anterior.
A mas de ello tendremos el código que nos mostrara cual fue el
usuario que gana al finalizar el juego
28
38. ARQUITECURA DE LA APLICACIÓN GRAFICA Y DESCRIPCION DE LOS
COMPONENTES
En este apartado veremos lo referente a la arquitectura de la aplicación y una
breve descripción de los componentes que la constituyen.
La arquitectura que se usara para la represente aplicación será la de 3 capas
que comprende el dominio, la lógica y la interfaz grafica.
Las capas de esta comprenden las siguientes capas:
Cliente de la aplicación
Servidor de aplicaciones
Servidor de datos.
Una vez que hemos enumeramos cuales son las capas que comprenden la
arquitectura de 3 capas entonces ahora procederemos a describirlas una a una
dependiendo de los componentes de nuestra aplicación.
Para empezar a analizar la arquitectura de nuestra aplicación comenzaremos
con el analizar de lo que será el servidor de datos. En nuestro caso el servidor
de datos serán los ficheros que contiene la información acerca de las preguntas
y respuestas que se usaran en nuestra aplicación, es decir que el servidor de
base de datos lo compondrán los siguientes archivos:
OpcionesPreguntasC1
OpcionesPreguntasC2
OpcionesPreguntasC3
OpcionesPreguntasC4
OpcionesPreguntasC5
preguntascategoria1
preguntascategoria2
preguntascategoria3
preguntascategoria4
preguntascategoria5
jugadores
29
39. Estos son los 10 archivos que conformaran nuestro servidor de datos estos a
su vez se conectaran con la siguiente capa que será la de servidor de
aplicaciones en el que tendremos la lógica de nuestra aplicación la cual servirá
a manera de un puente entre el servidor de base de datos y la interfaz de
usuario.
Es decir en esta parte se encontrara toda la codificación que contendrá la
aplicación que lograra que nuestra aplicación se conecte de forma correcta
entre el servidor de datos y la interfaz.
A continuación se mostrara un diagrama de lo que será la comunicación de los
módulos de nuestra aplicación:
Fig. 1
En la Fig. 1 se muestra como interactuaran tanto la base de datos que en
nuestro caso serán ficheros, el servidor de datos que en nuestro caso será el
código los diferentes módulos que componen nuestra aplicación como son: el
modulo de bienvenida, el modulo de opciones de usuario, el trivia y el modulo
de presentación de resultados.
En primer lugar los módulos que componen el servidor de aplicaciones según
sea el caso se conectaran con el servidor de datos para la entrada o salida de
datos según sea el caso.
30
40. En el caso del primer modulo que corresponde a la bienvenida este no
contendrá ninguna interacción con la base de datos de nuestra aplicación; en
segundo modulo de nuestra aplicación que se encargar del manejo de la
información de los jugadores antes del juego será uno de los primeros en
comunicarse con el servidor de datos debido a que una vez que este modulo
recibe la información va al fichero correspondiente donde posteriormente se
almacenara. Esta operación se ilustra en la Fig. 2.
Fig. 2
Otra de las comunicaciones que se hacen con el servidor de datos es la que
hace el modulo principal que comprende todo el código que maneja la
aplicación en donde se conecta no solo al servidor de datos para la
recuperación de los datos de los jugadores sino también los datos de las
preguntas y opciones de respuestas que tiene nuestra aplicación. Esto se
ilustra en forma grafica en la Fig. 3.
31
41. Fig. 3
Y la ultima interacción que tiene el servidor de datos con el servidor de
aplicación será la que hace cuando el modulo para la presentación de
resultados inicia sus operaciones. Este modulo no solo interactúa con el
servidor de datos sino también con su modulo predecesor de manera que se
puedan presentar los datos del jugador que no están en el servidor de datos
esta ultima interacción se ilustrara en el Fig. 4.
Fig. 4
Esta es principalmente la manera como se comunican cada uno de los
componentes de nuestra aplicación. Una vez que se ha visto la manera como
se comunican cada uno de los modulos de la aplicación ahora ilustraremos en
la Fig. 5 como quedaría todo el diagrama de la arquitectura de nuestra
aplicación desde el servidor de datos hasta lo que será la interfaz de usuario.
32
43. PROTOTIPOS
En este apartado podrán encontrar capturas de todos los módulos que
conforman la aplicación. Una vez que ya se han pulido dentro de las fases de la
metodología escogida.
Fig. 1. Interfaz Bienvenida
Fig. 2. Interfaz Jugadores
Fig 3. Interfaz Trivia. Dos Jugadores antes del juego
34
44. Fig. 4 Interfaz Trivia. Dos jugadores durante el juego
Fig. 5. Interfaz de Resultados
35
45. DESCRIPCION DE LA APLICACIÓN
En este apartado trataremos de dar una breve descripción de la aplicación una
vez que ha pasado por todo el proceso que se requiere antes de ser
implementada.
La presente aplicación fue desarrollada tomando como base el código de la
aplicación trivia que se puede encontrar en la pagina mygnet.net; la aplicación
que se tomo como base poseía algunas restricciones a mas de las ya
especificadas para el presente proyecto además la aplicación manejaba las
preguntas directamente en el código haciendo difícil para un usuario común
poderlas modificar; por el contrario trivia de programación Java no maneja esta
información en el código sino que lo hace a través de ficheros.
La Trivia de Programación Java como se la ha llamado a la aplicación consta
de 4 ventanas las cuales se presentan al usuario en el orden en el cual fueron
programadas.
La primera ventana tendrá una imagen de entrada, un botón para poder
continuar navegando en la aplicación; además de un botón que mostrara donde
encontrar ayuda para la aplicación, en la siguiente ventana se encontrara un
barra de menú donde se podrá escoger dentro de el las opciones de jugadores
para esta aplicación
La siguiente ventana de la aplicación contendrá el juego en si, esta ventana se
encuentra divida en varias secciones entre las que se encuentra las secciones
siguientes: Datos del jugador, Categorías, Apuesta, opciones de respuesta,
pregunta, la de verificación de respuesta y además de ello algunos botones que
permitirán verificar la respuesta, avanzar al siguiente jugador y salir de esta
ventana.
La ultima ventana que se presentara al usuario será la ventana en donde
tendrá las estadísticas del juego o como mejor se le conocen los resultados del
juego.
36
46. CODIFICACION
En esta sección se encontrara el código de cada uno de los módulos de
nuestra aplicación, debido a que para el desarrollo de la aplicación se uso el
asistente de Netbeans para la implementación de las interfaces de usuario, se
tomara en cuenta solo el código principal de cada uno de los módulos para que
el código no se haga muy extenso; ya que el asistente genera código
automáticamente según se le vayan agregando elementos a la ventana.
Dentro de la codificación también encontraremos algunas partes de código que
se repiten, en este caso solo se tomara una copia y se indicara en que partes
se encontrara ese código.
Una vez indicado el código que contendrá este apartado entonces
procederemos a detallar el código según las interfaces empleadas para
desarrollar esta aplicación.
1. Interfaz de Bienvenida
a. Primer Método de la interfaz
Dentro de esta primera interfaz tendremos las 2 siguientes
sentencias:
this.setTitle("Bienvenida");
this.setLocationRelativeTo(null);
Con la primera le podremos colocar un nombre a la ventana, con la
segunda en cambio colocaremos la ventana al centro de la pantalla
pasándole null como parámetro.
b. Método de la acción del botón Siguiente
Dentro de la acción del botón siguiente tendremos las sentencias
siguientes:
Con la primera sentencia creamos un objeto OpcionesJugadores,
en la segunda sentencia hacemos visible el objeto que declaramos
37
47. anteriormente y con la última hacemos invisible la ventana de
Bienvenida.
c. Método de la acción del botón Ayuda.
Dentro de la acción de este botón tenemos programado un
JOptionPane que nos mostrara un aviso de donde podemos obtener
ayuda sobre el juego.
2. Interfaz Jugadores
a. Primer método de la Interfaz
Dentro de este método también se tendrá las sentencias para
colocar el titulo y la localización de la ventana.
También se encontrara en este método la inicialización de las cajas
de texto para el ingreso de información; por el momento a estas se
las inicializara con la sentencia de setVisible dándole como
parámetro false.
Una vez inicializado las cajas de texto; se podrá programar las
acciones de cada uno de los menús para que según la opción de
menú que se escoja se muestren las cajas de texto para el ingreso
de la información de los jugadores.
b. Método que controla la acción del botón Jugar
En este método es en donde se creara el fichero de jugadores que
contendrá por el momento los nombres de los jugadores. Y después
de ellos nos llevara a la siguiente ventana que es la ventana
principal de la aplicación.
c. Método que controla la acción del botón salir
En este método tendremos solo la sentencia que nos permitirá salir
de la aplicación cuando el usuario pulse el botón salir.
38
48. 3. Interfaz trivia
a. Importamos las clases necesarias para la interfaz
Para el correcto funcionamiento de esta interfaz tendremos que
importar algunas clases de los paquetes que posee java entre ellas
estarán las siguientes:
Del paquete java.io
BufferedReader
Esta clase lee el texto de un flujo de entrada de caracteres
FileNotFoundException
Esta clase es de un error muy común que sucede cuando se
trabaja con ficheros y sucede cuando se ha fallado en un
intento de abrir un archivo.
FileReader
Esta clase nos ayuda a leer un archivo de caracteres
IOException
Esta clase también es parte de las excepciones que pueden
ocurrir al trabajar con ficheros y ocurre cuando ha ocurrido
alguna excepción de entrada o salida.
Del paquete javax.swing
JOptionPane
La clase JOptionPane hace mas fácil el que aparezcan
cuadros de dialogo estándar que pueden ser usados para el
ingreso de datos o para la salida de mensajes de alerta.
b. Declaración de variables globales
Declaramos las variables globales que vamos a usar es decir
aquellas que se usaran en cualquiera de los métodos de la clase
según sea necesario.
39
49. Entre las variables globales que se usaran se tendrá que tener
variables tipo String para categoría, respuestas, preguntas,
puntajes; entre otras se tendrá que declarar el suficiente número de
variables globales para el correcto funcionamiento de esta
aplicación.
c. Método Trivia
Este es el primer método que nos aparece después de importar las
clases necesarias y declarar las variables globales que se han de
necesitar.
En este método primeramente se encontrara una llamada al método
initComponents() después del cual se encontraran las sentencias
para colocar un titulo en la ventana, mostrar la ventana en el centro
de la pantalla y la que permite deshabilitar el botón de maximizar de
la ventana.
También se tendrá la llamada a los métodos siguientes:
valoresIniciales, mostrarDatosJugadores, controlJugadores,
después de lo cual se podrá inicializar el valor del limite de
preguntas y los valores de los componentes del panel de
verificación. También se encontrara la sentencia correspondiente al
tamaño de la ventana, el limite de preguntas del juego y la
inicialización de otros elementos que no se da en el método
valoresIniciales.
d. Método btnSeleccionarMouseClicked
En este método en primer lugar se controlara la selección de las
categorías y las apuestas, para luego de ello según las opciones
seleccionadas inicializar el valor de categoría y resp con los valores
correspondientes al nombre y extensión de los ficheros que
contienen la información de las preguntas de la trivia al igual que
40
50. incrementar el contador correspondiente al numero de preguntas de
la categoría seleccionada.
En este método también se deshabilitara el botón seleccionar y se
habilitara el botón de verificar; se hará también un llamado al
método de preguntas trivia, pasando como parámetros los valores
de categoría y resp.
e. Método btnVerificarMouseClicked
En este método lo que se encontrara es un llamado al método
verificar, además de la asignación de un nuevo valor al panel de
respuesta.
f. Método btnSiguienteMouseClicked
En este método en primer lugar tendremos una sentencia de control
que controlara si se selecciono previamente la opción de jugar
contra la computadora entonces si el jugador que esta activo es la
computadora nos llevara al método controlJugadores; en caso
contrario nos llevara al método valoresIniciales.
Luego de lo cual se tendrá otra sentencia que permitirá controlar el
numero de preguntas que se han jugador en el caso que se haya
alcanzado el limite mostrara un mensaje de alerta y cerrara la
ventana principal de la trivia y mostrara la ventana de resultados;
en caso que no se haya alcanzado el numero de preguntas limite
entonces habilitara las opciones de botón para el siguiente jugador.
Además de lo antes indicado este método también contiene un
llamado a un método con el nombre de PintarJugadorActual; que
coloca en negrita el jugador actual, los valores tanto de la etiqueta
como del panel de verificación. Y inicializara en vacio la etiqueta de
pregunta y las etiquetas de cada uno de los botones de opción de
las preguntas.
41
51. g. Método btnSalirMouseClicked
En este método se encontrara una llamada al método de
guardarDatos para que se realice los procesos allí del guardado de
la información del juego.
h. Método valoresIniciales
En este método se encontraran las sentencias en donde se agregan
los botones de opciones al grupo de botones correspondientes.
Se inicializa el estado de los botones de opcion en falso, se
deshabilita los botones de verificar y siguiente; los valores de texto
de las etiquetas de jugador se las inicia como texto sin negrita, se
inicializa en vacío la etiqueta de preguntas y las etiquetas de los
botones de opción
También se inicializan los valores de los componentes del panel de
verificación.
i. Método mostrarDatosJugadores
En este método se tendrán las sentencias para la lectura del fichero
en donde se encuentran los nombres de los jugadores. Al igual que
una sentencia de control que servirá para el control de los mismos
ya que si son 2 jugadores en la ventana solo mostrara las etiquetas
según el numero de jugadores que sean.
Inicializaremos el valor de numJug; que es el número de jugadores
según el número de datos recuperados y se hará un llamado al
método PintarJugadorActual.
j. Método controlJugadores
En este método se tendrá un llamado al método jugar.
42
52. k. Método SeleccionarCategoriaComputador
En este método se inicializara la variable numCat usando un
numero aleatoria que vaya desde el 1 al 5, a continuación de ello
tendremos los mismo controles como en el botón seleccionar, los
cuales según el valor del numCat asignara una categoría al
ordenador.
l. Método SeleccionarApuestaComputador
En este método al igual que en el anterior se inicializara la variable
numApu con un valor aleatorio entre 1 y 5, según la opción que se
seleccione se deshabilitaran los demás botones siguiendo el mismo
proceso que si fuera un jugador mas.
m. Método preguntasTrivia
Como ya se dijo en un método pasado este método recibe 2
parámetros el uno categorias y el otro resp, estos parámetros
contienen el nombre del fichero de preguntas y respuestas
respectivamente con sus extensiones los cuales se usaran en lo
posterior.
Se declararan variables locales para el almacenamiento de algunos
datos importantes como son el número de líneas del fichero de las
preguntas, el número de líneas del fichero de opciones de
respuesta, un contador para las preguntas, un contador para las
respuestas, un arreglo en donde se almacenaran las preguntas, un
arreglo en donde se almacenaran las respuestas.
Se tendrá las sentencias para la lectura de un fichero en donde se
coloca el nombre del fichero que se va a abrir se colocara el valor
de la variable categoría. Seguidamente con la ayuda de un ciclo
repetitivo almacenaremos los datos recuperados del fichero en un
arreglo. Se sigue el mismo procedimiento para la recuperación de
las opciones de pregunta del fichero los únicos cambios que hay
43
53. que hacer son el nombre de la variable que se colocara en donde
va el nombre del fichero que se desea abrir y el arreglo donde se
almacenaran los datos.
Se inicializara la variable pregunta con un valor aleatorio que vaya
desde el 1 hasta el 10 con usando Math.random.
Seguidamente inicializara la variable cat con las preguntas
recuperadas según las posiciones del arreglo de preguntas.
Seguidamente se encontrara un switch que tendrá la variable
pregunta con la cual se controlara la visualización de las preguntas
según su número, como se tiene 10 preguntas por categoría
entonces el numero de case del switch será 10, entonces
dependiendo del numero de case se recuperara la pregunta y las
opciones de respuesta según las posiciones del arreglo tanto de
preguntas como de respuestas y se los mostrara en las etiquetas
correspondientes en la interfaz grafica.
Como las sentencias anteriores van a provocar algunas
excepciones propias del manejo de ficheros entonces el código
anterior se tendrá que encapsular en sentencias try catch o en su
defecto controlar con algún otro método las excepciones
provocadas.
n. Método verificar
En este método se encontrara la habilitación de botón siguiente y la
deshabilitación del botón verificar, también se creara una variable
booleana llamada esCorrecto.
Luego de lo cual se tendrá una serie de if’s anidados los cuales
realizaran el control de la respuesta seleccionada por el usuario
según la categoría y la opción de respuesta que este haya
seleccionado, también se tendrá las sentencias para el cambio de
44
54. color del panel de verificación, y la asignación de un valor a la
variable esCorrecto según sea el caso; además de un llamado al
método Puntuacion con el valor de la variable esCorrecto.
o. Método Puntuacion
En este método en primer lugar recibirá una variable booleana
llamada opción la cual necesitaremos en las sentencias posteriores.
En primer lugar se tendra el control sobre los botones de apuesta
según cual sea la opuesta del jugador entonces se pasara a la
siguiente sentencia la cual controla el numero de jugadores y a
través de un switch usando la variable jugadorActual según el
numero de opcion dentro del switch entonces se tendra otro control
pero esta vez sobre la variable esCorrecto en la cual si esta es
verdadera se sumara al jugador correspondiente la puntuación
según la opcion seleccionada.
p. Método SeleccionarRespuestaComputador
En este método se asigna un numero aleatorio entre el 1 y 3 a la
variable numOpc, luego de lo cual según este numero se
seleccionara el botón de opción correspondiente mediante
sentencias if’s.
q. Método guardarDatos
En el método guardar datos una vez que se haya realizado las
acciones del botón salir entonces tendremos las sentencias
necesaria para guardar los datos del juego en el fichero de
resultados de manera que puedan ser recuperados del fichero hacia
la ventana siguiente. Una vez que se complete la grabación de los
datos en el fichero entonces se colocaran las sentencias para
dirigirnos a la siguiente ventana, y cerrar la ventana actual.
45
55. r. Método Jugar
En este método comprobaremos si el jugador actual es la
computadora entonces nos dirigiremos a los métodos que se
encargan de realizar la jugada de la computadora, dentro del if que
comprueba si el jugador actual es la computadora tendremos otro
que en cambio maneje los métodos necesarios cuando los
jugadores no son la computadora.
s. Método PintarJugadorActual
En este método se tendrá las sentencias necesarias con las cuales
dependiendo del jugador que este actualmente activo se dará
formato a las etiquetas correspondiente para que se puede
distinguir al jugador activo de los demás jugadores.
4. Interfaz Resultados
a. Importamos las clases necesarias para la interfaz
i. BufferedReader
Esta clase lee el texto de un flujo de entrada de caracteres
FileReader
Esta clase nos ayuda a leer un archivo de caracteres.
b. Declaración de variables globales.
Después de la clase se declararan las variables globales que se
usaran que en este caso serán las siguientes:
numLineas de tipo entero y la inicializaremos con el numero de
líneas que tiene el fichero de jugadores posteriormente al guardar
los datos del juego en este caso será 11; un contador para el
control del numero de líneas esto de tipo entero, un arreglo para
poder almacenar los datos recuperados del fichero, un objeto de
tipo TriviaComputador y numJug de tipo entero.
46
56. c. Método Resultados
Debido a que este es el primer método de la interfaz entonces aquí
encontraremos la llamada al método initComponents que es uno de
los métodos que el asistente de interfaz grafica de Netbeans
implementa automáticamente después de ello tendremos las
sentencias para colocar el nombre a la ventana y centrar la ventana
en el centro de la pantalla, al igual que 3 etiquetas que no tendrán
ningún valor por el momento.
Una vez que se haya hecho lo anteriormente explicado entonces se
tendrá que escribir posteriormente las sentencias para la lectura del
fichero de jugadores que es en donde se encontraran los datos de
los jugadores.
Luego de ellos con la ayuda de un ciclo repetitivo se llenaran el
arreglo que declaramos anteriormente con los datos que se
recuperan del fichero.
Una vez que el arreglo tenga los datos del fichero se hará una
comparación para comprobar cuantos jugadores existen y poder así
mostrar los datos en las respectivas etiquetas; sea el caso que si
existe solo 2 jugadores es decir la posición 2 del arreglo se
encuentra vacía entonces no se mostraran las etiquetas
correspondientes al jugador 3; caso contrario se las mostrara. Algo
que se debe tomar en cuenta que siempre en un arreglo se empieza
contando desde la posición 0 hasta el final del mismo.
Por ultimo se tendrá un llamado al método mostrarGanador.
d. Método btnSalirMouseClicked
Aquí se encontrara la sentencia System.exit(0) que nos permitirá
salir de la aplicación.
47
57. e. Método mostrarGanador
En este método se hará una comparación con los valores de las
puntuaciones de los jugadores y se mostrara la etiqueta al frente del
jugador con el mayor puntaje señalándolo como ganador.
48
58. CONCLUSIONES
Como conclusiones una vez terminado este proyecto tenemos las siguientes:
La utilización de ficheros para administrar información es muy práctica
cuando no se va a manejar grandes cantidades de información que
requiere ser actualizada sin hacer cambios en la aplicación sobre la cual
se usa.
La implementación de ficheros dentro de una aplicación puede ser
tediosa en el caso de necesitar correr la aplicación en varios Sistemas
Operativos.
El uso de arreglos para la recuperación de datos de un fichero es muy
útil ya que permite administrar la información que se recupera de la
manera más fácil posible sin incluir otras sentencias que complicarían
más la aplicación y no se obtendría los resultados esperados.
Uso del asistente que posea la herramienta con la que se vaya a
programas en determinado lenguaje es muy útil a la hora de la creación
de interfaces graficas.
El uso de juegos para el reforzamiento de los conocimientos de los
estudiantes es muy útil ya que permite al estudiante evaluar sus
conocimientos personalmente en un ambiente de competencia sana.
No es posible implementar aplicaciones desarrolladas en java en
ordenadores que tengan diferentes versiones de la JVM (Maquina Virtual
de Java).
49
59. RECOMENDACIONES
Entre las recomendaciones que se pueden dar acerca de este proyecto se
tienen las siguientes:
Se debe tener mucho cuidado con los errores que se puedan dar en la
aplicación durante el periodo de prueba de la aplicación
Se debe tener nociones básicas del manejo de excepciones y manejos
de las misma para realizar de la manera mas correcta la codificación de
esta aplicación
Se debe seguir en forma secuencial cada uno de las fases de la
metodología que se elija para la realización de un proyecto.
Se debe tener una constante interacción con el usuario final de la
aplicación ya que este será el que juzgue si la aplicación que se ha
desarrollado esta acorde con los requerimientos que este solicito.
Se debe tener en cuenta la versión de la maquina virtual de java del
ordenador donde se realizada la aplicación y la versión de la misma del
ordenador donde se la implementara.
50
60. BIBLIOGRAFIA
RB1: Yahoo Respuestas en español (s.f). Recuperado el 11 de abril del 2012
de
http://espanol.answers.yahoo.com/question/index?qid=20060829071835AAHkd
XI
RB2: Pereira González M (s.f). Excepciones. Recuperado el 11 de abril del
2012 de http://ocw.uc3m.es/ingenieria-
informatica/programacion/transparencias/tema8.pdf
RB3: García Beltrán A, Arranz J. M (s.f). Otras Sentencias. Recuperado el 11
de abril del 2012 de http://ocw.upm.es/lenguajes-y-sistemas-
informaticos/programacion-en-java-i/Contenidos/LecturaObligatoria/7-
otrassentencias.pdf
RB4: López P, Ruiz F (s.f).Ingenieria de Software I Tema 2: Lenguaje unificado
de modelado UML. Recuperado el 11 de abril del 2012 de
http://ocw.unican.es/ensenanzas-tecnicas/ingenieria-del-software-i/materiales-
de-clase-1/is1-t02-trans.pdf
RB5: Garcia Peñalvo F, Conde Gonzalez M, Bravo Martin S (2008). Ingenieria
del Software Tema 2: Modelo objeto Una descripción de UML. Recuperado el
11 de abril del 2012 de http://ocw.usal.es/ensenanzas-tecnicas/ingenieria-del-
software/contenidos/Tema2-Modeloobjeto-1pp.pdf
RB6: Lopez P, Ruiz F (s.f). Ingenieria del Software I Tema 7: Iteraciones del
Sistema (en el desarrollo de OO). Recuperado el 11 de abril del 2012 de
http://ocw.unican.es/ensenanzas-tecnicas/ingenieria-del-software-i/materiales-
de-clase-1/is1-t07-trans.pdf
RB7: Aycart Perez D, Gibert Ginesta M, Hernandez Matias M, Mas Hernandez
Jordi (s.f). Ingeniería del software en entornos de SL. Recuperado el 11 de abril
del 2012 de http://ocw.uoc.edu/computer-science-technology-and-
multimedia/software-engineering-in-free-software-environments/software-
engineering-in-free-software-environments/XP06_M2112_01486.pdf
RB8: Package java.io. Recuperado el 11 de abril del 2012 de
http://docs.oracle.com/javase/1.4.2/docs/api/java/io/package-summary.html
RB17: Deitel P, Deitel H (2008). Java como programar. México: Pearson
Prentice Hall.
51
61. RB18: Camacho Fernández, D. (Coordinador); Valls Ferrán, J. M.; García
Herrero J.; Molina López, J.; Bueno Rodríguez, E (2003). Programación,
Algoritmos y Ejercicios Resueltos en Java. Madrid: Pearson Educación S.A.
RB19: Stevens P.; Polley R (2002). Utilización de UML en ingeniería de
Software con objetos y componentes. Madrid: Pearson Educación S.A.
RB9: ¿Qué es la tecnología Java y por qué lo necesito?. Recuperado el 22 de
abril del 2012 de http://www.java.com/es/download/faq/whatis_java.xml
RB10: Salvador Vargas A. Arreglos en Java. Recuperado el 22 de abril del
2012 de http://www.utim.edu.mx/~salvar73/material/java/Arreglos.pdf
RB11: Jenkov J. Java IO: FileWriter. Recuperado el 22 de abril del 2012 de
http://tutorials.jenkov.com/java-io/filewriter.html
RB12: Clase BufferedReader. Recuperado el 22 de abril del 2012 de
http://docs.oracle.com/javase/1.4.2/docs/api/java/io/BufferedReader.html
RB13: Métodos en Java. Recuperado el 22 de abril del 2012 de
http://www.slideshare.net/mtemarialuisa/mtodos-java
RB14: Variables Java. Recuperado el 22 de abril del 2012 de
http://www.webtaller.com/construccion/lenguajes/java/lecciones/variables-
java.php
RB15: Unidad 6: OPP Java Tema 2: Parámetros. Recuperado el 22 de abril del
2012 de http://www.programacionfacil.com/java:parametros
RB16: Clase y objetos en Java Lógica de la Programación. Recuperado el 22
de abril del 2012 de http://www.scribd.com/leonardo_cristancho/d/48801584-
Clases-y-Objetos-en-Java
52