sábado, 25 de julio de 2015

APO1 - Nivel 3 - El Ahorcado

Índice

0. Introducción
1. Problema
1.1 Enunciado
1.2 Interfaz gráfica de usuario (Java)
2. Requerimientos
2.1 R1 - Iniciar un juego
2.2 R2 - Jugar una letra
3. Modelo del Mundo del Problema
4. Modelo de la Interfaz Gráfica de Usuario
5. Modelo de Pruebas Unitarias
6. Repositorio: Exploración de Código Fuente C#
7. Recursos
7.1 Java
7.2 C#
7.2.1 Solución y proyectos
7.2.2 Documentación código fuente
7.2.3 Aplicación en ejecución
7.2.3.1 Captura de pantalla
7.2.3.2 Demostración
8. Cambios
9. Conclusiones
10. Glosario
11. Literatura & Enlaces

0. Introducción

En esta ocasión desarrollaremos una aplicación para jugar al ahorcado. Seguiremos el enfoque de análisis, diseño, e implementación orientado objetos como parte de la metodología desarrollada en el proyecto Cupi2 del Departamento de Ingeniería de Sistemas y Computación de la Universidad de los Andes (Colombia). Presentaremos el resultado de análisis, modelaremos, y desarrollaremos la solución usando el lenguaje de programación C# de .NET. Todo esto con el propósito de ofrecer a la comunidad de programadores que desean fortalecer sus conocimientos de la programación orientada a objetos, y/o desean profundizar en C# y las tecnologías .NET.


[Nota importante: Los materiales aquí usados del proyecto Cupi2 y que constituyen la base para el proceso de traducción desde la plataforma Java a la plataforma .NET, se mantienen como son. Su propósito y uso es únicamente académico y divulgativo.]

1. Problema

1.1 Enunciado

Descripción original del problema [4]

El juego del Ahorcado consiste en tratar de adivinar una palabra escondida usando la menor cantidad posible de letras. Si el jugador tiene más de 6 intentos fallidos, pierde el juego. Al iniciar, el jugador solamente conoce el número de letras de la palabra. A medida que avanza el juego, las letras que escoge el jugador se van poniendo en los espacios vacíos de la palabra, de forma que el jugador pueda intentar deducir cuál es.

Durante un juego de Ahorcado, se debe validar si la letra elegida está o no en la palabra, sin distinguir si la letra es mayúscula o minúscula. Si la letra elegida está en la palabra se deben llenar los campos en los que ocurre la letra. También es necesario tener en cuenta que la letra que se esté jugando, no haya sido jugada anteriormente, de modo que si es letra repetida, no se pierda un intento para el jugador. Adicionalmente se debe validar que el jugador sólo tenga el número de oportunidades determinadas por la secuencia de ahorcar el muñeco en juego y que con cada jugada se valide si se ha ganado o no el juego. Finalmente, es importante tener en cuenta que sólo se puede jugar una letra si el juego está iniciado, de forma que una persona que haya perdido, no puede hacer más jugadas hasta que inicie un nuevo juego.

Se quiere construir una aplicación que permita jugar el juego del Ahorcado, donde las palabras por adivinar pertecen al diccionario de palabras de Cupi2 Nivel 3 y son las siguientes:
  • algoritmo, 
  • contenedora, 
  • avance, 
  • ciclo, 
  • instrucciones, 
  • arreglo, 
  • vector, 
  • inicio, 
  • cuerpo, 
  • recorrido, y 
  • patrón
No se tienen en cuenta los acentos de las palabras. El diccionario de palabras sólo maneja minúsculas y no se tienen en cuenta las tildes.

1.2 Interfaz gráfica de usuario (versión Java)

En la Figura 1 se muestra la interfaz gráfica de usuario de la aplicación Ahorcado construida en el lenguaje de programación Java.
GUI en Java
Figura 1. GUI en Java.

2. Requerimientos

2.1 R1 - Iniciar un juego

Código: R1

Nombre: Iniciar un juego

Descripción: La aplicación inicia un nuevo juego escogiendo una palabra del diccionario. El número de intentos posibles es 6.

Entradas
  • Ninguna
Resultados:
  • Hay una palabra escogida, se muestran los espacios vacíos, todas las letras del alfabeto están disponibles y el número de intentos para jugar.

