Creación de solitarios en jSol

Introducción
Formato general
Tag JSOL
Tag SOLITAIRE
Tag TALON
Tag WASTE
Tag FOUNDATION
Tag COLUMN
Tag CELL
Tag RESERVE
Ejemplos

Introducción

En jSol los solitarios se definen en uno o varios ficheros de configuración que se almacenan en la carpeta xmlRules que se crea al instalar el juego. Puede haber tantos ficheros de definición de solitarios como se quiera. Pueden tener cualquier nombre, pero su extensión debe ser .xml. Al inicio del juego jSol carga e interpreta todas las definiciones existentes en todos los ficheros de configuración que encuentra en esta carpeta. 

Estos ficheros de configuración están escritos en XML (eXtendend Markup Language). No obstante, no se requieren conocimientos específicos de XML para modificar o añadir nuevas definiciones. Este documento explica en detalle el lenguaje de definición, sus parámetros y significados. 

Formato general

Formato general

Los solitarios se definen en los ficheros de configuración a través de atributos o parámetros asociados a etiquetas (o tags) que definen los distintos aspectos de comportamiento del solitario. El formato en que se describen estos atributos es:

<ETIQUETA ATRIBUTO1="Valor1" ATRIBUTO2="Valor2"> </ETIQUETA>

ETIQUETA es un nombre que describe alguno de los elementos del solitario (la pila, el pozo, los cimientos, etc.), mientras que los atributos indican el comportamiento de ese elemento del juego, o su forma de visualizarse. Observese que 

Además la estructura de los elementos es jerárquica. Es decir un elemento puede definirse dentro de otro. Por ejemplo:

<ELEMENTO1 ATRIBUTO1="Valor1" ATRIBUTO2="Valor2">
    <ELEMENTO2 ATRIBUTO1="Valor1">
    </ELEMENTO2>

</ELEMENTO1>

En este caso el elemento2 está completamente incluido dentro del elemento1.

Cabecera

Además de los elementos y sus valores los ficheros de configuración tienen un cabecera, que debe ser la que se indica a continuación. La primera y tercera líneas son obligatorias y se deben mantener sin cambios. La segunda línea es un comentario y puedes modificarla a voluntad.

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!-- jSol. 2001. Antonio Bel Puchol. abelp@arrakis.es -->
<!DOCTYPE JSOL SYSTEM "jsol.dtd">

Tags disponibles

Los elementos existentes para la definición de un solitario son:

Tag JSOL

JSOL es un tag obligatorio, que no tiene parámetros adicionales.Simplemente indica el comienzo de la definición de solitarios para jSol. Debe haber uno y sólo uno en cada fichero de configuración. Debe aparecer inmediantamente después de la cabecera y todas las definicones de solitarios (Tag SOLITAIRE) deben estar incluidas entre el comienzo y el final del tag. El aspecto de un fichero de configuración con la cabecera y el tag JSOL incluidos es:  

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!-- jSol. 2001. Antonio Bel Puchol. abelp@arrakis.es -->
<!DOCTYPE JSOL SYSTEM "jsol.dtd">

<JSOL>
<!-- Aquí vienen todas las definiciones de solitarios -->
</JSOL>

Tag SOLITAIRE

El tag SOLITAIRE define características generales del solitario como su nombre, la familia a la que pertenece, etc. Debe existir uno por cada solitario que se defina y debe estar dentro de la jerarquía iniciada por JSOL. A su vez contiene todos los demás elementos de la definición del solitario. Puede contener los siguientes atributos:

Atributo NAME

Atributo Descripción Valores posibles Valor por defecto Obligatorio
NAME Nombre del solitario Cualquier cadena de caracteres Ninguno. Si

Atributo TYPE

Atributo Descripción Valores posibles Valor por defecto Obligatorio
TYPE Tipo o familia a la que pertenece el solitario Cualquier cadena de caracteres Ninguno. Si

Atributo INI_CLASS

Atributo Descripción Valores posibles Valor por defecto Obligatorio
INI_CLASS Clase Java que inicializa los componenetes del solitario Path completo a una clase válida abelpsoft.jSol.main.JSolBuilder No

Atributo EVT_CLASS

Atributo Descripción Valores posibles Valor por defecto Obligatorio
EVT_CLASS Clase Java que gestiona los eventos del solitario. Path completo a una clase válida abelpsoft.jSol.main.JSolEvtManager No

