viernes, 25 de julio de 2014

APO1 - Nivel 2 en C#: El Triqui

Tabla de Contenido

0. Introducción
1. Enunciado
1.1 Interfaz gráfica de usuario (versión previa en Java)
2. Requerimientos
2.1 R1: Recibir y marcar las jugadas del usuario
2.2 R2: Responder con las jugadas del computador
2.3 R3: Comenzar un nuevo juego
3. Modelo del Mundo del Problema
4. Modelo de la Interfaz Gráfica de Usuario (GUI)
5. Modelo de Pruebas Unitarias
6. Exploración de Código Fuente C#
6.1 Modelo
6.2 GUI
7. Recursos
7.1 Java
7.2 C#
7.2.1 Solución y proyectos
7.2.2 Documentación del código fuente de la aplicación
7.2.3 Aplicación en ejecución
7.2.3.1 Capturas de pantalla
7.2.3.2 Vídeo
8. Conclusiones
9. Glosario
10. Literatura & Enlaces

0. Introducción

En esta tercera traducción de los ejercicios del Nivel 2 de APO1, crearemos una aplicación en C# que consistirá en el juego triqui. Emularemos la misma estrategia de juego adoptada por el computador para que compita con un jugador humano. Este ejercicio nos servirá para comprender no sólo características del lenguaje C# y su plataforma subyacente, sino además el diseño de algoritmos de competencia hombre-máquina. Desde luego se trata de un problema sencillo, en futuro dedicaremos tiempo para estudiar el proceso de análisis y diseño de programas más complejos y complicados que nos sirvan de reto para la especialización y dominio de los elementos esenciales de la ciencia de la computación.

1. Enunciado

A continuación se describe el planteamiento original del juego de Triqui publicado en [3].

El Triqui se desarrolla entre dos jugadores, cada uno de los cuales elige una marca para representarse, usualmente entre los símbolos O y X. Los jugadores van colocando intercaladamente su marca en un tablero de 9 posiciones. Gana el jugador que logre formar primero una línea de tres casillas seguidas con su marca, ya sea en sentido:
  • vertical, 
  • horizontal, o 
  • diagonal
Si se acaban las casillas libres y ningún jugador hizo una línea de tres, se determina un empate.

Se quiere desarrollar un programa que permita el juego del Triqui entre un humano y el computador. Para éste último se elige una estrategia sencilla de juego que puede depender o no de las jugadas realizadas por el humano. Un ejemplo de estrategia es ir asignando la siguiente posición libre (según el orden establecido de las casillas).

Adicionalmente se desea dar al usuario la posibilidad de comenzar un juego en cualquier momento.

1.1 Interfaz gráfica de usuario (versión previa en Java)


En la Figura 1 se muestra la interfaz gráfica de usuario de la aplicación desarrollada en lenguaje de programación Java.
Juego de Triqui en Java
Figura 1. Juego de Triqui en Java.

2. Requerimientos

Conjunto de requerimientos funcionales de la aplicación El Triqui.

2.1 R1: Recibir y marcar las jugadas del usuario

Código: R1

Descripción: Rercibir y marcar las jugadas del usuario.

Resumen: Cuando se selecciona una casilla, esta debe terminar con la predeterminada para el usuario.

Entradas:
  • Posición en el tablero seleccionada por el usuario.
Resultados:
  • La casilla seleccionada con la marca del usuario. Si con esta marca se completa una hilera de 3, se informa al usuario que ganó el juego.

2.2 R2: Responder con las jugadas del computador

Código: R2

Descripción: Responder con las jugadas del computador

Resumen: Se generan marcas en el tablero automáticamente, en respuesta a las jugadas anteriores hechas por el usuario.

Entradas:
  • El juego del triqui en su estado actual.
Resultados:
  • La casilla seleccionada por el programa con la marca predeterminada para este. Si con la jugada el juego termina, se informa al usuario que perdió el juego.

2.3 R3: Comenzar un nuevo juego

Código: R3

Descripción: Comenzar un nuevo juego

