Как мой первый проект WPF, я пытаюсь создать приложение для игры в карточную игру, подобную Magic the Gathering. Мне непонятно, как выложить основную игровую площадку. Вы можете увидеть некоторые примеры, которые похожи на то, что я пытаюсь, посмотрев на example 1 или example 2. Областями чата/информации справа являются отдельные пользовательские элементы управления.WPF-макет для сложной карточной игры
Карты должны поддерживать свои пропорции, и каждая игровая зона будет начинаться с 10 колонок и двух рядов карт. При воспроизведении большего количества карт количество столбцов и/или строк может измениться. Каждая область игрока может иметь различное количество столбцов и/или строк. Карты могут перекрываться и могут быть помещены вбок (постукивались). Карты во всех областях должны быть одного размера (хотя они могут быть обрезаны в некоторых областях). Карты не обязательно должны лежать точно на сетке (они не обязательно привязываются к сетке).
Когда пользователь наводит мышь на карту, она должна расширяться до значительно большего размера с использованием анимации. Карточка в одной зоне игрока может переполняться в область другого игрока при ее расширении (но только до тех пор, пока мышь зависает).
Учитывая эти требования, у меня возникает соблазн использовать один большой пользовательский элемент управления, полученный из холста с объектами изображения для каждой карты (наряду с другими формами для определения областей). Это означает, что во время события OnRenderSizeChanged я буду выполнять большую работу, чтобы поместить дочерние элементы в холст (макет вручную).
Использование сетки не представляется возможным для меня из-за размещения свободной формы и перекрытия.
Разделение игровой зоны на более мелкие пользовательские элементы управления будет использовать возможности компоновки WPF, но похоже, что декомпозиция не позволит картам расширяться в соседние пользовательские элементы управления во время мыши, поэтому это тоже не представляется возможным.
Есть ли лучшая альтернатива одному большому контролю на холсте? Кажется неправильным делать макет вручную в WPF, но я не вижу альтернативы.
Спасибо за ссылку, но кузница написана в java и больше ориентирована на получение AI для игры (гораздо сложнее). Моя цель - позволить двум людям играть через интернет-соединение. Существует аналогичный проект на основе WPF (http://moxdev.wordpress.com/), в котором появилась идея расширения карты. Он также использует холст (я считаю), но по-прежнему кажется неправильным злоупотреблять холстом таким образом. – Doug