sunflower Opublikowano 25 Lutego 2013 Udostępnij Opublikowano 25 Lutego 2013 Tytuł: Heksagonalna plansza Krótki opis: Reprezentacja gridem (tablicą dwuwymiarową), rysowanie i znajdowanie pozycji myszki dla planszy heksagonalnej. Wersja: GM:S, zalecany co najmniej Standard* Pliki: Projekt (*.rar zawierający *.gmz, do otwarcia przez "Import Project"; ok. 2,8 MB) Exek (ok. 1,8 MB, na górze po prawej jest FPS i współrzędne obecnego pola, strzałkami ogląda się planszę, pole nad którym jest myszka podświetla się; nie jest to to specjalnie fascynujące) Screen: [LINK] Przykład zawiera następujące elementy: - reprezentacja gridem (tablicą dwuwymiarową): w tym przykładzie oś X przebiega w prawo i w dół (pod kątem 30 stopni), a oś Y w lewo i w dół, co można zauważyć po numerkach współrzędnych; uznałam, że taka konwencja sprawdza się najlepiej (czyt. akurat tak mi się podobało) - rysowanie planszy: tj. rysowanie klatek pewnego sprite'a po wielokroć, która klatka to zależy od wartości pola w planszy; po narysowaniu wszystkich właściwych pól jeszcze jest rysowanie na tym konturów; rysowanie napisano w ten sposób, że wyświetlane są tylko elementy konieczne; nawet dla planszy zawierającej 10000x10000 elementów szybkość rysowania zasadniczo się nie zmienia - przewijanie planszy: można sprawdzić korzystając ze strzałek; nie musisz mieć gigantycznego rooma, żeby wyświetlić wszystko, czego chcesz! (technicznie rzecz biorąc room i tak jest z założenia w miarę nieskończony, ale można to załatwić i w ten sposóB) - znajdowanie pozycji myszki: obiekt rysujący planszę rozpoznaje współrzędne pola, nad którym obecnie jest myszka korzystając z matematyki takiej i owej; aktualna pozycja myszki jest przechowywana w zmiennych fx i fy (nazwanych bodajże po "focus x" i "focus y") i to do nich należy się odwoływać po wykonaniu zdarzenia Step odpowiedniego obiektu Póki co zrobiłam wyżej wymienione elementy mechaniki. Jeśli ktoś jest bardzo zainteresowany bardziej szczegółowym tutorialem ilustrującym jak to działa (i pewnie też tłumaczącym do czego służą poszczególne zmienne w przykładzie :P ) lub nowymi funkcjami, to proszę pisać; nie mam specjalnie ochoty robić nie wiadomo jakich fajerwerków jeśli okaże się, że i tak nie ma na nie zapotrzebowania. ;) *sam przykład korzysta ze struktury "grid" dostępnej tylko w płatnej wersji, natomiast można to podmienić na tablicę dwuwymiarą jak ktoś naprawdę bardzo chce Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
FanXX Opublikowano 25 Lutego 2013 Udostępnij Opublikowano 25 Lutego 2013 Szkoda że nie dałeś exe'ka :( Nie mam jak tego przetestować ale widać po opisie że jest to bardzo ciekawe :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
sunflower Opublikowano 25 Lutego 2013 Autor Udostępnij Opublikowano 25 Lutego 2013 Szkoda że nie dałeś exe'ka :( "DAŁAŚ" :angry2: (tak, dziewczyną jestem) Co do exeka, to też mogę wrzucić, skoro tak bardzo chcecie. ^^' [LINK] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 26 Lutego 2013 Udostępnij Opublikowano 26 Lutego 2013 Będzie działać na free GMS? Bo nie wiem czy go ściągać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
sunflower Opublikowano 26 Lutego 2013 Autor Udostępnij Opublikowano 26 Lutego 2013 sam przykład korzysta ze struktury "grid" dostępnej tylko w płatnej wersji, natomiast można to podmienić na tablicę dwuwymiarą jak ktoś naprawdę bardzo chce Czyli tak, raczej powinno działać na darmowym GM:S. O ile dobrze pamiętam, jedyne wystąpienia funkcji grida to Create, User Event 1 i Draw (przy czym user event jest stosowane tylko przy zmianie rozmiaru siatki). Zresztą, jak pominiesz którąś funkcję niedarmową, to pewnie od razu GM:S zacznie ci jojczyć przy uruchomieniu. ;) Przy okazji, tam są stosowane zmienne "width" i "height"; teoretycznie powinny odpowiadać rozmiarom grida, ale w tym przypadku chyba najlepiej w ogóle zamienić tworzenie grida i wywołanie User Event 1 na: GML width = /*szerokość*/; height = /*wysokość*/; for (i=0; i<width; i++) { for (j=0; j<height; j++) { source[i, j] = 0; //albo coś } } Mam nadzieję, że przejście od grida na tablicę dwuwymiarową nie sprawi zbyt wielu problemów? ^^' Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się