Skocz do zawartości

Tymon

Użytkownicy
  • Postów

    5 841
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    5

Treść opublikowana przez Tymon

  1. Tymon

    Tileset

    Chciałbym zauważyć, że robisz dokładnie to samo. Po za tym, na razie widziałem, że masz tylko ściągnięty przykład ruchu platformowego lekko zmodyfikowany jeszcze prze zemnie, ripy z Maple Story i tyle. Do tego zadajesz pytania które można na prawdę rozwiązać w łopatologiczny sposób. Rozumiem, nie każdy ma talent, ale pomyśleć każdy może. Ile Ty masz lat? ;/ Do create. back = background_z_kawałkiem_tileseta; tile_add( back, 0, 0, background_get_width( back ), background_get_height( back ), x, y, depth ); I co ma do tego moja pozycja na stronie?
  2. Tymon

    Tileset

    A może wsiąść się za coś na swoje możliwości? Na razie liczysz na gotowca.
  3. Tymon

    Tileset

    To może czas zrozumieć?
  4. Tymon

    Tileset

    tile_add? Albo rysować i background_create_from_screen, czy tam z surface.
  5. Tymon

    Tileset

    No ok, ale mówię jeszcze raz. Te grafiki mają różne wielkości i nie zrobisz z nich dobrego tileseta. Lepiej poupychać je jako obiekty które "wrysowują" się w background i się niszczą.
  6. Ja bym proponował popracować tak z miesiąc i dopiero wtedy wrzucać nową wersję. :P
  7. Tymon

    Midtown Madness 2

    Lowrider, przestań zmieniać konta co chwilę. Grałem i nie lubię. :P
  8. Tymon

    Sheepy Track - grafika

    Mobilizacja samego siebie. O. ;P
  9. Nie przejmuj się nim, czasami tak ma. :P No i sam nie wiem o co mu chodzi. Przykład ok, jedyne co można by dodać to kasowanie tego co się napisało z bufora klawiatury. :3
  10. Tymon

    Sheepy Track - grafika

    Lord Marcelot, dziwne bo mi ambicja siadła właśnie. Zrobiłem tylko S, H, E, P i Y. I w GM wymyślałem sobie jakby to wyglądało. http://www.gmclan.org/up152_11_sheep_logo.html O kant tyłka można potłuc. Nie wiem kiedy uda mi się zrobić poprawki, czy następne. Samo mobilizacja nie działa.
  11. To wyjątkowo proste, potęgi liczby 2 mają swoje odpowiedniki w kodzie binarnym jako pojedyncza jedynka w określonej pozycji między zerami. 1 - 0000001 2 - 0000010 4 - 0000100 8 - 0001000 Tutaj tę pozycję określa wykładnik potęgi liczby 2, więc też wartość takiej liczby. Widzisz to? Jak już wcześniej tłumaczyłem zasadę działania binarnego xor ( ^ ), tak też tutaj podobną zasadę można wykorzystać tylko, że z użyciem binarnego or ( | ). Pozwoli to nam wstawić jedynkę w określone miejsce i przypadkiem się jej nie pozbyć ( np. gdy będziemy przypadkowo używać dwóch takich samych indeksów obiektów - pamiętaj, że or mówi "jeśli jedna z dwóch liczb", a xor dodatkowo dokłada warunek "jeśli te liczby nie są równe" co nam jest kompletnie niepotrzebne ). Teraz jeśli użyjemy binarnego or na dwóch lub kilku liczbach to otrzymamy coś takiego: 00000100 | 00010000 = 00010100 10000000 | 00000001 = 10000001 10000000 | 00000001 | 00010000 = 10010001 Rozumiesz? Teraz, jeśli indeks obiektu jest liczbą to potraktujmy go jako wykładnik potęgi! Wtedy te 0 i 1 będą mówić jakie indeksy są w zmiennej, a ich pozycja powie nam jaki to indeks. :D Dla przykładu: /* Obiekty i ich wartości indeksów: obj_1 = 1 obj_2 = 2 obj_3 = 3 */ zmienna1 = power( 2, obj_1 ) | power( 2, obj_3 ); Tłumacząc na nasze: ( 2 do potęgi 1 ) | ( 2 do potęgi 3 ) Czyli: 2 | 8 = 10 Na bitach: 00000010 | 00001000 = 00001010 Teraz przydało by się zanalizować to co mamy. Musimy sprawdzić każdy z zapisanych bitów w zmiennej czy jest równy 1 i znaleźć też same pozycje jedynek. Jak sprawdzić czy w danej pozycji jest jedynka? Przyda nam się operator binarny and który pozwoli sprawdzić czy dana jedynka jest w zmiennej i oczywiście potęgi liczby 2. Zasadę działania and przedstawię tylko na przykładzie: ( 2 do 2 | 2 do 0 | 2 do 3 ) & ( 2 do 2 ) = ( 2 do 2 ) Co znaczy: ( 4 | 1 | 8 ) & 4 = 4 Co w binarnych wygląda: ( 00000100 | 00000001 | 00001000 ) & 00000100 = 00000100 Rozumiemy? Jeśli wskazanej jedynki by nie było to byśmy uzyskali po prostu 0. Teraz potrzeba nam sprawdzić w jakiej pozycji są jedynki. Możemy generować każdą potęgę liczby 2: for( n = 0; n < ilość_zapisanych_indeksów; n += 1 ) { p = power( 2, n ); if( zmienna & p ) { //Ta jedynka jest w zmiennej } } Ale dodajemy sobie dodatkową niewiadomą, czyli ilość_zapisanych_indeksów - chyba wiadomo co oznacza. Jakby ją znaleźć? Najlepiej jej w ogóle się pozbyć. Wiemy, że jeśli nie ma już żadnych jedynek w zmiennych to wartość zmiennej jest równa 0. To teraz jakby tak likwidować kolejno każdą z jedynek/zer na początku? Przyda się operator przesunięcia bitów oznaczany >> dla przesunięcia w prawo, oraz << dla przesunięcia w lewo. Ogólna zasada ich działania wygląda tak: 01010101 >> 1 = 00101010 01010101 >> 4 = 00000101 01010101 << 2 = 01010100 Rozumiemy? Nam potrzebny jest tylko ten prawy by pozbywać się pierwszej 0/1 i musimy przesuwać tylko o 1. Tak więc kod wygląda następująco: while( zmienna != 0 ) //Powtarzaj póki jest coś w zmiennej { if( zmienna & 1 ) //Sprawdzamy zawsze tylko pierwszą jedynkę { //Ta jedynka jest w zmiennej } zmienna = zmienna >> 1; //Przesuwamy o 1 } I tyle. Do określenia pozycji jedynki czyli i indeksu obiektu potrzeba nam tylko jednej zmiennej która będzie zwiększała swoją wartość co jeden krok. Czyli: pozycja = 0; //Zaczynamy od 0 while( zmienna != 0 ) //Powtarzaj póki jest coś w zmiennej { if( zmienna & 1 ) //Sprawdzamy zawsze tylko pierwszą jedynkę { //Ta jedynka jest w zmiennej } zmienna = zmienna >> 1; //Przesuwamy o 1 pozycja += 1; //Zwiększamy też wartość zmiennej przechowującej pozycję } To wszystko czego nam potrzeba. Jak mówiłem pozycja określa indeks obiektu, tak więc patrząc na podany w moim powyższym poście przykład stwierdzamy, że jest poprawny. ;) Pisałem najprościej jak umiałem i na szybko. :P
  12. Jeśli chodzi o przechowywanie indeksów kilku obiektów w zmiennej i ich tworzenie GM nie oferuje czegoś takiego. Praktycznie jest to wykonalne, tak więc zapis: objects = power( 2, object3 ) | power( 2, object5 ) | power( 2, object1 ); Odczyt: n = 0; while( objects != 0 ) { if( objects & 1 ) instance_create( 0, 0, n ); objects = objects >> 1; n += 1; } Wytłumaczyć zasadę działania?
  13. Tymon

    Tileset

    Ripy z Maple Story. :P Trudno będzie połączyć to w jeden tileset bo kawałki dość znacznie różnią się rozmiarami.
  14. Jeden z tych obiektów czy wszystkie w zmiennej?
  15. O, to ja sobie przekieruje wiadomości takiego numeranta na jego numer. :D
  16. Tymon

    Statek kosmiczny

    Ma. http://pix.art.pl/files/works/game_sprites.gif
  17. Tymon

    C++ czy C#?

    I MSDN. Tak zmieniając lekko temat. Ogólnie rzecz biorąc trudno być teraz "programistą" znając tylko jeden język. I bym nie zabierał się za język którego istnienie nie jest jeszcze powszechnie - jak widać - znana.
  18. Panowie w ogóle przykładów nie przeglądają.
  19. 4. Sprawdzać pozycję kursora i jeśli jest w nieodpowiednim miejscu to blokować możliwość przenoszenia żetonów etc.. ;) Wystarczy zwykły warunek if( x > x_kursora ) itd..
  20. Musisz go po prostu wypakować z paczki, załadować i później skasować. Muszę poprawić ten przykład.
  21. action_move_to(x,y); To chyba tylko x = pozycja_x; y = pozycja_y;
  22. var plik,nazwa; nazwa=get_save_filename("Pliki HTML|*.html;",""); if (nazwa=="") exit; if( filename_ext( nazwa ) == '' ) nazwa += '.html'; plik=file_text_open_write(nazwa); file_text_write_string(plik,str); file_text_close(plik);
  23. Dodajesz if( filename_ext( nazwa ) == '' ) nazwa += '.html'; kryniak, ale HTMLa się nie kompiluje. Parasuje, ew po prostu analizuje. ;P
×
×
  • Dodaj nową pozycję...