lunes, 23 de enero de 2012

QIX

Estaba tratando de recordar un juego de hace un porrón de años que jugué en el ordenador PC de unos vecinos.
Lo expuse gráficamente en StripGenerator y rápidamente llegó la respuesta, del juego base: QIX

El que yo recordaba sin duda estaba basado en QIX, pero era un clon diseñado para multijugador. De modo que entre 2 y 4 jugadores competían apiñados en torno al teclado, cada cual con su propio vector, cerrando sus áreas y tratando de no ser pillados por los rivales con un área sin cerrar.

O al menos esa es la idea que tengo y lo que estoy programando con Pygame. Lo más difícil ya lo tengo hecho, el relleno de las áreas, que me dió varios quebraderos de cabeza este domingo... hasta que dí con la maldita línea que estaba estropeando el invento, la pulga que hacía que la máquina cascase.

El resultado es éste:

Cuando se prevee el relleno de un área porque un jugador ha realizado un cierre, se ejecuta un rastreo en busca del contorno, o mejor dicho, de los dos contornos posibles.
Desde la cabeza del vector hasta el punto de despegue sólo hay un camino, pero una vez llegamos ahí...¿bordeamos el contorno en sentido horario o antihorario?
Tomamos ambos caminos, calculamos las áreas encerradas -aproximadamente mediante un algoritmo rápido que encontré googleando-, y elegimos el que encierre un área menor (de lo contrario la partida podría quedar decidida nada más empezar).
A continuación, rellenando una matriz con las coordenadas de los puntos recogidos a lo largo del contorno donde éste hace quiebro, se rellena el polígono resultante.
Si se superase el tamaño de la matriz definida el relleno quedaría incompleto. Le he puesto 250 (por ejemplo) coordenadas de límite, que creo que raramente se alcanzarán en un juego real por muchas revueltas que logre dar un jugador.
En el juego competirán hasta 4 jugadores, que parten de los 4 lados del campo de juego cuadrado.Ganará el que más halla rellenado de su color al final de la partida, debiendo para ello ir cerrando rastros de su propia cola con los bordes del campo o con los nuevos bordes creados que delimitan las zonas coloreadas por cualquier jugador (aquí líneas naranjas).

Hay tres formas de fipiarla:
1. Autoatrapamiento

2. Ser rellenado por otro jugador

3. Ser alcanzado en la cola por otro jugador antes de haber cerrado contorno.
Estas pifias te dejarán fuera de juego, pero no te quitarán los rellenos conseguidos, de modo que la partida no está necesariamente perdida.

Estaría bien poder jugar esto en red, pero al igual que ocurre el Armagetron, el lag es todo un problema, cuando tú ves que has cerrado a un rival... y luego resulta que a quien han cerrado es a tí.
Aunque el mayor problema es que ni si quiera sé hacer funcionar esto en red.


Enlaces:

1 comentario:

Borobia dijo...

Pintaza. ¿Cuándo podremos jugar a él? :D