Resumen: Se inicializa sin marcas el tablero del triqui para comenzar un nuevo juego en cualquier momento.

Entradas:
  • «Ninguna»
Resultados:
  • Un nuevo juego listo para comenzar.

3. Modelo del Mundo del Problema


En la Figura 2 se muestra el diagrama UML con la descripción de las entidades que componen el modelo del mundo del problema. (Original en [4].)
Modelo del mundo del problema
Figura 2. Modelo del mundo del problema.

4. Modelo de la Interfaz Gráfica de Usuario (GUI)


En la Figura 3 se presenta el diagrama UML con los componentes que integran la interfaz gráfica de usuario. (Original en [7].)
Modelo de la interfaz gráfica de usuario.
Figura 3. Modelo de la interfaz gráfica de usuario.

5. Modelo de Pruebas Unitarias


El diagrama UML en la Figura 4 presenta las clases de prueba de la clase Triqui y la enumeración PosicionCasilla. (Original en [8].)
Modelo de pruebas unitarias
Figura 4. Modelo de pruebas unitarias.

6. Exploración de Código C#

6.1 Modelo
Conjunto artefactos del modelo

6.2 GUI
Artefactos de la interfaz gráfica de usuario

7.1 Java

Conjunto de recursos del proyecto en su versión original [9]:

7.2 C#

7.2.1 Solución y proyectos

Enlace de descarga de archivo ZIP con la solución y los proyectos integrales de la aplicación:

7.2.2 Documentación de código fuente de la aplicación

Enlace de descarga de la documentación (formato CHM) del código fuente C# de la aplicación.

7.2.3 Aplicación en ejecución

7.2.3.1 Capturas de pantalla
El Triqui en C#
Figura 5. El Triqui en C#.
El Triqui en C# y Java
Figura 6. El Triqui en C# y Java.
7.2.3.2 Vídeo

8. Cambios

Lista de cambios realizados sobre el modelo del mundo del problema de la aplicación El Triqui:
  • Las nueves posiciones del tablero de trique ha sido representado por una instancia de la enumeración PosicionCasilla.
  • Las casillas del tablero en la clase Triqui quedan representadas como un arreglo de constantes de la enumeración PosicionCasilla.
  • La marca de la casilla estará representada por valores de tipo char.
  • Cambios en la clase Casilla:
    • Se removieron los siguientes métodos fueron reemplazados por la propiedad Marca:
      • AsignarMarca(string)
      • ObtenerMarca
    • El tipo de la marca, string, fue reemplazado por char.

9. Conclusiones

Durante el proceso de traducción de la aplicación Java El Triqui a lenguaje de programación C#, aprendimos a manipular controles personalizadas a partir de la clase ControlUser. Estos controles pueden ser agregados usando la caja de herramientas (toolbox) de Visual Studio o programáticamente. Usamos este último enfoque, pues exige conocer varias propiedades y métodos de la la clase ControlUser, por ejemplo, para poder posicionar cada uno de los controles en el formulario principal de la aplicación.

10. Glosario

  • Caja de herramientas
  • Control
  • Cupi2
  • Formulario
  • Triqui
  • Uniandes

11. Literatura & Enlaces

[1]: Universidad de los Andes - http://www.uniandes.edu.co
[2]: Departamento de Ingeniería de Sistemas y Computación - http://sistemas.uniandes.edu.co
[3]: Proyecto Cupi2 - http://cupi2.uniandes.edu.co/sitio
[4]: Enunciado - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/triqui/enunciado-2051
[5]: Requerimientos - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/triqui/requerimientos-2052
[6]: Tac, Tic, Toe icon | Icon Search Engine | Iconfinder - https://www.iconfinder.com/icons/85811/tac_tic_toe_icon#size=30
[7]: Interfaz - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/triqui/interfaz-n2triqui
[8]: Pruebas - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/triqui/pruebas-n2triqui
[9]: El Triqui - http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/triqui


S

No hay comentarios:

Publicar un comentario

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