Gra planszowa - plansza i WPF

4

Tworzę grę(steam - może ktoś zna) i mam już całą logikę - można grać, ale tylko w funkcji main, kompilując kod ;].
Teraz tworzę interfejs i szukam wskazówki jak rozwiązać sprawę planszy(mowa o WPF). Tak wygląda w rzeczywistości:
user image
Chodzi o tą mapę sześciokątów. W założeniu, użytkownik musi mieć możliwość kliknięcia na każdy z sześciokątów oraz na jego krawędzie. I tu pytanie do forumowiczów... Jak sobie z tym poradzić? Stworzyć jakieś własne buttony? Co w tedy z krawędziami? Fajnie byłoby nie bawić się ze współrzędnymi umiejscowienia tych sześciokątów, może jakiś panel, który zrobiłby to za mnie? Może całość napisać samemu - tu pytanie jak? Po prostu głośno myślę, więc proszę o jakąś pomoc. Dodam że MAM listę obiektów moich klas, zawierającą wszystkie sześciokąty tej mapy. Pytanie dotyczy grafiki, no i tego czy ta lista to ma być jakaś observable collection do której coś przybindujemy czy jak?

2

Na pewno nie ma żadnej kontrolki, która zrobi to za Ciebie. Najprościej zrobić swoją i w sumie wiele obliczeń z umiejscowieniem sześciokątów by chyba nie było jakby dobrze się to przemyślało.

0

No ok, czyli UserControl, który zawiera co? Jakieś obiekty Image? Buttony? Wydaje mi się, że najlepiej byłoby stworzyć kontrolkę, która na wzór ListBoxa ma kolekcję swoich elementów(w tym wypadku jakiś tam obiektów klasy Hex i jej pochodnych). Pytanie teraz co i jak wyrysować w tej UserControlce na podstawie mojej listy elementów - Hexów? I WAŻNIEJSZE, jak to zorganizować tak, aby potem, używając tej mojej kontrolki - mapy - nie bawić się w ręczne edytowanie dodawanie powiedzmy buttonów, a operować na obiektach, znajdujących się w liście - obiektach klasy Hex i pochodnych...

1

Właściwie to odpowiedziałem sobie na wiele problemów pisząc powyższy post. Planuje tak: User Control - cała mapa, jakiś kontener albo coś(tu proszę o pomoc), który decyduje o ułożeniu sześciokątów - kolejnych user controlów gdzie sam już zadbam o obsługę klikania odpowiedniego. Ten pierwszy UserControl - moja mapa, będzie zawierała tą wymarzoną listę, którą odzwierciedli na ekranie - w swoim kontenerze czy coś. Proszę o podpowiedź czy dobrze sobie to zaplanowałem. Czym powinien być kontener na te sześciokąty -na te drugie UserControlki? Jak wyliczyć ich ułożenie?

2

Powinno się to zrobić rysując wszystko samemu. Możesz stworzyć bitmapy odpowiadające różnym typom hexów a w pamięci tablicę z mapą. Poczytaj o programowaniu map heksagonalnych, w internecie są do tego poradniki.

2

Przemyśl jeszcze inny interfejs, np. XNA. Tu jest tutorial odnośnie tworzenia map hex:
http://xnaresources.com/default.asp?page=Tutorial:TileEngineSeries:3

2

Ale trzymanie hex'ów w liście to dobry pomysł? Nie lepiej w tablicy dwuwymiarowej?
Poszukaj pomysłów na algorytmy przechowujące planszę hexową w tablicy i wyliczające możliwe ruchy, wyszukujące ścieżki., zanim zaczniesz pisać kontrolkę.
A kontrolka nie powinna trzymać hexów, tylko dostać obiekt mapy i umieć go narysować. Czyli w hex jest zapisany np. rodzaj terenu = bagno. A kontrolka, wie że bagno, to użyj tekstury textura10.png.
Czyli odseparuj logikę rysowania i użycia zasobów (textur etc.) od przechowywania informacji o planszy, grze.

0

Dzięki za wszystkie odpowiedzi. Ja oczywiście będę musiał to i tak dostosować konkretnie do mojego programu, ale teraz wiem jak zbudować program od strony 'architektonicznej', a o to mi chodziło.
Z XNA nie skorzystam, ale dzięki za podpowiedź. Po prostu koniecznie chce tu mieć WPF :).
Temat do zamknięcia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1