Nota: Estos dos parámetros permiten personalizar el comportamiento de los solitarios cuando no es suficiente con el resto de los parámetros. Escapa al ámbito de este tutorial explicar como pueden codificarse estas clases. 

Atributo CARDS_CLASS

Atributo Descripción Valores posibles Valor por defecto Obligatorio
CARDS_CLASS Clase Java que gestiona el juego de cartas del solitario. Path completo a una clase válida abelpsoft.jSol.main.Cards54F No

Atributo DECKS

Atributo Descripción Valores posibles Valor por defecto Obligatorio
DECKS Número de barajas que intervienen en el solitario. 1 ó 2 Ninguno Si

Atributo HELP_FILE  

Atributo Descripción Valores posibles Valor por defecto Obligatorio
HELP_FILE Nombre del fichero html con las instrucciones del juego. Indicar sólo el nombre del fichero y extensión, que debe estar en la carpeta rules. Cadena de caracteres Ninguno Si

Atributo WIDTH

Atributo Descripción Valores posibles Valor por defecto Obligatorio
WIDTH Ancho del panel de juego expresado en número de cartas que caben en él. Usado por jSol para dimensionar el tamaño del área de juego. Numérico 7 Si

Atributo HIGH

Atributo Descripción Valores posibles Valor por defecto Obligatorio
HIGH Alto del panel de juego expresado en número de cartas que caben en él. Usado por jSol para dimensionar el tamaño del área de juego. Numérico 5 Si

Atributo OFFSET_X

Atributo Descripción Valores posibles Valor por defecto Obligatorio
OFFSET_X Espacio desde el margen del panel de juego hasta la primera carta y entre cada una de ellas (en dirección horizontal). Expresado en % respecto del ancho de una carta Numérico 20 No

Atributo OFFSET_Y

Atributo Descripción Valores posibles Valor por defecto Obligatorio
OFFSET_Y Espacio desde el margen del panel de juego hasta la primera carta y entre cada una de ellas (en dirección vertical). Expresado en % respecto del alto de una carta Numérico 20 No

Tag TALON  

El tag TALON sirve para definir las características de funcionamiento del talon, o mazo de cartas, que se coloca boca abajo y de las que el jugador va extrayendo cartas para colocarlas en juego. No es obligatorio aunque existe en la mayor parte de los solitarios. Tiene los siguientes atributos:

Atributo STEP

Atributo Descripción Valores posibles Valor por defecto Obligatorio
STEP Número de cartas que se toman del mazo cada turno Cualquier valor entero positivo. 1 No

Atributo REDEAL

Atributo Descripción Valores posibles Valor por defecto Obligatorio
REDEAL Número de reciclados permitidos en el juego. Reciclar es la operación de volver a colocar de nuevo en el mazo las cartas que quedan en el pozo (pila de descartes, tag WASTE). En algunos solitarios puede tener un significado especial.  Cualquier valor entero positivo o la constante. NO_LIMIT (reciclados ilimitados) NO_LIMIT No

Atributo TALON_MODE

Atributo Descripción Valores posibles Valor por defecto Obligatorio
TALON_MODE Destino de las cartas que salen de Talon. TO_WASTE indica que van al Waste (pila de descartes, tantas cartas como indique STEP). TO_COLUMNS indica que van a las columns (tantas cartas como indique STEP a cada columna) TO_WASTE
TO_COLUMNS
TO_WASTE No

Atributo X

Atributo Descripción Valores posibles Valor por defecto Obligatorio
X Coordenada X de la esquina superior izquierda del elemento. La unidad de medida es el ancho de la carta.   Valor entero positivo Ninguno Si

Atributo Y

Atributo Descripción Valores posibles Valor por defecto Obligatorio
Y Coordenada Y de la esquina superior izquierda del elemento. La unidad de medida es el alto de la carta.   Valor entero positivo Ninguno Si

Tag WASTE  

WASTE es la pila de descartes donde, normalmente se acumulan las cartas que salen del mazo o talon. Las cartas se colocan boca arriba y sólo es visible la última. Del pozo las cartas pueden pasar a otros elementos del solitario como las columnas o los cimientos (foundations). No es obligatorio aunque existe en la mayor parte de los solitarios.

Atributo FROM_COLS

Atributo Descripción Valores posibles Valor por defecto Obligatorio
FROM_COLS Indica si el waste puede recibir cartas desde el talon y las columnas (TRUE) o sólo desde el talon (FALSE) TRUE
FALSE
FALSE No

