Skocz do zawartości

Misiek999

Użytkownicy
  • Postów

    1 205
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Misiek999

  1. 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
  2. sorki jak sie nie doczytalem ale czy planujesz ( i to nie musi byc najblizsza przyszlosc ) zrobic : wybor klas oraz czary ?
  3. 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.
  4. 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.
  5. poszukaj pierwszy lepszy przyklad inventory na tablicach i tam jest "jak można zrobić" :D i przeanalizuj ten przyklad.
  6. 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
  7. fajna gierka i ładna grafika. a masz te 5/5 bo ten stworek jest sympatyczny i to twoja pierwsza gra :D
  8. Misiek999

    Testy GML'a

    to ja chyba na jakies proste pytania trafilem :D
  9. Misiek999

    Karaluch

    moze byc rozmiar 640 na 480 ?
  10. 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
  11. 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ść.
  12. https://gmclan.org/up2321_12_pajak.html co w tym takiego trudnego ?
  13. widok ma byc taki jak w Almorze a sprite skierowany w prawo.
  14. 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
  15. to jest moj pierwszy artykul i jak latwo sie domyslec nie jestem w tym dobry :D
  16. 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. :]
  17. poczytaj forum i artykuly na tej stronie i sie ucz az sie nauczysz tak jak wszyscy.
  18. jak dla mnie to moze byc jak jest :lol2: wygodniej sie gra :] ale jak juz musisz to dodaj odejmowanie punktow.
  19. bardzo fajna gierka czekam na full :] 5/5
  20. 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.
  21. Misiek999

    Moje biciki

    o jakbys mogl to mi tez .... :D a te dwa ostatnie kawalki sa spoko :thumbsup:
  22. przyjemna gierka i niezle trzeba sie namyslec zeby przejsc poziom. 4/5 :P
  23. 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)
  24. 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.
×
×
  • Dodaj nową pozycję...