Gráficos

Esta clase es la encargada de actualizar la ventana para que refleje el estado del tapete.

Necesitamos almacenar varios datos:

tapete:
Referencia al tapete, la necesitaremos para poder actualizar la pantalla.
fondo:
Un pincel para pintar el fondo del tapete. Lo tradicional es verde.
hMascara:
Manipulador del mapa de bits que usaremos de máscara para que las esquinas de las cartas sean transparentes.
hDorso:
Manipilador del mapa de bits del dorso de los naipes. Lo usaremos para mostrar los naipes del mazo.
dorso:
Además almecenaremos el identificador del mapa de bits que usaremos como dorso.
X
X
O
O
hX y hO:
Manipuladores de los mapas de bits correspondientes a las posiciones de las pilas en el tapete, son los gráficos del aspa y el círculo.
hNaipe:
Array de 52 manipuladores de mapas de bits, uno para cada faz de los naipes.
hWnd:
Un manipulador de la ventana de la aplicación.
hDC:
Un manipulador del DC de la ventana.
hLib:
Un manipulador de la biblioteca "cards.dll".
w y h:
Dimensiones de ancho y alto, respectivamente, de los mapas de bits de cada naipe.
zona:
Un array de diez juegos de coordenadas, con las posiciones de cada pila en la pantalla.
reg:
Un array de diez manipuladores de region, una para cada pila. Usaremos estas regiones para saber qué pila ha seleccionado el jugador y para actualizar la pantalla después de cada movimiento.
hArrastre:
Un manipulador del mapa de bits que usaremos en operaciones de arrastre de naipes. En este mapa de bits guardaremos lo que hay detrás del naipe para poder restaurar la pantalla en cada fase del movimiento.
hMover:
Manipulador del cursor que usaremos cuando se estén realizando operaciones de arrastre de naipes.
hFlecha:
Manipulador del cursor que usaremos cuando no se estén realizando operaciones de arrastre.
raton:
Objeto para guardar las coordenadas del raton en operaciones de arrastre de naipes.
desp:
Objeto para almacenar la diferencia de coordenadas entre el cursor del ratón y la esquina superior izquierda del naipe pulsado. Estos datos son necesarios para que el naipe pueda ser arrastrado independientemente del punto en el que lo hayamos pinchado con el ratón.
movDC:
Manipulador de DC de memoria para manejar la parte oculta por el naipe durante su arrastre.

En cuanto a las funciones:

Constructor:
Actualiza los valores recibidos como parámetros, es decir, el tapete, el manipulador de ventana y el de la instancia. Obtiene el manipulador de DC, y los manipuladores de todos los mapas de bits, crea el pincel para el fondo, las dimensiones de los mapas de bits, y calcula los valores inciales de las coordenads y regiones de cada pila.
Destructor:
Libera los mapas de bits, y los manipuladores de biblioteca y de pincel.
Iniciar:
Iniciar las coordenadas y regiones asociadas a cada zona. Esto será necesario hacerlo cada vez que empiece una partida.
MostrarTapete:
Actualiza toda la ventana.
Puntuacion:
Muestra los contadores de puntuación de la partida actual.
MostrarCarta:
Muestra el naipe indicado en las coordenadas indicadas, la imagen dependerá de si el valor del naipe es o no visible. Este método estará sobrecargado para que se puedan especificar las coordendas mediante un objeto 'Coor' o mediante dos enteros.
MostrarBitmap:
Muestra en pantalla el mapa de bits indicado, en las coordenadas indicadas.
MostrarMovimiento:
Actualiza las zonas de pantalla correspondientes a la pila de origen y destino del movimiento de un naipe.
RatonEnZona:
Devuelve el identificador de la zona sobre la que se encuentran las coordenadas indicadas, o -1 si la pila asociada a esa zona está vacía o si las coordenadas no se corresponden con ninguna zona.
ComienzaArrastre:
Llamaremos a este método cuando el usuario pulse el botón izquierdo del ratón para saber si se da comienzo a una operación de arrastre. Se comprueba si las coordenadas indicadas corresponden a una pila, y se devuelve el valor de esa pila si es así, o -1 si no. También se actualiza el dato miembro 'desp', que nos servirá durante todo el proceso de arrastre del naipe.
IniciaCaptura:
Las consecuencias gráficas del inicio de un arrastre son que se debe borrar el naipe arrastrado, actualizando su área de pantalla, ajustar la región correspondiente a esa pila, capturar la zona de pantalla que ocupará la carta a continuación y, finalmente, mostrar la carta.
EnArrastre:
Borra la carta en la posición anterior, usando el mapa de bits almacenado en movDC, captura el mapa de bits en la próxima posición del naipe arrastrado y vuelve a pintar el naipe en la nueva posición.
FinArrastre:
Borra por última vez el naipe, usando el mapa de bits en movDC, y calcula la pila de destino del naipe arrastrado. Si no se ha soltado en una pila válida, retorna con -1.
AjustarRegion:
Ajusta la región correspondiente a la pila indicada como parámetro.
CoordenadasZona:
Obtiene las coordenadas de la zona indicada en el parámetro.
CambiarDorso:
Cambia la imagen usada para el dorso de las cartas.
Dorso:
Devuelve el valor del identificador del mapa de bits usado para el dorso.
Lib:
Devuelve el manipulador de la biblioteca "cards.dll".
W:
Devuelve la anchura de los mapas de bits usados para los naipes.
H:
Devuelve la altura de los mapas de bits usados para los naipes.
Mascara:
Devuelve el manipulador del mapa de bits usado como máscara para mostrar los naipes.
Mover:
Devuelve el manipulador del cursor de movimiento.
Flecha:
Devuelve el manipulador del cursor de flecha.