Atributo CARD_TYPE

Atributo Descripción Valores posibles Valor por defecto Obligatorio
CARD_TYPE Si el atributo FROM_COLS es TRUE, este atributo indica el tipo de cartas que admite el waste:
ANY_CARD: Cualquier carta.
NEXT_PREV_ROLL: Carta con un valor siguiente o previo a la última. Después del rey viene el as y viceversa.
NEXT_PREV_NO_ROLL: Carta con un valor siguiente o previo a la última.
ANY_CARD
NEXT_PREV_ROLL
NEXT_PREV_NO_ROLL
ANY_CARD No

Nota: La mayor parte de los solitarios usan el valor ANY_CARD. Los otros valores implican que la pila de descartes no es tal (Ver solitarios de tipo Golf).

Atributo END_GAME

Atributo Descripción Valores posibles Valor por defecto Obligatorio
END_GAME Si es TRUE, indica que el juego finaliza (exitosamente) cuando el waste tiene todas las cartas en juego. TRUE
FALSE
FALSE No

Nota: Igual que el parámetro anterior. La mayoría de los solitarios concluyen cuando todas las cartas están en los cimientos. Sólo para propósitos especiales.

Atributo X

Atributo Descripción Valores posibles Valor por defecto Obligatorio
X Coordenada X de la esquina superior izquierda del elemento. La unidad de medida es el ancho de la carta.    Valor entero positivo Ninguno Si

Atributo Y

Atributo Descripción Valores posibles Valor por defecto Obligatorio
Y Coordenada Y de la esquina superior izquierda del elemento. La unidad de medida es el alto de la carta.   Valor entero positivo Ninguno Si

Tag FOUNDATION  

Los cimientos (o foundations) son los lugares donde se van desplazando las cartas ordenadamente desde las columnas o desde la pila de descartes (waste). Hay cuatro foundations si se usa una baraja u ocho si se usan dos. No es un elemento obligatorio aunque existe en la mayor parte de los solitarios. De forma estandar (a menos que se indique con algún otro parámetro) el juego finaliza cuando todas las cartas del juego se desplazan a los cimientos. El tag FOUNDATION define los atributos comunes a todos los cimientos. Por tanto solo hay un elemento FOUNDATION por solitario (o ninguno).

Atributo FOUN_TYPE

Atributo Descripción Valores posibles Valor por defecto Obligatorio
FOUN_TYPE Tipo del cimiento: 
SAME_SUIT: En cada cimiento todas las cartas deben ser del mismo palo.
NO_SUIT: En cada cimiento las cartas pueden ser de cualquier palo respetando la secuencia indicada por el atributo ORDER
DIFERENT_COLOR: En cada cimiento cada carta debe ser de un colo distinto a la anterior.
SAME_SUIT
NO_SUIT
DIFERENT_COLOR
SAME_SUIT No

Atributo ORDER

Atributo Descripción Valores posibles Valor por defecto Obligatorio
ORDER Indica el orden del cimiento, ascendente o descendente.
ASCENDING: Cimiento en orden ascendente. Cada carta debe ser la siguiente a la última introducida.
DESCENDING: Cimiento en orden descendente. Cada carta debe ser la anterior a la última introducida.
ASCENDING
DESCENDING
ASCENDING No

Atributo BASE_CARD

Atributo Descripción Valores posibles Valor por defecto Obligatorio
BASE_CARD Indica la carta base del cimiento. Si no se especifica la carta inicial es siempre el As, si el orden del cimiento es ascendente o el rey si es descendente. La constante FIRST_CARD indica que el valor inicial del cimiento lo da la primera carta que se coloca en él. Número de 0 (As) a 12 (rey) o la cte. FIRST_CARD Ninguno No

Atributo RETOURNABLE

Atributo Descripción Valores posibles Valor por defecto Obligatorio
RETOURNABLE Indica si las cartas pueden volver a salir del cimiento a las columnas (TRUE) o no(FALSE). TRUE
FALSE
TRUE No

Atributo X

Atributo Descripción Valores posibles Valor por defecto Obligatorio
X Coordenada X de la esquina superior izquierda del elemento. La unidad de medida es el ancho de la carta.    Valor entero positivo Ninguno Si

Atributo Y

Atributo Descripción Valores posibles Valor por defecto Obligatorio
Y Coordenada Y de la esquina superior izquierda del elemento. La unidad de medida es el alto de la carta.    Valor entero positivo Ninguno Si

