-
Postów
1 205 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez Misiek999
-
Zmienne i losowość i inne pytanka.
Misiek999 odpowiedział(a) na Lollus temat w Pytania początkujących
1. create : zmienna = 5 2. aby na starcie bylo czegos 5 to po prostu ustawiasz na mapie i w step : if instance_number(nazwa_twojego_obiektu) <= 1 { // animacja } 3. Elementy losowe czyli co ? zeby zmienna miala losową wartość ? create zmienna = choose(1,6,40) // konkretne wartosci w losowaniu , albo : zmienna = round(random(10)) // liczba wylosowana od 0 do 10 7. draw draw_text(x,y,ammo) // wyswietli Ci wartosc zmiennej ammo. na reszte mi sie nie chcialo pisac albo nie zrozumialem o co chodzi za bardzo -
sorki jak sie nie doczytalem ale czy planujesz ( i to nie musi byc najblizsza przyszlosc ) zrobic : wybor klas oraz czary ?
-
bug w easy version : w podziemiach nie da sie zaznaczac potworkow. @up : shocker i tak ta gra jest juz bardzo podobna do tibi. z tym pomyslem bedzie jeszcze gorzej.
-
David, mam do Ciebie taką małą prośbę. W końcu i tak to tylko demko i wydajesz je zebysmy mogli zobaczyc co jest nowego. a wiec czy moglbys troche napakowac ta postac zebym sobie mogl pozwiedzac te nowe tereny prosze :D to za duzo grania jak dla mnie :D a ten co by nie chcial, to by po prostu tej wersji nie sciagal.
-
poszukaj pierwszy lepszy przyklad inventory na tablicach i tam jest "jak można zrobić" :D i przeanalizuj ten przyklad.
-
zobacz sobie moj artykul o siatkach. wprawdzie nie sa to typowe tablice ale moze ci to pomoze zrozumiec (obrazki) https://forum.gmclan.org/index.php?showtopic=8430 zobacz sobie na ten drugi obrazek. i jak napiszesz tablica[0,0] = 5 tablica[3,2] = 3 tablica[2,4] = 2 to tą tablice bedziesz mogl przedstawic w sposob graficzny tak jak na tamtym rysunku (drugim) i jak napiszesz teraz misiek = tablica[0,0] + tablica[3,2] to misiek bedzie == 8 i to jest najprostsza rzecz w ktorej mozesz wykorzystac tablice :D
-
fajna gierka i ładna grafika. a masz te 5/5 bo ten stworek jest sympatyczny i to twoja pierwsza gra :D
-
to ja chyba na jakies proste pytania trafilem :D
-
moze byc rozmiar 640 na 480 ?
-
Grids - Siatki
Misiek999 odpowiedział(a) na Misiek999 temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
wiem, ale tego mialem juz troche zrobionego, wiec postanowilem go juz dokonczyc. i wydaje mi sie ze troche lepiej jest wytlumaczone niz w helpie :D -
Grids - Siatki
Misiek999 opublikował(a) temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
GRIDS Siatki to jeden z 6 typów struktur danych występujących w Game Makerze. Siatki to tak naprawdę super elastyczne tablice dwu-wymiarowe, na których o wiele łatwiej wykonywać obliczenia niż na zwyczajnych tablicach. Napisałem ten artykuł, aby opisać wam poszczególne funkcje, które pozwalają nam korzystać z siatek. Wiem że brakuje tu jakiegoś przykładu zastosowania siatek. Jak ktoś takowy zrobi to będę wdzięczny ;p Jeśli dopatrzysz się w nim jakiś błędów to napisz :D pozdrawiam, Misiek ;p OPIS FUNKCJI Tworzenie siatki Aby stworzyć siatkę, wykorzystujemy funkcję ds_grid_create(w,h). W miejsce „w” wpisujemy długość siatki, natomiast w „h” wysokość naszej siatki. Napiszmy następujący kod : grid1 = ds_grid_create(5,5); wtedy stworzy nam się siatka o długości 5 i wysokości 5. Graficznie możemy przedstawić ją w taki sposób : Aby usunąć siatkę używamy funkcji ds_grid_destroy(id) . w miejsce id wpisujemy indeks naszej siatki (np. w naszym wypadku było by to grid1). Aby wyczyścić siatkę (wypełnić ją jakąś jedną liczbą )używamy ds_grid_clear(id,val). W pole „val” wpisujemy jaka ma to być liczba. Dodawanie wartości do siatki Do każdej z komórek możemy przypisywać dowolną wartość. Użyjemy do tego funkcji ds_grid_set(id,x,y,val). W miejsce x i y wpisujemy współrzędne naszej komórki, natomiast w „val” wartość jaką chcemy przypisać tej komórce. Dla przykładu, jak napiszemy : ds_grid_set(grid1,0,0,5); ds_grid_set(grid1,3,2,3); ds_grid_set(grid1,2,4,2); Nasza siatka będzie wyglądać w taki sposób : Wartość znajdującą się w komórce możemy również pomnożyć przez dowolną liczbę. Przeznaczona jest do tego funkcja ds_grid_multiply(id,x,y,val). Jeśli napiszemy na przykład : ds_grid_multiply(grid1,0,0,2); Wartość znajdująca się w siatce grid1 o współrzędnych 0 i 0 zostanie pomnożona przez 2. Jeśli natomiast chcemy aby do wartości w komórce została dodana jakaś wartość posługujemy się funkcją ds_grid_add(id,x,y,val) na przykład : ds_grid_add(grid1,0,0,2); do Wartości znajdującej się w siatce grid1 o współrzędnych 0 i 0 zostanie dodana liczba 2. Naszą siatkę możemy również bez problemu pomniejszyć lub powiększyć. Posłużymy się wtedy funkcją ds_grid_resize(id,w,h). W miejsce „w” wpisujemy nową długość a w „h” wysokość. Po wpisaniu : ds_grid_resize(grid1,8,5); Nasza siatka ( z tego artykułu ) będzie wyglądać tak : Jak widać wszystkie dotychczasowe wartości zostały zachowane Kolejną funkcją wartą uwagi jest ds_grid_set_region(id,x1,y1,x2,y2,val) Dzięki niej wypełnimy pewien region ( prostokąt ) naszej siatki jakąś wartością. W id wpisujemy indeks naszej siatki (np.grid1) w x1 oraz y1 jeden a w x2 oraz y2 drugi przeciwległy kąt naszego regionu a w val wartość. Po wpisaniu kodu : ds_grid_set_region(grid1,1,1,4,3,12); nasza siatka będzie wyglądać tak : Aby pewien region pomnożyć przez pewną wartość użyjemy funkcji ds_grid_multiply_region(id,x1,y1,x2,y2,val) Pamiętacie ? tak samo było z funkcją ds_grid_multiply(id,x,y,val), którą opisałem wcześniej, tylko że teraz nie mnożymy jednej komórki ale jakiś większy region przez jedną liczbę. Z dodawaniem jest tak samo. Aby wszystkie wartości znajdujące się w określonym regionie powiększyć o jakąś liczbę używamy funkcji. ds_grid_add_region(id,x1,y1,x2,y2,val) Oprócz powyższych funkcji istnieją jeszcze 3 podobne : ds_grid_set_disk(id,xm,ym,r,val) , ds_grid_add_disk(id,xm,ym,r,val), ds_grid_multiply_disk(id,xm,ym,r,val) służą one do tego samego tylko że region nie jest w kształcie prostokąta, lecz jest kołem. Odczytywanie wartości z siatki Aby odczytać wartość z jakiejś komórki w naszej siatce użyjemy funkcji ds_grid_get(id,x,y) Przykładowo, jeśli chcesz aby zmienna speed miała wartość komórki o współrzędnych 2,4 to piszesz : speed = ds_grid_get(grid1,2,4) Przyjrzyjmy się temu obrazkowi : W jaki sposób dodać do siebie te wszystkie wartości w niebieskiej obwódce ? do tego przeznaczona jest funkcja ds_grid_get_sum(id,x1,y1,x2,y2). Id to indeks naszej siatki, x1, y1, x2, y2 to współrzędne regionu w którym ma być wykonane sumowanie. Wystarczy więc napisać : Zmienna0 = ds_grid_get_sum(grid1,0,0,3,4) Aby zmienna Zmienna0, przyjęła wartość sumy liczb 5, 3 oraz 2. Jak łatwo się domyśleć jest to 10 :D A jak dodać sumy tych dwóch regionów ? Wystarczy napisać : Zmienna0 = ds_grid_get_sum(grid1,0,0,3,4) + ds_grid_get_sum(grid1,4,0,4,4) Proste, nieprawdaż ? ;p Nikt nie powiedział, że możemy sumować regiony tylko na jednej siatce. Spójrz na ten rysunek : Jak widzisz jeden region jest w grid1 ( pierwsza siatka ) a drugi w grid2 ( druga siatka ). Bez problemu możemy odjąć wyniki sumowania tych dwóch regionów, wystarczy napisać : Zmienna0 = ds_grid_get_sum(grid1,1,0,2,3) - ds_grid_get_sum(grid2,1,0,4,3); Funkcja, która zwróci nam największą liczbę z regionu to ds_grid_get_max(id,x1,y1,x2,y2) , natomiast funkcja ds_grid_get_min(id,x1,y1,x2,y2)zwróci nam najmniejszą liczbę z określonego przez nas regionu. Jak zażyczymy sobie średnią z regionu – nie ma problemu – użyjemy funkcji ds_grid_get_mean(id,x1,y1,x2,y2). poza tymi funkcjami są jeszcze ds_grid_get_disk_sum(id,xm,ym,r), ds_grid_get_disk_min(id,xm,ym,r), ds_grid_get_disk_max(id,xm,ym,r), ds_grid_get_disk_mean(id,xm,ym,r), które jak już się domyślacie robią to samo, co opisane prze zemnie funkcje, tylko że dotyczą regionów w kształcie koła. Kopiowanie Przyjrzyjmy się temu obrazkowi : Co zrobić, aby wartości zaznaczone zieloną obwódką, umieścić w regionie oznaczonym fioletową obwódką ? użyjemy do tego funkcji ds_grid_set_grid_region(id,source,x1,y1,x2,y2,xpos,ypos) W tym wypadku w miejsce id oraz source wpisujemy naszą siatkę (np. gird1). Gdyż wykonujemy tę czynność tylko na jednej siatce. W innym wypadku w miejsce source wpisujemy np. grid2. x1, y1, x2, y2 to nasz region, który chcemy skopiować. Podajemy współrzędne przeciwległych kątów. xpos oraz ypos , to miejsce w jakie chcemy coś wkleić. W tym wypadku podajemy współrzędne komórki pomalowanej na fioletowo ( jest to miejsce od którego mają się zaczynać skopiowane wartości), natomiast skopiowany region zajmie resztę miejsca, w zależności od tego jak duży skopiowaliśmy. Mam nadzieję że zrozumieliście bo trochę pomieszałem. Podam Wam kod do lepszego zrozumienia : ds_grid_set_grid_region(grid1,grid1,0,0,1,1,3,3); skoro jesteś już w tym miejscu artykułu chyba domyślasz się do czego służą dwie pozostałe funkcje ds_grid_add_grid_region(id,source,x1,y1,x2,y2,xpos,ypos) oraz ds_grid_multiply_grid_region(id,source,x1,y1,x2,y2,xpos,ypos) Jeśli chcesz, aby jedna siatka miała takie same wartości jak druga użyj funkcji ds_grid_copy(id,source). Pozostałe funkcje Do sprawdzenia, czy jakaś wartość znajduje się w regionie użyjemy funkcji ds_grid_value_exists(id,x1,y1,x2,y2,val). Zwraca 0 lub 1. Napiszmy następujący kod : if ds_grid_value_exists(grid1,0,0,2,4,2) then game_end() jeśli nasza siatka będzie wyglądać tak : gra zostanie wyłączona. Jeśli jednak nie będzie już tam tej dwójki o współrzędnych 2 i 4, nie wyłączy się. Funkcja ds_grid_shuffle(id) „tasuje” wartości i ustawia je losowo w siatce. Funkcja ds_grid_width(id)zwraca długość siatki, a ds_grid_height(id) Wysokość. -
https://gmclan.org/up2321_12_pajak.html co w tym takiego trudnego ?
-
widok ma byc taki jak w Almorze a sprite skierowany w prawo.
-
nie ma takiego czegos jak sprite direction. Pablo, Tobie chodzi chyba o obiekt z spritem 'pajak'. sprite musi byc od gory i skierowany w prawo i w step image_angle = direction
-
Stacks - Stosy
Misiek999 odpowiedział(a) na Misiek999 temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
to jest moj pierwszy artykul i jak latwo sie domyslec nie jestem w tym dobry :D -
Stacks - Stosy
Misiek999 opublikował(a) temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Napisałem ten artykuł z myślą o początkujących użytkownikach GM :D STACKS W Game Makerze występuje 6 różnych typów struktur danych. Możemy w nich zapisywać różne wartości, aby w przyszłości je odczytać, w każdej chwili możemy je usunąć, wyczyścić oraz sprawdzić ile akurat mamy przypisanych wartości. W tym artykule napiszę o najprostszym oraz najmniej skomplikowanym typie : o stosach. Czym one w ogóle są ? Tak naprawdę zrozumienie na czym to wszystko polega jest bardzo proste. Załóżmy, że na biurku położyłeś małą karteczkę na której było napisane „1”. Następnie położyłeś na tę kartkę kolejną z napisem „2” a później jeszcze jedną z napisem „3”. W taki sposób utworzyłeś „stos”. Teraz na szczycie tego stosu znajduje się karteczka z napisem „3”, więc będzie również pierwszą karteczką którą zdejmiesz, natomiast ostatnią którą zdejmiesz będzie ta na samym spodzie a więc „1”. Po przeczytaniu tego prostego przykładu, mam nadzieje że już rozumiesz co to są Stacks w GML’u , gdyż działają na tej samej zasadzie. Oczywiście do stosu możemy dodawać o wiele więcej takich „karteczek”. A oto funkcje które przydadzą się nam podczas tworzenia stosów. ds_stack_create() – Dzięki tej funkcji stworzymy nowy stos. Najlepiej zapisać to w taki sposób : stack1 = ds_stack_create(); , gdyż ta funkcja zwraca indeks stosu ( w skrócie id lub ind ) - jego unikalny identyfikator , który będzie potrzebny do innych funkcji. Gdybyśmy napisali tylko ds_stack_create(), musielibyśmy ręcznie pisać indeks, co jest bardzo uciążliwe. Oczywiście możemy tworzyć więcej stosów. Jak łatwo się domyśleć możemy to zapisać tak : stack2 = ds_stack_create(); stack3 = ds_stack_create(); Teraz mamy już gotowy stos. Jak dodać do niego jakąś wartość ? użyjemy do tego funkcji ds_stack_push(id,val) . W pole oznaczone id wpisujemy indeks stosu (na przykład chcesz stos drugi to wpisujesz stack2, albo inną zmienną)W pole val wpisujesz jakąś wartość – może to być na przykład 5. Równie dobrze możesz tam wpisać nazwę zmiennej np. mana. Wtedy jeśli na przykład mana = 256 wtedy na szczyt stosu zostanie dodana wartość 256. Funkcja ds_stack_top(id) , zwróci nam jaka wartość znajduje się na szczycie stosu ( czyli tą, jaką dodaliśmy jako ostatnią ) , natomiast jeśli chcemy aby wartość była zwrócona i usunięta, wtedy używamy funkcji ds_stack_pop(id). Do usunięcia stosu przeznaczona jest funkcja : ds_stack_destroy(id), Do wyczyszczenia stosu ( usuwa z niego wszystkie wartości ale sam stos zostaje ) : ds_stack_clear(id) Fukcja ds_stack_size(id) zwraca wielkość stosu ( wielkość zależy od tego ile jest w nim zapisanych wartości ). jeśli chcemy na przykład aby zmienna AA miała wartość równą wielkości drugiego stosu to wtedy piszemy : AA = ds_stack_size(stack2); . funckja ds_stack_empty(id) sprawdza czy stos jest pusty ( jak łatwo się domyśleć zwraca 0 albo 1 ) . Ćwiczenie : Włącz Game Makera, stwórz nowy stos i dodaj do niego kilka wartości Niech wartość zmiennej AA będzie równa wartości na szczycie stosu Niech w lewym górnym rogu ekranu będzie widoczna wielkość stosu Po naciśnięciu klawisza ENTER niech stos się wyczyści Jeśli stos jest pusty, niech gra się wyłączy. Mam nadzieję, że choć trochę spodobał Ci się ten artykuł i pomógł Ci zrozumieć jak korzystać ze stosów. Proszę o komentarze i pisanie o ewentualnych błędach w artykule. :] -
poczytaj forum i artykuly na tej stronie i sie ucz az sie nauczysz tak jak wszyscy.
-
jak dla mnie to moze byc jak jest :lol2: wygodniej sie gra :] ale jak juz musisz to dodaj odejmowanie punktow.
-
bardzo fajna gierka czekam na full :] 5/5
-
fajna jest teraz graficzka :D ale znalazlem buga w tej nowej wersji. jak wcisniesz enter to nie przenosi cie do nastepnego poziomu i nie mozna juz sterowac.
-
o jakbys mogl to mi tez .... :D a te dwa ostatnie kawalki sa spoko :thumbsup:
-
przyjemna gierka i niezle trzeba sie namyslec zeby przejsc poziom. 4/5 :P
-
Przykład prostego plecaka
Misiek999 odpowiedział(a) na Pentalinio temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
przyklad na mnie nie zrobil wrazenia ale wkoncu to dla poczatkujacych sam to podkreslil , a wlasnie takie proste przyklady sa pomocne w nauce :) jak troche go ulepszysz wystawie 4/5 ( oczywiscie umownie bo tu nie ma mozliwosci oceny :D) -
Zgadzam sie z Yodą. Ten akurat sposob moglbys zmalpowac z Diablo 2 :D Ale David to chce zrobic chyba tak, ze w tym okienku sie informacje wyswietlaja i to by bylo troche glupio jak by po kazdym najechaniu pojawialy sie w tym okienku.