Jako mój pierwszy projekt WPF staram się zbudować aplikację do gry w karty podobną do Magic the Gathering. Nie jest dla mnie jasne, jak rozłożyć główny obszar gry. Możesz zobaczyć kilka przykładów, które są podobne do tego, co próbuję, patrząc na example 1 lub example 2. Obszary czatu/informacji po prawej stronie będą osobnymi kontrolkami użytkownika.Układ WPF dla złożonej gry karcianej
Karty muszą zachowywać proporcje, a każdy obszar gry powinien zaczynać się od 10 kolumn i dwóch rzędów kart. W miarę rozgrywania większej liczby kart liczba kolumn i/lub rzędów może się zmienić. Każdy obszar gracza może mieć inną liczbę kolumn i/lub rzędów. Karty mogą się nakładać i mogą być umieszczane na boki (stukane). Karty we wszystkich obszarach powinny mieć ten sam rozmiar (chociaż mogą być przycięte w niektórych obszarach). Karty nie muszą leżeć dokładnie na siatce (niekoniecznie przyciągają do siatki).
Gdy użytkownik najedzie myszą na kartę, powinien rozwinąć się do znacznie większego rozmiaru za pomocą animacji. Karta w obszarze jednego gracza może ulec rozszerzeniu na obszar innego gracza (ale tylko tak długo, jak wisi myszka).
Biorąc pod uwagę te wymagania, mam pokusę, aby użyć jednej dużej kontroli użytkownika uzyskanej z płótna z obiektami obrazu dla każdej karty (wraz z innymi kształtami, aby nakreślić obszary). Oznacza to, że wykonam dużo pracy podczas zdarzenia OnRenderSizeChanged, aby umieścić elementy potomne w obszarze roboczym (układ ręczny).
Używanie siatki nie wydaje mi się możliwe ze względu na swobodne umieszczanie i nakładanie się.
Dekompozycja obszaru gry na mniejsze elementy sterowania użytkownika wykorzystałaby możliwości układu WPF, ale wydaje się, że dekompozycja uniemożliwiłaby rozszerzenie kart do sąsiednich kontrolek użytkownika podczas przesuwania kursora myszy, więc nie wydaje się to możliwe.
Czy istnieje lepsza alternatywa dla jednego dużego kontrolera opartego na płótnie? Wydaje się niewłaściwe robienie ręcznego układu w WPF, ale nie widzę alternatywy.
Dzięki za link, ale forge jest napisany w Javie i jest bardziej skupiony na uzyskaniu sztucznej inteligencji (AI) do gry (o wiele trudniejszy problem). Moim celem jest umożliwienie dwóm osobom gry przez połączenie internetowe. Istnieje podobny projekt oparty na WPF (http://moxdev.wordpress.com/), w którym powstał pomysł rozszerzenia karty. Używa też płótna (jak sądzę), ale nadal wydaje się nieco niewłaściwe nadużywanie płótna w ten sposób. – Doug