Atributo ORIENTATION

Atributo Descripción Valores posibles Valor por defecto Obligatorio
ORIENTATION Indica la orientación de los cimientos en la pantalla.
HORIZONTAL: Los cimientos se colocan uno al lado del otro, en disposición horizontal.
VERTICAL: Los cimientos se colocan uno debajo del otro, en disposición vertical.
MATRIX: Orientación en forma de matriz (Filas y columnas)
HORIZONTAL
VERTICAL
MATRIX
HORIZONTAL No

Atributo DISTANCE_X

Atributo Descripción Valores posibles Valor por defecto Obligatorio
DISTANCE_X Es la separación en horizontal entre dos cimientos. Se aplica cuando la orientación es horizontal o matricial. Expresada en % del ancho de una carta.  Valor entero positivo 20 No

Atributo DISTANCE_Y

Atributo Descripción Valores posibles Valor por defecto Obligatorio
DISTANCE_Y Es la separación en vertical entre dos cimientos. Se aplica cuando la orientación es vertical o matricial. Expresada en % del alto de una carta.  Valor entero positivo 20 No

Atributo BY_ROW 

Atributo Descripción Valores posibles Valor por defecto Obligatorio
BY_ROW Num. de elementos por fila en caso de que la orientación sea MATRIX Valor entero positivo Ninguno No

Tag COLUMN  

Las columnas constituyen normalmente el área de juego más importante. Las cartas suelen pasar de la pila de descartes (waste) a las columnas, donde se agrupan según criterios que dependen de cada solitario. Las cartas en las columnas pueden moverse de unas columnas a otras, según reglas también variables. En general, las cartas pueden salir de las columnas para ir a los cimientos (foundations). El tag COLUMN define las características del conjunto de columnas de un solitario. Es opcional, pero existe casi siempre. Los atributos que se pueden usar en la definición de las columnas son:

Atributo NUM_COLS

Atributo Descripción Valores posibles Valor por defecto Obligatorio
NUM_COLS Número de columnas Valor entero positivo Ninguno Si

Atributo INIT_NUM_CARDS

Atributo Descripción Valores posibles Valor por defecto Obligatorio
INIT_NUM_CARDS Número inicial de cartas en cada columna. Puede ser un número (todas las columnas tendrán el mismo número de cartas), o la constante KLONDIKE_STYLE (Una carta en la primera columna, dos en la segunda y así sucesivamente) Valor entero positivo
KLONDIKE_STYLE
Ninguno Si

Atributo INIT_RANK

Atributo Descripción Valores posibles Valor por defecto Obligatorio
INIT_RANK Valor de la carta (rank) que puede ocupar una columna vacía. Puede ser un número del 0 (As) al 12 (rey) o las constantes ANY_RANK (Columnas vacías pueden ser ocupadas por cualquier carta) o NO_FILL_EMPTY (Columnas vacías no se ocupan) Valor entero positivo entre 0 y 12
ANY_RANK
NO_FILL_EMPTY
ANY_RANK No

Atributo NEXT_CARD

Atributo Descripción Valores posibles Valor por defecto Obligatorio
NEXT_CARD Condición para formar una secuencia válida. Indica como debe ser la siguiente carta que entra en comparación con la última. ANY_CARD
DIFERENT_COLOR
DIFERENT_SUIT
SAME_COLOR
SAME_SUIT
ANY_CARD No

Atributo SEQUENCE

Atributo Descripción Valores posibles Valor por defecto Obligatorio
SEQUENCE Indica el orden de la columna, ascendente o descendente.
ASCENDING: Columna en orden ascendente. Cada carta debe ser la siguiente a la última introducida.
DESCENDING: Columna en orden descendente. Cada carta debe ser la anterior a la última introducida.
NOT_SEQUENCE: No hay secuencia. La carta puede ser cualquier valor, independientemente de la anterior.
ASCENDING
DESCENDING
NOT_SEQUENCE
ASCENDING No

Atributo MOVE_COLUMNS

