Antes de comenzar a correr el programa, es necesario realizar un pequeño cambio, ya que si no se realizan, el programa no reconocerá a un usuario si éste ya estaba registrado.
En el módulo main.py de la carpeta Servidor en la linea 248 y 249 deben quedar comentadas.
Lamentablemente no implementé que cuando se encerrara un triángulo, el contador del jugador se reiniciará.
-
NETWORKING: Persistencia: No implementé guardar la imagen del usuario, solo guardo su nombre.
-
FUNCIONALIDADES: Ventana de Salas: No es posible agregar una foto. Está implementado el cargador de imagen pero no envía la imagen al servidor. Partida: No reinicio el contador si un jugador completa un triángulo. General: No eliminó la sala cuando queda sin jugadores. Queda disponible, pero con 0 jugadores. Esto debido a que utilicé QListWidget para listar las salas y el método para eliminar los QListWidgetItem están desactualizados o de alguna manera no lo elimina correctamente, por lo mismo preferí dejarlo desconectado a generar un posible error desconocido.
-
Bonus: Solo implementé el bonus del tablero triangular.
-
Descuentos: Tengo lineas de importación que superan los 80 caracteres.
Sinceramente esos son los métodos que no implementé, intenté abarcar de mejor manera la tarea, sin preocuparme mucho de la interfaz (error cometido en el tarea 2) pero era inevitable, creé unos archivos .png que adornaban la tarea, como el nombre del juego y títulos importantes, sin embargo no me alcanzó el tiempo para implementarlos y los dejé en cliente/png juego si bien utilizo solo una imagen, es necesario descargar la carpeta.
En esta sección comentaré aspectos que considero que deben quedar claros en cuanto a su implementación, su funcionamiento o aspectos agregados a lo pedido en el enunciado. Lo que no está mencionado acá es porque considero que está implementado correctamente.
-
MANEJO DE BYTES: General: En el archivo
filtro.pyse encuentra la funciónfiltro_dibujo.pyla cual recibe el path y se obtiene una imagen con filtro. Ya que no pude implementar subir la imagen la función del filtro está en un archivo aparte. -
NETWORKING: Persistencia: El servidor solo guardará el nombre del usuario.
-
FUNCIONALIDADES: Autenticación: No entendí muy bien si el servidor debía enviar una respuesta visible al usuario si es que el nombre estaba siendo utilizado. Mi programa solo no permite el ingreso. Partida: Si un usuario abandona la sala, su puntaje seguirá visible, aunque no esté en la sala, ya que decidí dejar sus triángulos en el tablero. La forma de armar un triángulo es la siguiente: (EN TU TURNO)
- Haz click en el punto que quieres llegar y confirma que su color se cambie a azul oscuro.
- Arrastra el punto que quieres unir al seleccionado.
- Si la acción es correcta, entonces la línea se dibujará
- Si se forma un triángulo, entonces se dibujará un triángulo.
-
Bonus: Tablero triangular: Implementé el tablero triangular.
- El módulo principal del servidor es
main.pyy el módulo principal del cliente esmain.py
Librerías:
- Solo utilicé librerías permitidas, a diferencia de muchos del curso, yo ocupe QGraphics para modelar la escena del juego, la diferencia es grande en cuanto a métodos, pero en esencia es la misma.
- Algunos métodos importantes para comprender el modelo utilizado son:
scene = QGraphicsScene(): crea una instancia de escena en la interfazitem es de clase heredada de QGraphicsItemscene.addItem(item): agrega item a la interfazscene.removeItem(item): elimina ítem de la interfazgraphicsView es de clase heredada de QGraphicsViewgraphicsView.setScene(scene): muestra la escena
Librerías propias:
En esta tarea solo utilicé una librería propia, asociada al servidor
- juego.py: Funciones: guardar_informacion, obtener_informacion_usuarios, match_colores ,asignar_nombre_sala. Clases: Juego [Estas funciones son utilizadas por el Servidor para realizar el juego de manera eficaz y pertinente]
Consideré que si el jefe del juego decide jugar de nuevo, entonces deberá esperar 5 segundos a que reinicie el contador, pero no puse un contador en el juego, entonces se ve como que no pasa nada, pero luego de 5 segundos comienza el flujo del juego.
- Para aprender a usar drag and drop utilicé este juego interactivo.
- Utilicé la ayudantía 13 2018-2 para modelar el chat.