Triqui en Qt4 Andrés Becerra Sandoval September 1, 2014 1 Triqui En https://github.com/abecerra/triqui/ encuentran la implementación de un mini-proyecto como el que ustedes deben realizar durante el semestre. Un objetivo que tengo con esta nota es resaltar como el control de versiones ayuda al desarrollo de software mostrando como sirve para explicar algo que ya se desarrolló. 2 Inicio Para bajar las fuentes hay que dar en una terminal: git clone http://github.com/abecerra/triqui Esto creará una copia «versionada» de la carpeta triqui a través de la cual podemos viajar en el tiempo usando los commits de la página: http://github.com/abecerra/triqui/commits/master En la que se ve un texto que resume el commit y un tag alfanumérico en la parte derecha de la pantalla para cada commit. Estos tags pueden copiarse desde la página para pegarlos en la sesión de terminal. Ahora hay que cambiarse a la carpeta triqui: cd triqui 3 Viendo el código en un punto en el tiempo Un commit tiene un tag que sirve para ver el código tal como estaba en ese estado, por ejemplo: git checkout dddcd727b5f826497bf8e23d9cd96eeba3eab9cd corresponde al commit «Base para el triqui» Al hacer esto se puede dar: qmake y luego: make y luego ./ triqui Observe el código fuente de la aplicación, que por ahora no hace casi nada. 1 4 Mecanismo de juego Este triqui solo permite jugar a dos seres humanos, o a uno solo pretendiendo que juega por dos. El mecanismo de juego se basa en una máquina de estados que inicialmente solo tiene un atributo turno en la clase ventana. El turno cambia de 0 a 1 y de 1 a 0 alternadamente cada vez que se juegue. Esto permite manejar el evento de presionar los botones de manera diferente. Observe el commit «Se implementa el mecanismo básico de juego»: git checkout 64c74b42bea3dd924c80c2505d162140ae4cd6ed Observe como cambió el código para soportar el cambio de turno. Estos cambios se pueden ver directamente en la página de github haciendo click en el commit. 5 Los otros commits ¿Como puede correr y analizar el código del triqui para los commits: • «Se agrega la verificación de empates en el juego:»? • «Se agrega el esquema de verificación de que alguien gane el juego»? • «Se agrega la verificación de la segunda diagonal»? • «Se verifica si alguien gana en una horizontal»? • «Se verifica si alguien gana por columnas (ventana::verticalees)»? Análisis Esta pequeña aplicación es «correcta»: • siempre que se juega, haciendo click en un botón, se cambia el turno. • con el turno siempre se decide como actualizar el texto del botón • se verifica que la entrada de los usuarios sea válida: el texto del botón se deja sin cambios, si ya se había jugado allí. • se detecta quien gana, con el turno o si hay empate antes de cambiar el turno Sin embargo, tiene muchos problemas, ¿cuales encontró? 2