Atributo Descripción Valores posibles Valor por defecto Obligatorio
MOVE_COLUMNS Indica las condiciones que debe reunir una columna o fragmento de columna para que pueda moverse a otra columna.
FIXED: Se mueven un número constante de cartas determinado por el atributo MAX_CARDS_MOV
FREE_CELL_STYLE: vease este juego.
VALID_COLUMN: Se pueden mover columnas siempre que formen una columna válida.
SAME_SUIT: Se pueden mover columnas que formen una columna válida y sean del mismo palo.
SAME_COLOR: Se pueden mover columnas que formen una columna válida y sean del mismo color.
YUKON_STYLE: Ver solitario Yukon
SPIDER_STYLE: Ver solitario Spider
NONE: No se permite movimiento de cartas entre columnas
FIXED
FREE_CELL_STYLE
VALID_COLUMN
SAME_SUIT
SAME_COLOR
YUKON_STYLE
SPIDER_STYLE
NONE
VALID_COLUMN No

Atributo MAX_CARDS_MOV

Atributo Descripción Valores posibles Valor por defecto Obligatorio
MAX_CARDS_MOV Número máximo de cartas que se pueden mover en una columna. Usado cuando MOVE_COLUMNS es FIXED Valor entero positivo Ninguno No

Atributo COVER_MODE

Atributo Descripción Valores posibles Valor por defecto Obligatorio
COVER_MODE Indica si las cartas de las columnas están cubiertas o no. Independientemente de su valor, la última de cada columna siempre está descubierta. 
COVERED: Cubiertas
UNCOVERED: Descubiertas
COVERED
UNCOVERED
COVERED No

Atributo CYCLE

Atributo Descripción Valores posibles Valor por defecto Obligatorio
CYCLE Indica si las columnas son cíclicas o no. Una columna es cíclica cuando después del as se puede colocar el rey (Secuencia descendente) o después del rey se puede colocar el as (Secuencia ascendente) TRUE
FALSE
FALSE No

Atributo COL_ORIENTATION

Atributo Descripción Valores posibles Valor por defecto Obligatorio
COL_ORIENTATION Indica como se colocan las cartas en una columna. Una al lado de otra (HORIZONTAL) o una debajo de otra (VERTICAL). No confundir con el parámetro ORIENTATION que indica la posición de las columnas en la pantalla. HORIZONTAL
VERTICAL
VERTICAL No

Atributo COL_LENGTH

Atributo Descripción Valores posibles Valor por defecto Obligatorio
COL_LENGTH Indica la longitud de la columna, expresada en número de cartas que caben en la misma. Es aplicable cuando COL_ORIENTATION es VERTICAL.Debe ser suficiente para albergar todas las posibles cartas que entran en una columna.  Entero positivo 18 No

Atributo COL_WIDTH

Atributo Descripción Valores posibles Valor por defecto Obligatorio
COL_WIDTH Indica la longitud de la columna, expresada en número de cartas que caben en la misma. Es aplicable cuando COL_ORIENTATION es HORIZONTAL.Debe ser suficiente para albergar todas las posibles cartas que entran en una columna.  Entero positivo 18 No

Atributo X

Atributo Descripción Valores posibles Valor por defecto Obligatorio
X Coordenada X de la esquina superior izquierda del elemento. La unidad de medida es el ancho de la carta.     Valor entero positivo Ninguno Si

Atributo Y

Atributo Descripción Valores posibles Valor por defecto Obligatorio
Y Coordenada Y, en pixels, de la esquina superior izquierda del elemento. La unidad de medida es el alto de la carta.     Valor entero positivo Ninguno Si

Atributo ORIENTATION

Atributo Descripción Valores posibles Valor por defecto Obligatorio
ORIENTATION Indica la orientación de los cimientos en la pantalla.
HORIZONTAL: Los cimientos se colocan uno al lado del otro, en disposición horizontal.
VERTICAL: Los cimientos se colocan uno debajo del otro, en disposición vertical.
MATRIX: Orientación en forma de matriz (Filas y columnas)
HORIZONTAL
VERTICAL
MATRIX
HORIZONTAL No

Atributo DISTANCE_X

Atributo Descripción Valores posibles Valor por defecto Obligatorio
DISTANCE_X Es la separación en horizontal entre dos cimientos. Se aplica cuando la orientación es horizontal o matricial. Expresada en % del ancho de una carta.  Valor entero positivo 20 No

Atributo DISTANCE_Y

Atributo Descripción Valores posibles Valor por defecto Obligatorio
DISTANCE_Y Es la separación en vertical entre dos cimientos. Se aplica cuando la orientación es vertical o matricial. Expresada en % del alto de una carta.   Valor entero positivo 20 No

Atributo OVERLAP_X

