Tabla de Contenido
0. Introducción1. 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.
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].)
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].)
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].)
Figura 4. Modelo de pruebas unitarias. |
6. Exploración de Código C#
6.1 Modelo
6.2 GUI
Archivo C# ControlBotones.cs [enlace alternativo]:
Archivo C# ControlMensajes.cs [enlace alternativo]:
Archivo C# ControlTriqui.cs [enlace alternativo]:
Archivo C# Principal.cs [enlace alternativo]:
Archivo C# ControlMensajes.cs [enlace alternativo]:
Archivo C# ControlTriqui.cs [enlace alternativo]:
Archivo C# Principal.cs [enlace alternativo]:
7. Recursos
7.1 Java
Conjunto de recursos del proyecto en su versión original [9]:
- Visitar: http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-2/triqui
- Demo: http://cupi2.uniandes.edu.co/sitio/images/cursosCupi2/apo1/hojasDeTrabajo/n2_triqui/demoTriqui.zip
- Archivo ZIP: http://cupi2.uniandes.edu.co/sitio/images/cursosCupi2/apo1/hojasDeTrabajo/n2_triqui/n2_triqui.zip
- Examen escrito: http://cupi2.uniandes.edu.co/sitio/images/cursosCupi2/apo1/ejemplos/examenes/n2_triqui_examen_escrito.doc
- Examen laboratorio: http://cupi2.uniandes.edu.co/sitio/images/cursosCupi2/apo1/ejemplos/examenes/n2_triqui_examen_laboratorio.doc
7.2 C#
7.2.1 Solución y proyectos
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
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.