Como mi primer proyecto de WPF, estoy intentando crear una aplicación para jugar un juego de cartas similar al Magic the Gathering. No me queda claro cómo diseñar el área principal de juego. Puede ver algunos ejemplos que son similares a lo que estoy intentando al mirar example 1 o example 2. Las áreas de chat/información a la derecha serían controles de usuario separados.Disposición de WPF para el complejo juego de cartas
Las tarjetas deben mantener sus relaciones de aspecto, y cada área de juego comenzaría con 10 columnas y dos filas de tarjetas. A medida que se juegan más cartas, la cantidad de columnas y/o filas puede cambiar. Cada área de jugador puede tener un número diferente de columnas y/o filas. Las cartas pueden superponerse, y pueden colocarse de lado (golpeadas). Las tarjetas en todas las áreas deben tener el mismo tamaño (aunque pueden ser recortadas en algunas áreas). Las tarjetas no necesitan estar exactamente en la cuadrícula (no necesariamente se ajustan a la cuadrícula).
Cuando el usuario coloca el mouse sobre una tarjeta, debe expandirse a un tamaño significativamente mayor mediante una animación. Una carta en el área de un jugador puede desbordarse en el área del otro jugador cuando se expande (pero solo mientras el mouse se desplace).
Teniendo en cuenta estos requisitos, estoy tentado de utilizar un control de usuario grande derivado de Canvas con objetos de imagen para cada tarjeta (junto con otras formas para delinear las áreas). Esto implica que haré un montón de trabajo durante el evento OnRenderSizeChanged para colocar los elementos secundarios dentro del lienzo (diseño manual).
El uso de una cuadrícula no me parece posible, debido a la colocación y superposición de forma libre.
Descomponer el área de juego en controles de usuario más pequeños aprovecharía las capacidades de diseño de WPF, pero parece que la descomposición evitaría que las tarjetas se expandan en controles de usuario adyacentes durante el sobrevuelo, por lo que tampoco parece factible.
¿Existe una mejor alternativa a un gran control basado en lienzo? Parece incorrecto hacer un diseño manual en WPF, pero no veo una alternativa.
Gracias por el enlace, pero forge está escrito en Java y está más centrado en conseguir una IA para jugar el juego (un problema mucho más difícil). Mi objetivo es permitir que dos personas jueguen a través de una conexión a Internet. Existe un proyecto similar basado en WPF (http://moxdev.wordpress.com/) de donde proviene la idea de expansión de la tarjeta. Él también está usando un lienzo (creo), pero todavía parece un poco incorrecto abusar de un lienzo de esa manera. – Doug