Atributo Descripción Valores posibles Valor por defecto Obligatorio
OVERLAP_X Es la distancia de solape en sentido horizontal, entre dos cartas de la columna. Expresada en % del ancho de una carta. Valor entero positivo 15 No

Atributo OVERLAP_Y

Atributo Descripción Valores posibles Valor por defecto Obligatorio
OVERLAP_Y Es la distancia de solape en sentido vertical, entre dos cartas de la columna. Expresada en % del alto de una carta. Valor entero positivo 20 No

Atributo BY_ROW

Atributo Descripción Valores posibles Valor por defecto Obligatorio
BY_ROW Num. de elementos por fila en caso de que la orientación sea MATRIX Valor entero positivo Ninguno No

Tag CELL  

Las celdas son un elemento opcional que sirven como almacenamiento intermedio para una o varias cartas. El tag CELL define las características de todas las celdas del solitario.Se pueden usar los siguientes atributos: 

Atributo NUM_CELLS

Atributo Descripción Valores posibles Valor por defecto Obligatorio
NUM_CELLS Número de celdas Valor entero positivo Ninguno Si

Atributo NUM_CARDS

Atributo Descripción Valores posibles Valor por defecto Obligatorio
NUM_CARDS Número máximo de cartas que puede contener una celda. Valor entero positivo 1 No

Atributo CARD_RANK

Atributo Descripción Valores posibles Valor por defecto Obligatorio
CARD_RANK Valor (rank) de la carta admitida en la celda. Si es distinto de null la celda sólo adminirá cartas con ese valor. Número del 0 (As) al 12 (Rey) ninguno No

Atributo CARD_SUIT

Atributo Descripción Valores posibles Valor por defecto Obligatorio
CARD_SUIT Palo (suit) de la carta admitida en la celda. Si es distinto de null la celda sólo adminirá cartas con este palo DIAMONDS
HEART
SPADES
CLUB
ninguno No

Atributo X

Atributo Descripción Valores posibles Valor por defecto Obligatorio
X Coordenada X de la esquina superior izquierda del elemento. La unidad de medida es el ancho de la carta.      Valor entero positivo Ninguno Si

Atributo Y

Atributo Descripción Valores posibles Valor por defecto Obligatorio
Y Coordenada Y de la esquina superior izquierda del elemento. La unidad de medida es el ancho de la carta.      Valor entero positivo Ninguno Si

Atributo ORIENTATION

Atributo Descripción Valores posibles Valor por defecto Obligatorio
ORIENTATION Indica la orientación de los cimientos en la pantalla.
HORIZONTAL: Los cimientos se colocan uno al lado del otro, en disposición horizontal.
VERTICAL: Los cimientos se colocan uno debajo del otro, en disposición vertical.
HORIZONTAL
VERTICAL
HORIZONTAL No

Atributo DISTANCE_X

Atributo Descripción Valores posibles Valor por defecto Obligatorio
DISTANCE_X Es la separación en horizontal entre dos cimientos. Se aplica cuando la orientación es horizontal o matricial. Expresada en % del ancho de una carta.   Valor entero positivo 10 No

Atributo DISTANCE_Y

Atributo Descripción Valores posibles Valor por defecto Obligatorio
DISTANCE_Y Es la separación en pixels en vertical entre dos cimientos. Se aplica cuando la orientación es vertical o matricial. Expresada en % del alto de una carta.   Valor entero positivo 10 No

Tag RESERVE

La reserva es un elemento adicional presente en algunos solitarios (tipo Canfield, por ejemplo). Almacena un número determinado de cartas que pueden salir a algún otro elemento (Normalmente las columnas o los cimientos), pero no pueden entrar nuevas cartas. Es un elemento opcional.

Atributo NUM_CARDS

Atributo Descripción Valores posibles Valor por defecto Obligatorio
NUM_CARDS Número máximo de cartas que puede contener la reserva.. Valor entero positivo 1 No

Atributo COVER_MODE

Atributo Descripción Valores posibles Valor por defecto Obligatorio
COVER_MODE Indica si las cartas de la reserva están cubiertas o no. Independientemente de su valor, la última de cada columna siempre está descubierta. 
COVERED: Cubiertas
UNCOVERED: Descubiertas
COVERED
UNCOVERED
COVERED No

Atributo AUTOMATIC

Atributo Descripción Valores posibles Valor por defecto Obligatorio
AUTOMATIC Indica si se coloca de forma automática una carta al inicio de una columna cuando está se queda vacía. TRUE
FALSE
TRUE No