2.2 R2 - Jugar una letra

Código: R2

Nombre: Jugar una letra

Descripción: El jugador propone una letra para ver si está en la palabra o no.

Entradas:
  • La letra escogida por el jugador
Resultados:
  • Si la letra pertenece a la palabra, entonces se le muestra al usuario las ocurrencias de esa letra en la palabra, en las posiciones correspondientes.
  • Si la letra no está en la palabra, entonces el usuario pierde el intento y se valida si ya está ahorcado o si puede seguir jugando.
  • Si la letra ya había sido jugada se informa al usuario que la letra ya se había jugado.
  • Si la palabra está completa, entonces el juego termina.

3. Modelo del Mundo del Problema

En la Figura 2 se describe el diagrama UML con las entidades que integran el modelo del mundo del problema (dominio). (Original en [6].)
Ahorcado - Modelo del mundo del problema
Figura 2. Ahorcado - Modelo del mundo del problema.

4. Modelo de la Interfaz Gráfica de Usuario

En la Figura 3 se muestra el diagrama UML que describe los controles visuales que integran la interfaz gráfica de usuario. (Original en [7].)
Ahorcado - Modelo de la interfaz gráfica de usuario
Figura 3. Ahorcado - Modelo de la interfaz gráfica de usuario.

5. Modelo de Pruebas Unitarias

En el diagrama UML presentado en la Figura 4 se modelan las clases de pruebas del modelo del mundo del problema. (Original en [8].)
Ahorcado - Modelo de pruebas unitarias
Figura 4. Ahorcado - Modelo de pruebas unitarias.

6. Repositorio: Exploración de Código Fuente C#

En el siguiente enlace de repositorio in GitHub se puede explorar todo el código; el cual comprende: 
  • Modelo del mundo del problema, 
  • Controles de la interfaz gráfica de usuario, 
  • Archivos de configuración, 
  • Recursos (imágenes, íconos, cadenas de texto, etc.), 
  • Clases de pruebas unitarias de la funcionalidad y estado de las entidades del mundo del problema.

7. Recursos

7.1 Java

Recursos del proyecto en su versión original: 

7.2.1 Solución y proyectos

Enlaces de descarga de archivos ZIP con la solución y los proyectos integrales (proyectos C# y pruebas unitarias) de la aplicación: 

7.2.2 Documentación código fuente

Archivo CHM con la documentación del código fuente C#
APO1 - Nivel 3 - El Ahorcado - Documentación
Figura 5. APO1 - Nivel 3 - El Ahorcado - Documentación.

7.2.3 Aplicación en ejecución

7.2.3.1 Capturas de pantalla
APO1 - Nivel 3 - El Ahorcado
Figura 6. APO1 - Nivel 3 - El Ahorcado.
7.2.3.2 Demostración

8. Cambios

Cambios sobresalientes en la solución: 
  • Adición de las enumeraciones EstadoJuego y JuegoAhorcadoConstantes para representar el estado del juego y constantes del juego.
  • Varios métodos de las clases Letra, Palabra, y JuegoAhorcado como propiedades.

9. Conclusiones

A lo largo del proceso de traducción hemos afianzado nuestro conocimiento no sólo en lenguaje de programación C#, sino además en comprender estructuras fijas para la contención de datos. La creación de controles personalizados nos ayuda a crear una interfaz gráfica modular y propensa a fáciles modificaciones.


En la próxima traducción pasaremos al nivel 4 de APO1: seguimiento de una especificación en términos de un contrato para la construcción de elementos de programa.

10. Glosario

  • Arreglo
  • Clase
  • Control
  • Estructura de dato
  • Índice
  • Método

11. Literatura & Enlaces

[1]: Universidad de los Andes - Colombia - http://www.uniandes.edu.co/
[2]: Cupi2 - http://cupi2.uniandes.edu.co/sitio/
[3]: APO1 - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1
[4]: Enunciado - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/ahorcado
[5]: Requerimientos Funcionales - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/ahorcado/requerimientos-funcionales
[6]: Modelo Conceptual - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/ahorcado/modelo-conceptual
[7]: Interfaz - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/ahorcado/interfaz
[8]: Pruebas - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/ahorcado/pruebas


V

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.