2010-02-02 11 views
6

Udało mi się znaleźć wiele informacji na temat rzeczywistego rozwoju logiki gier. Naprawdę chciałbym stworzyć grę karcianą, ale po prostu nie rozumiem, w jaki sposób, w oparciu o pozycję myszy, można wybrać obiekt (lub przynajmniej w odpowiedni sposób) Najpierw pomyślałem o sprawdzaniu boków, ale nie wszystkie moje bitmapy to prostokąty. Wtedy pomyślałem, że robię ukryty bufor z każdym obiektem o innym kolorze, ale wydaje się to absurdalne, że trzeba to robić w ten sposób. Zastanawiam się, jak to jest naprawdę zrobione. Na przykład, w jaki sposób Adobe Flash zna obiekt pod myszą?Metoda tworzenia prostego GUI graficznego

Dzięki

+0

Czy mówisz o czysto 2D aplikacji? – Andres

Odpowiedz

6

Twoje pytanie jest jak sprawdzić, czy mysz jest powyżej zakaz prostokątnym bitmapy. Zakładam, że wszystkie twoje bitmapy są naprawdę prostokątne, ale mają przezroczyste regiony. Musisz już być w stanie określić, która część twojej (prostokątnej) mapy bitowej jest przezroczysta, w zależności od używanego schematu (na przykład, jeśli kolor jest przezroczysty lub używasz maski bitowej). Będziesz także znał kolejność (warstwowanie) bitmap na swoim płótnie. Następnie, gdy wykryjesz kliknięcie na pozycji (x, y), musisz znaleźć listę prostokątnych bitmap, które obejmują ten piksel. Posortuj je według porządku Z, a dla każdego sprawdź, czy piksel jest przezroczysty, czy nie. Jeśli tak, przejdź do następnej bitmapy. Jeśli nie, to jest wybrana bitmapa.

1

Albo możesz użyć rozwiązania geometrycznego. Powinieneś przechowywać/zarządzać geometrią karty/przedmiotu. Na przykład lista kształtów takich jak okręgi, prostokąty.

Może trójkąty lub elipsy, jeśli masz dużo czasu. Opowiadanie, że trójkąt ma punkt lub nie, jest matematycznym pytaniem i może być niestabilne numerycznie, jeśli trójkąt jest bardzo cienki (algorytm ma podział).. Poprawka: How to determine if a point is in a 2D triangle?

Głosowałem za abc.

+1

Niestabilność numeryczna nie jest problemem. Mapy bitowe (np. Ekran) są dyskretne, więc używasz liczb całkowitych. Nie obliczasz wartości nachylenia - obliczasz średnie ważone punktów końcowych. Jeśli linia biegnie od (x1, y1) do (x2, y2) dla punktu z xa, otrzymujesz ya = y1 + (((y2-y1) * (xa-x1))/(x2-x1)). Musisz upewnić się, że masz wystarczająco dużo bitów w liczbach całkowitych dla wyników pośrednich, ale jest tylko jeden podział, a dzielnik jest dość oswojony. – Steve314

+0

Nadal warto jednak przegłosować. – Steve314

Powiązane problemy