Atributo RES_ORIENTATION

Atributo Descripción Valores posibles Valor por defecto Obligatorio
RES_ORIENTATION Indica como se colocan las cartas en la reserva. Una al lado de otra (HORIZONTAL) o una debajo de otra (VERTICAL).  HORIZONTAL
VERTICAL
VERTICAL No

Atributo RES_LENGTH

Atributo Descripción Valores posibles Valor por defecto Obligatorio
RES_LENGTH Indica la longitud de la reserva, expresada en número de cartas que caben en la misma.. Es aplicable cuando RES_ORIENTATION es VERTICAL.Debe ser suficiente para albergar todas las posibles cartas que entran en la reserva.  Entero positivo 18 No

Atributo RES_WIDTH

Atributo Descripción Valores posibles Valor por defecto Obligatorio
RES_WIDTH Indica la anchura de la reserva, expresada en número de cartas que caben en la misma. Es aplicable cuando RES_ORIENTATION es HORIZONTAL.Debe ser suficiente para albergar todas las posibles cartas que entran en la reserva.  Entero positivo 18 No

Atributo OVERLAP_X

Atributo Descripción Valores posibles Valor por defecto Obligatorio
OVERLAP_X Es la distancia de solape en sentido horizontal, entre dos cartas. Expresada en % del ancho de una carta.  Valor entero positivo 15 No

Atributo OVERLAP_Y

Atributo Descripción Valores posibles Valor por defecto Obligatorio
OVERLAP_Y Es la distancia de solape en sentido vertical, entre dos cartas. Expresada en % del alto de una carta. Valor entero positivo 25 No

Atributo X

Atributo Descripción Valores posibles Valor por defecto Obligatorio
X Coordenada X de la esquina superior izquierda del elemento. La unidad de medida es el ancho de la carta.  Valor entero positivo Ninguno Si

Atributo Y

Atributo Descripción Valores posibles Valor por defecto Obligatorio
Y Coordenada Y de la esquina superior izquierda del elemento. La unidad de medida es el ancho de la carta.   Valor entero positivo Ninguno Si

Ejemplos

La mejor forma de definir nuevos solitarios es usar las definiciones existentes para otros del mismo tipo e ir realizando las modificaciones necesarias hasta obtener la nueva definición. A muestra de ejemplo aquí están las definiciones de dos de los solitarios más conocidos: klondike y free cell. 

<!-- Definición para Klondike. Una baraja, cartas de una en una, reciclados infinitos -->
<SOLITAIRE NAME="Klondike" TYPE="Klondike" HELP_FILE="Klondike" DECKS="1" 
        WIDTH="7" HIGH="5" >
    <TALON STEP="1" REDEAL="NO_LIMIT" X="0" Y="0"> </TALON>
    <WASTE X="1" Y="0" > </WASTE>
    <FOUNDATION FOUN_TYPE="SAME_SUIT" ORDER="ASCENDING" 
        X="3" Y="0" ORIENTATION="HORIZONTAL" > </FOUNDATION>
    <COLUMN NUM_COLS="7" INIT_NUM_CARD="KLONDIKE_STYLE" 
        INIT_RANK="12" NEXT_CARD="DIFERENT_COLOR" 
        X="0" Y="1" ORIENTATION="HORIZONTAL"> </COLUMN>
</SOLITAIRE>

<!-- Definición para Free Cell. Una baraja, 4 celdas -->
<SOLITAIRE NAME="Free Cell" TYPE="Free Cell" HELP_FILE="FreeCell" DECKS="1" 
        INI_CLASS="abelpsoft.cardgames.SolSuite.games.FreeCellBuilder" 
        WIDTH="8" HIGH="5" >
    <FOUNDATION FOUN_TYPE="SAME_SUIT" ORDER="ASCENDING" 
        X="4" Y="0" ORIENTATION="HORIZONTAL" > </FOUNDATION>
    <COLUMN NUM_COLS="8" INIT_NUM_CARD="6" NEXT_CARD="DIFERENT_COLOR" 
        MOVE_COLUMNS="FREE_CELL_STYLE" COVER_MODE="UNCOVERED"
        X="0" Y="1" ORIENTATION="HORIZONTAL"> </COLUMN>
    <CELL NUM_CELLS="4" NUM_CARDS="1" 
        X="0" Y="0" ORIENTATION="HORIZONTAL"> </CELL>
</SOLITAIRE>