PDA

Ver la versión completa : Juego: Ajedrez capitalista



Arielo
25/02/2009, 09:05
Hoy comienzo con este tema, donde desarrollaremos un juego basado en el ajedrez. Concretamente, en el caballo y su movimiento. Además, se jugará en un tablero de 8x8 casillas, como el ajedrez. El juego no está aún programado, pero lo iremos haciendo a medida que avance el tema.

El objetivo del juego será recolectar la mayor cantidad de dinero posible, dentro de un tiempo determinado. El dinero irá apareciendo en forma de monedas, ubicado en casillas aleatorias, y estará en el tablero por un tiempo indefinido, aunque breve.

Comenzaremos con explicar el movimiento del caballo de ajedrez, para quien no lo conozca.

Este se mueve en forma de "L" por el tablero, llegando a una casilla destino que estará a una fila y dos columnas, o dos filas y una columna de distancia de la actual, en cualquier sentido. Claro que esto dependerá de la casilla donde esté ubicado, ya que si está en un borde, sólo podrá hacer algunos de esos movimientos.
En la imagen adjunta, se puede ver los distintos movimientos posibles de un caballo.



Aquí podemos apreciar otra característica de este movimiento: siempre, la casilla de destino, tendrá un color distinto a la actual.

Arielo
25/02/2009, 09:23
Primero, dividiremos el tablero en Filas (F) y Columnas (C). La primera Fila tendrá el número 0 (cero) y la primera Columna tendrá el número 0 (cero)
- Las Filas comprenderán todas las hileras de casillas horizontales.
- Las Columnas, comprenderán todas las hileras de casillas verticales.

Para identificar las casillas, las nombraremos por los dos números que identifican tanto la Fila como la Columna que se cruzan en esa casilla. Por ejemplo, en el tablero que vemos en el adjunto, el Caballo está ubicado en la casilla (4,4)

A su vez, cada casilla (comenzando por la 0,0) tendrá un número correlativo que la identificará inequívocamente del resto. Así, a la casilla (0,0) le corresponde el número 0 (cero), a la (0,1) el número 1, y así sucesivamente hasta llegar a la última casilla, (7,7), a la que le corresponde el número 63, ya que un tablero de ajedrez tiene 64 casillas, y comenzamos por la 0 (cero)
De esta manera, el Caballo que tenemos ubicado sobre el tablero, lo está en la casilla 36.

Para conocer qué número le corresponde a cada casilla, bastará con multiplicar por 8 el número de Fila, y sumarle el número de Columna de dicha casilla. Por ejemplo, para llegar al número de casilla donde se encuentra el caballo (Fila 4, Columna 4), tenemos que hacer la siguiente cuenta:


nc = (F*8) + C
nc = (4*8) + 4
nc = 32 + 4
nc = 36


.

Arielo
25/02/2009, 09:56
Movimiento del caballo


Ya tenemos todo listo como para tratar el tema del movimiento del Caballo por el tablero.

Viendo los esquemas de los movimientos posibles, y teniendo en cuenta la numeración de filas y columnas del tablero, podemos ver que es posible definir los 8 movimientos del caballo en base a la diferencia de Fila y Columna que tiene la casilla de destino, con respecto a la actual.

Para esto, haremos un diagrama sobre el tablero, numerando los posibles movimientos, y viendo la diferencia de F,C de cada uno (ver adjunto)

De esta manera, comprobamos que:
Para realizar el movimiento 1, debemos restar 2 a la Fila, y 1 a la Columna actuales. Si estamos en (4,4), haremos:
FilaDestino = 4 - 2 = 2
ColumnaDestino = 4 - 1 = 3
O sea, llegamos a la casilla (2,3), cuya numeración será, de acuerdo a lo que ya vimos: (2*8)+3 = 19

Para el mov. 2, restaremos 2 a la Fila, y sumaremos 1 a la Columna actuales. La casilla de destino (2,5) será la número (2*8)+5 = 21

Resumiendo, las cuentas que deberemos sacar para lograr los distintos movimientos, son:


Mov.| F| C
1|-2|-1
2|-2|+1
3|-1|+2
4|+1|+2
5|+2|+1
6|+2|-1
7|+1|-2
8|-1|-2


Con este método, lograremos saber rápidamente si el movimiento es posible o no: si la Fila o Columna de destino es menor a 0 (cero) o mayor a 7, entonces ese movimiento no es posible desde la casilla actual.

.

Arielo
25/02/2009, 11:48
Comencemos a armar el juego...

En un Form nuevo, agregar un array de 64 controles Image.
Estos controles tendrán como nombre imgCasilla(). El tamaño de estos controles será de 34x34 pixeles.
Disponerlos en una grilla de 8x8

Agregar otro array de 64 elementos, de controles Shape.
De éstos, 32 tendrán como fondo, el color Blanco, y 32 otro color bien diferenciado. El nombre de los controles será shpCasilla(). Tamaño: 34x34 pixeles.
Disponerlos en la misma grilla que los Image, de forma tal que quede armado el tablero de ajedrez. Puede ser necesario colocarlos por detrás de los Image, haciendo clic derecho sobre ellos, y seleccionando "Enviar al Fondo".

Agregar un nuevo control Image, éste de nombre imgCaballo, el que contendrá una imagen del caballo de ajedrez que utilizaremos como personaje principal (Adjunto una imagen) Este control lo ubicaremos sobre el tablero de tal manera, que su posición inicial sea Fila 3 y Columna 4.

Agregar dos controles Label. Ambos serán invisibles para el jugador (setear propiedad Visibe a False) Uno se llamará filaCab y el otro colCab. El valor inicial de filaCab será 3, y el de colCab será 4. En estos labels, iremos colocando la fila actual del caballo (en filaCab) y la columna actual (en colCab).
Lo haremos así sólo para no utilizar variables...

Agregaremos otro control Image, con la moneda que habrá que ir recolectando. Este Image se llamará imgMoneda, y también será invisible cuando ejecutemos el juego. Adjunto imagen.

Agregar por último, dos controles Timer. Uno contará en tiempo transcurrido desde la última vez que recolectamos una moneda (tmrUltMon), y el otro el tiempo que transcurrió desde que apareció una moneda en el tablero (tmrMoneda). Por el momento, la propiedad Interval de éstos, será igual a 0, por lo que no contarán tiempo.

Una vez terminado este paso, les debería haber quedado un Form como el del adjunto.



continuará...


.