Este juego fue generado con Symfony en su versión 5.1.3.
El código fuente puede ser descargado a través del repositorio de control de versiones github.
Asegúrese de instalar el fichero binario de symfony en este enlace y seleccione una
de las tres opciones de ubicación de la variable de entorno symfony
que le indica la ventana de comando.
También es recomendable que tenga instalado composer y yarn.
Procesa con los siguientes comandos, como se plantea en la documentacón oficial:
- cd projects/
- git clone https://github.com/oreyne/game.git
- cd game/
- composer install
Haga una copia del fichero .env
que se encuentra en la raíz del proyecto, nombrelo .env.local
y modifique la linea 32, con las credenciales para acceder a su servidor de
base de datos, nombre de la base de datos y versión del servidor: DATABASE_URL=mysql://USUARIO:CONTRASEÑ[email protected]:3306/NOMBRE_DE_BASE_DE_DATOS?serverVersion=VERSION_DEL_SERVIDOR
. Para mayor información consulte la documentación oficial
Ejecute los siguientes comandos en caso de que no posea la base de datos: bin/console doctrine:database:create
para crear la base de datos, y luego bin/console doctrine:schema:create
para crear las tablas
Activamos el webpack para generar los css y js necesarios, con los siguientes comandos como se muestra en la documentación oficial:
composer require symfony/webpack-encore-bundle
.yarn install
.yarn encore dev --watch
.
Finalmente, ejecutamos el comando symfony server:start
, el cual nos muestra una url a la cual podemos acceder para ver el juego en nuestro navegador
En caso de que al ejecutar este último comando, le solicitan la inserción de un usuario y contraseña; para ello es necesario que se cree una cuenta en Sf Connect
Este fichero muestra la tabla con las posiciones que seleccionan los jugadores. En la tabla hay que señalar que cada celda
contiene un evento onClick
para poder enviar los datos al servidor. Además, en este fichero, se cuenta con un enlace para poder reiniciar
el juego y una notificación para ver el estado del mismo.
Este fichero contiene la llamada ajax
que envia los datos al servidor y de acuerdo a la respuesta
que reciba realizará las siguientes acciones:
- Pintar en la celda seleccionada en la tabla una
X
ó unaO
. - Notificar el jugador que le toca jugar.
- Notificar el jugador que ganó la partida ó no.
- Notificar si ocurrió un error en el juego.
En esta controladora se encuentra la recepción de los datos enviados de la vista y parte de su procesamiento. Aqui encontramos dos funciones:
- La función
index
se encargada de crear la entidadPlayer
en caso de que no exista y inicializar el historial de jugadas - La función
playGame
chequea 4 acciones:
- Valida si existen jugadores en la base de datos
- Valida si ya hay un ganador
- Valida si el jugador que cliqueo en una celda de la tabla, lo hizo en una celda ya ocupada
- En caso de que ninguna de las previas validaciones muestra resultados negativos, procede a realizar las acciones necesarias de la próxima jugada y verifica si hay o no un ganador en esa última jugada.
Este fichero es un servicio que contiene 4 funciones:
- La función
calculateWinner
permite vericar si hay un ganador en la jugada realizada. - La función
convertToString
dado una cadena de texto, est se convierte a una lista de elementos. - La función
convertToArray
dado una lista de elementos, estos se convierten a una cadena de texto. - La función
resetGame
solicita el borrado de las jugadas en la base de datos.
Este entidad representa el historial de las jugadas realizadas. Cuando se analiza el campo value
en la base de datos, se muestra cuales fueron las casillas seleccionadas por los jugadores
Esta entidad guarda el jugador al que le toca jugar asi como si existe o no un ganador.
En este fichero se encuentra una consulta DQL para eliminar de la base de datos, todas las filas excepto la que se pasa por parametro.