Triqui en Qt4

Anuncio
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
Descargar