SEMANA 4


DEV-LOG SEMANA 4

(el segundo)

Holas, soy koekin de KK Studios. Les traigo el segundo dev-log de Carekk Online :)

Hemos avanzado harto desde el último dev-log. Para refrescar un poco la memoria, la semana pasada la terminamos con un montón de cartas y un intento de modelar estas en el código, pero no habíamos juntado sprites con script. 

Esta semana nos enfocamos en hacer esa conexión y preparar un prototipo del layout del juego.

Cartas: no solo una cara bonita

El primer desafío de la semana fue decidir cómo representar una carta en el código del juego. La idea inicial (y más simple) era un simple objeto Card con una pinta, un número y un color, pero esto rápidamente mostró problemas a la hora de pensar en las cartas "no numéricas" (el Joker, posibles cartas especiales, etc).

La siguiente idea (y la usada actualmente) fue una clase Card que tan solo se preocupa de el aspecto visual de esta, o sea, solo tiene acceso a modificar su sprite y su estado (boca arriba o abajo). Para representar las cartas numéricas se crea una clase NumberCard, la cual ya el atributo del número de la carta.

Los sprites para cada carta están nombrados de cierta forma que permite fácilmente reconocer el sprite correspondiente según la pinta y número de la carta, por lo que asignarlos a cada carta en el momento de su creación resulta muy fácil.

Carta flip

Demostración de una carta y sus dos estados

Mano a mano

El siguiente paso fue crear un "contenedor" para las cartas: la mano (Hand). Esta clase tiene 3 arreglos de cartas que representan las cartas ocultas (en la mesa, boca abajo), las visibles a todos (en la mesa, boca arriba) y las en la mano del jugador (visibles solo para este mismo).

Esta clase puede recibir 6 cartas y repartirlas entre las ocultas y las públicas, además de recibir cartas para agregar al arreglo de cartas en la mano.

Mano

Una mano inicial de Carekk

Enter the mazo

A continuación se creó el mazo (Deck), el cual corresponde al mazo de cartas con el que se juega (desde repartir a sacar cartas durante el juego).

La idea es que esto represente un mazo de cualquier tipo (siempre inglés, pero tal vez puede tener cartas especiales). El mazo puede ser creado como un mazo de naipe inglés con un método apropiadamente llamado generate_english_deck, el que crea las cartas necesarias y las añade a su arreglo de cartas.

También puede entregar una carta o n cartas si se le pide, para representar sacar cartas del mazo, así como revolver sus cartas (gracias a la magia de la programación que permite revolverlas correctamente, a diferencia de revolver un mazo de cartas a mano)

Pila pero no de corriente si no de cartas

Existe también la pila (Pile) de cartas, la cual representa las cartas que se han jugado hasta el momento.

Esta por ahora solo mantiene un arreglo con las cartas que están en ella, recibe las cartas (y les da una rotación al azar para dar la impresión de ser un montón de cartas) y chequea la cantidad de cartas de un cierto número que se han jugado seguidas.

Si este número es 4 o superior, las cartas de la pila se "queman" y desaparecen del juego.

Pila

Una pila de cartas ya jugadas

Ready player one

El jugador, por el momento, representa la entidad que tiene una mano de cartas y las puede jugar. Tiene acceso a su mazo y puede usar el método _play_card para jugar la carta que tenga seleccionada en el momento. ¿Cómo se seleccionan cartas? Esa es una excelente pregunta, pero antes de responderla, debemos ir a la siguiente entidad.

Mesa que más aplauda

La última entidad del juego corresponde a la mesa (Table), la cual representa el juego actual. O sea, tiene un arreglo de jugadores, un mazo y una pila de cartas. Su objetivo es manejar las interacciones entre estas entidades durante un juego y, en el futuro, manejar la lógica macro del juego.

Ya pero, ¿y se puede hacer algo?

Luego de tener las entidades, la siguiente tarea era poder hacer algo con ellas. Primero se trabajó en un sistema para sumar cartas a la mano del jugador, y luego una forma de poder seleccionar cartas, incluyendo poder seleccionar varias cartas del mismo número.

Originalmente se intentó seleccionarlas mediante un hover del mouse, pero se encontraron problemas con el hecho de que un hover sobre una carta seleccionaba todas las cartas bajo el mouse, incluso si estaban bajo otra carta.

Seleccion 1

Intento de seleccionar cartas con el mouse

De momento se dejó de lado el seleccionar cartas con el mouse y se procedió a intentarlo con las teclas de izquierda y derecha. Esto funcionó mucho mejor, y permitió realizar una prueba inicial de enviar cartas a la pila (jugarlas) y que estas se quemen si se juntan 4 o más de un mismo número.

Quemando cartas

Demostración de jugar y quemar cartas

Como se ve en la demostración, una vez se juntan 4 cartas del número 2, estas queman toda la pila.

También se nota que las cartas no se reordenan para llenar los vacíos que dejan las cartas ya jugadas. Esta funcionalidad está en progreso pero no estaba lista para mostrar en el dev-log.

¿Qué se viene?

Faltan varias cosas. La prioridad actual está en comenzar a comparar los números de las cartas para poder jugarlas y poder reordenar las cartas en la mano para llenar los espacios vacíos y que no se salgan de la pantalla.

Luego de eso, tentativamente se viene implementar los "poderes" de las cartas, pero eso ya es un problema para nosotros del futuro. 

Eso es todo por esta semana, gracias por (ojalá) haber leído hasta el final. ¡Nos vemos en el siguiente dev-log!

Get CareKK Online

Leave a comment

Log in with itch.io to leave a comment.