Skocz do zawartości

TO_mek

Użytkownicy
  • Postów

    346
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    1

Treść opublikowana przez TO_mek

  1. Dokładnie o to mi chodzi. Teraz nie bardzo kumam o co chodzi z tymi smugami? Mam room 5000x5000 który wszędzie ma grafikę tła, view[0] 1024x768 przypięty do obiektu hero. Drugi view[1] jest umieszczony na stałe w lewym dolnym rogu ekranu (1024x100) i zawsze wskazuje stałe miejsce poza roomem gdzie będą wyświetlane informacje (życie, energia, broń itp.) oraz grafika panela (nie prostokątną tylko "strzępiastą", transparętną). Hero z view[0] nigdy nie wyjedzie poza obszar rooma więc zawsze będzie jakieś tło na ekranie a w związku z tym i pod panelem (pod view[1] w miejscu gdzie panel jest transparentny). I mam nadzieję że to działać będzie lepiej niż gdybym panel przypiął jako ruchomy obiekt do view[0]. A co do rysowania poprzez Draw skomplikowanego panela to jakoś sobie nie mogę tego wyobrazić, mam narysować pixel po pixelu cały panel za pomocą kresek i kropek?! Druga sprawa przecież rysowanie przez Draw jest okropnie wolne, zawsze tak w GMLu było i nie raz wyświetlanie tekstów z Draw "zabijało" fpsy. Poprawny adres screena (zresztą w razie czego to dowolny screen z googli z Diablo II): http://www.nbnews.pl/wp-content/uploads/20...11diabloII1.jpg link
  2. Nie do końca się zrozumieliśmy. Nie chcę niczego rysować ręcznie ale mieć nałożony panel graficzny z kilkoma "ikonami" w stałym miejscu na ekranie (lewy dolny róg) ale taki aby był wycięty tak jak w podanym przykładzie w Diablo II i transparentny czyli to co jest na przewijalnym ekranie gry pojawiało się także pod panelem. Wyłączyłem background color, ustawiłem view[1] (ten od panela) poza obszarem rooma głównego i wkleiłem kilka nieruchomych obiektów na ten widok i działa teraz tak jak powinno. I moim zdaniem jest to dużo lepsze (szybsze) niż gdybym zrobił to na ruchomym obiekcie podążającym za zmieniającym położenie widokiem głównego ekranu (view[0]).
  3. Witam! Jak dokładnie działa instance_nearest? Wybiera najbliższy obiekt po okręgu (najkrótszy promień)? Jest dostępna jakaś lista znalezionych obiektów posortowana wg odległości? Potrzebuje znajdować najbliższy obiekt ale na dużym roomie w zakresie całej szerokości ale w ograniczonym zakresie wysokości czyli w prostokącie o zadanej wysokości. Może coś na zasadzie znajdowania najbliższego obiektu a później sprawdzania czy ten obiekt ma y w odpowiednim zakresie (tyle sam potrafię) ale w momencie kiedy jednak ten najbliższy obiekt jest poza szukanym zakresem (za duży lub za mały X) jak wyszukać "drugi w kolejności najbliższy obiekt"?
  4. Witam! Mam pytanie dotyczące views i efektu panela takiego jak w DiabloII czyli duży room, panel w stałym miejscu na ekranie (na dole) o nieregularnych kształtach a to co jest w miejscu wcięć przeźroczyste i w momencie kiedy ekran się przesuwa tam pojawia się też zawartość rooma. Mam nadzieję że wiadomo o co chodzi. W prosty sposób można to uzyskać na jednym view, podpinając odpowiedni obiekt (grupę obiektów) panela z odpowiednio wyciętą grafiką i ustawić x,y do współrzędnych widoku. Ja chciałbym to zrobić nieco inaczej jeśli się da. Narysować panel na stałe w niewidocznym miejscu rooma, zdefiniować tam drugi widok (nr 1) i wyświetlać go na dole widoku nr 0 ale też w taki sposób by widok nr 1 (panel) był przeźroczysty i w miejscu gdzie nie ma grafiki pokazywało się ruchome tło rooma. Tylko czy taki efekt przeźroczystości uzyskam w ten sposób (przeźroczysty widok na widoku)?
  5. Pewnie wpisałeś .LOG jako nazwa pliku a nie w samym pliku :) Wyłączenie działa i to mi powinno wystarczyć na razie a co do osobnego pliku to nie za bardzo mi tak pasuje bo często przesyłam źródło do kolegi i z powrotem i dopisujemy dokonywane zmiany. Z osobnymi plikami łatwo się pogubić.
  6. Ok. W moim przypadku 5000, view_hport[0] bo potrzebuje miec aktywne obiekty na calej szerokosci rooma na danym pietrze a nie tylko widoczne. Ale teraz dziala ok. Jeszcze pytanko. Czy deaktywacja a pózniej aktywacja w tym samym kroku powoduje jakieś opóznienie? Chodzi mi o to ze na samym dole mam stały panel o wys. 60px który jest wyświetlany przez drugi widok (lewy dolny rog ekranu 1024x60) i na nim są obiekty które nie powinny znikać. Jeśli hero jest na wyższych piętrach to te obiekty znikają wywołując powyższą komendę więc muszę je ponownie aktywować dla regionu 0,4940,1024,60. Czy ma to wpływ na prędkość działania (są one najpierw wygaszane a później ponownie rysowane czy jak)? W sumie po to deaktuwuję obiekty aby przyspieszyć grę a nie żeby jeszcze ją niepotrzebnie obciążać ale potrzebuję dla tych obiektów w lewym dolnym rogu rooma robić wyjątek bo one tam muszą zawsze być.
  7. Witam! Czy można z poziomu kodu sterować tym co jest w Game Information (F1)? Chodzi mi o taką sytuację że to najlepsze miejsce do wpisywania pomysłów i różnych zapisów podczas tworzenia gry a niekoniecznie powinno to być wyświetlane osobom postronnym a zwyczajnie w świecie zapominam przy tworzeniu exe to wyczyścić. Chciałbym aby albo z poziomu kodu całkowicie wyczyścić zapiski albo zastępować je w locie innymi. Da się tak (jak tak to jak)?
  8. Ok juz wiem jak w debugerze wpisywać żeby działało a może przyda się to jeszcze komuś. W Tools show instances i to ID ktore jest przy obiektach (6cio cyfrowe np 100066) trzeba w watch add wpisac w nawiasie i po kropce zmienna czyli (100066).x pokazuje zmienna x obiektu o id 100066.
  9. Mam room 5000 x 5000 i view[0] 1024x768. Ekran jest podzielony na "piętra" o wysokości 250px (czyli na ekranie widać 3 piętra na raz), na każdym piętrze generowany jest na chwilę obecną jeden przeciwnik (docelowo dużo więcej obiektów). W celu optymalizacji chciałem zastosować coś takiego: GML instance_deactivate_region(0,view_yview[0],room_width,view_yview[0]+view_hview[0],false,true);//deaktywacja obiektow poza ekranem instance_activate_region(0,view_yview[0],room_width,view_yview[0]+view_hview[0],true); //aktywacja obiektow wewnatrz ekranu</span> czyli deaktywować obiekty poza viewem w pionie (w poziomie mają być aktywne bo cały czas chodzą tam i z powrotem) a aktywować te co są obecnie potrzebne. Po zmianie piętra (skok o 250px w górę/dół) następuje ponowne wywołanie powyższych dwóch linijek aby wyłączyć niepotrzebne obiekty z piętra które znika i załączyć następne z tego które się pojawiło. No i dałem debugera, włączyłem podgląd obiektów i karpik bo coś nie działa i deaktywacja/aktywacja obiektów obejmuje równocześnie AŻ 7 pięter (jak dochodzę do strychu lub piwnicy to pozostaje dokładnie tyle obiektów (przeciwników) ile ma być czyli na chwilę obecną po 1 na piętro czyli 3). Co jest nie tak z tymi procedurkami? Testuje na GM8 EDIT: Napisałem sobie dla pewności w drawie aktualne wartości tych obiektów: GML draw_text(view_xview[0]+180, view_yview[0]+420, "x1=0"); draw_text(view_xview[0]+180, view_yview[0]+440, "y1="+string(view_yview[0])); draw_text(view_xview[0]+180, view_yview[0]+460, "x2="+string(room_width)); draw_text(view_xview[0]+180, view_yview[0]+480, "y2="+string(view_yview[0]+view_hview[0])); for (i=0; i<instance_count; i+=1) { draw_text(view_xview[0]+180, view_yview[0]+500+(20*i), "x="+string(instance_id.x) + " y="+string(instance_id.y) + " id="+string(instance_id)); } No i obiekty nadmiarowe mają wartości Y z poza zakresu więc nie pownno ich być a są. Niby cośtam jest deaktywowane na odleglejszych piętrach (zakres 7 pieter a nie tak jak powinno być 3) ale jak dla mnie to zbyt losowo to działa żeby tak to zostawić. Macie jakieś pomysły?
  10. Witam! Mam kilka instancji obiektu przeciwnik_obj. Mam listę ID tych obiektów. W jaki sposób mogę odwołać się poprzez ID do konkretnej zmiennej danego klonu obiektu przeciwnik_obj np. do x czy y? Próbowałem poprzez id.x przeciwnik_obj[id].x przeciwnik_obj.id.x i nic nie działa.
  11. Witam! Mam pytanie o predkosc dzialania. Ustawilem room na 2500x768, 60fps i widok na 1024x768, mam JEDEN obiekt widoczny na ekranie (hero) o rozmiarach ok 100x200 i ze 3 niewidoczne (ktore jeszcze za bardzo nic nie robia). Problem w tym ze przy scrollowaniu ekranu (predkosc chodzenia hero to 5px) "gra" nie wyrabia - pojawia sie jakby efekt przeciecia ekranu w poziomie na pewnej wysokosci i gorna czesc nadąża a dolna nie wyrabia i widac taki jakby "schodek". Wspomne jeszcze tylko ze caly room posiada backgrounda o wielkosci calego rooma 2500x768, komputer tez jest dosyc szybki (C2D E8800, 4GB RAM, GF 8800 GTS) wiec o co chodzi. Sterowanie mam na klawiszach kursorow (jak przycisniety to x=x+/-5). Co tu mozna zoptymalizowac? Tlo nie nadaje sie raczej do pociecia na tajle wiec nie bardzo mam pomysl co z tym zrobic a docelowo ekran mial byc wielkosci 2500x7500. Pozdrawiam
  12. Kurcze czytałem helpa (EN) ale doczytałem tylko że to do skalowania wielkości sprajta a nie do obracania. Może jakby instrukcja po rusku była to bym nie przeoczył. Wina starego ustroju ;)
  13. Witam! Szukam i szukam i pewnie źle szukam ;) Jest dla sprite funkcja image_angle i to się super sprawdza dla obiektów widzianych z góry. A czy jest odbicie sprajtów horyzontalne i vertykalne? Mam animacje hero idącego w lewo i czy jest jakaś funkcja która odbija go w osi OY i mam hero idącego w prawo. Jak użyje się image_angle to mam super hero idącego w prawo ale po suficie (do góry nogami) :) Oczywiście nie problem dla mnie odbić sobie animację względem osi OY (chyba nawet w samym edytorze GMa jest taka możliwość) ale jakby była odpowiednia funkcja to po co kombinować.
  14. Witam! Jak zrobić oświetlenie pokoju w takim przypadku: - przekrój przez budynek (czyli jak takie dziecięce domki dla lalek) - widok z boku, 2D - grafika pomieszczenia - odcienie szarości lub zaciemnione kolory gdy nie ma światła, kolor gdy światła załączone Myślałem nad zrobieniem 2 grafik czyli tej jak światło świeci i gdy jest ciemno ale to jest strasznie sztywne bo: - po pierwsze jak jest załączona 1 żarówka to jeszcze ok ale w momencie gdy chcę kilka żarówek które mogą świecić niezależnie (raz jedna a raz druga a raz wszystkie na raz) to musiałbym tych wariantów graficznych robić całe mnóstwo a i tak zostanie problem następny czyli: - po drugie jak stworze to na zasadzie podmiany grafiki trzeba tez podmieniać grafikę wszystkich obiektów a i tak pozostanie problem z ruchomymi obiektami które są na krawędzi padania światła. Słabo znam możliwości nowszych GMów i pewnie już dawno zostały dodane jakieś efekty które pozwalają uprościć tworzenie takich oświetlonych pomieszczeń. Ja to widzę mniej więcej tak: - grafika tła oraz obiekty - wszystko w 100% oświetlone, - na to nałożony efekt zaciemnienia - też na cały ekran gry - na to efekt światła który oświetlałby te miejsca gdzie świeci się żarówka - fajnie jakby można było tym efektem sterować (różna moc żarówek), - powyższy efekt ma automatycznie działać też na ruchome przedmioty (czyli jak w padający strumień światła wchodzi postać to ona też zaczyna być jaśniejsza ale tylko w tej części gdzie jest zasięg światła) - do tego jeszcze ściany mają nie przepuszczać światła (może jakiś niewidoczny obiekt który będzie zatrzymywał efekt padania światła) - i jeszcze efekt rzucania cieni pod odpowiednim kątem - dla nieruchomych obiektów i nieruchomego źródła światła to w miarę proste ale co w przypadku obiektów ruchomych. Czekam na wszelkie sugestie.
  15. Witam! Prosty przyklad: widok 2d jak w platformowkach, jest ziemia na której stoją 2 kolumny a na tych kolumnach wspiera się pokrywa. Każdy element ma nadaną grawitację w dół i kolizje z ziemią oraz z innymi elementami (dlatego pokrywa stoi na kolumnach). Załóżmy że jedna z kolumn zostaje usunięta - normalnie (w realu) powinna zawalić się cała konstrukcja czyli pokrywa w dół która przy okazji przewraca drugą kolumnę. Standardowa grawitacja i standardowe kolizje działają na CAŁY obiekt więc niestety w tym przypadku będzie tak że pokrywa dalej stoi na jednej kolumnie mimo, że najnormalniej w świecie powinna się zawalić. Jak to zrobić w GM żeby było jak w normalnym świecie i żeby podstawa spadła jednak na ziemię wraz z odpowiednim obrotem i z działaniem na drugą stojącą kolumnę :) Drugi przykład to jeden z tutorliali do GM chyba jeszcze w wersji 5.x - przykład "stołu bilardowego" z bardzo fajnie działającymi odbiciami dla bil. I wszystko fajnie do momentu gdy bile są jednokolorowe. Ja chciałbym aby bile miały "tekstury" (choćby cyfre lub "połówki") i aby te tekstury obracały się tak jak w realnym świecie. Trzeci przykład (trochę drastyczny) - skoczek na basenie wybija się ze skoczni (deski) w górę i zaczyna obroty (załóżmy zgodnie z kierunkiem wskazówek zegara) ale niestety wybija się źle i spadając uderza w deskę przez co odbija się i zaczyna się obracać w przeciwnym kierunku. Jak uzyskać taki efekt? Ostatni prosty przykład - zanim wynaleziono koło to ludzie używali wielokątów w swoich pojazdach (widziałem w jakimś filmie ;) ). Załóżmy że mamy drogę idealnie płaską i właśnie takie "kwadratowe koło" z środkiem zaczepienia sprajta dokładnie w środku takiej figury. Interesuje mnie jak powinien wyglądać ruch obrotowy takiego koła względem drogi - wiadomo, że środek tego koła jaki i cały pojazd będzie musiał się unosić trochę do góry i opadać (najniżej gdy do drogi przylegać będzie któryś z boków a najwyżej w momencie gdy droga będzie stykała się jedynie z wierzchołkiem) - jak stworzyć taki ruch? Pozdrawiam
  16. A co dalej? Gdzie to wpisac? Klikam na Activation i mam 3 opcje: 1. Activate New License z polem do wypelnienia o nazwie: Activation Code 2. Re-install Existing License z dwoma polami: License Holder oraz Purchase Reference Number 3.Lost Your Licensing Details? i pole na podanie emaila Niby to co otrzymujemy po zakupie GMa pasuje pod punkt 2 ale z opisu wynika ze to jest PONOWNE instalowanie licencji. W takim razie kiedy otrzymuje sie ten kod "Activation Code"? A i czy wazne jest podanie prawidlowego Imienia i Nazwiska czy istotny jest tylko email?
  17. Uzywam font_replace(Punkty_fn, 'Arial', wielkosc_fontu, 1, 0, 0, 255) tylko nie wiem jaki to ma wplyw na predkosc, moze lepiej dodac wiele obiektow font i tylko zmieniac aktualnie uzywany? Co jest szybsze? Bo ramu wiecej zuzyje pewnie przy 2 opcji. Druga sprawa od v.6.x nie widze takich funkcji jak brush_style, pen_color i sporo innych funkcj rysujacych a na forum wyszukiwarka nic nie znalazla. Jak je zastapic?
  18. Niestety alternatywne sterowniki nie dzialaja a najnowsze ze strony producenta zmienily tylko wersje z 10.09 na 10.12 i nie widac roznicy. Zauwazylem ze gdy wylacze wyswietlanie tekstow w evencie Draw to wtedy gra wraca do swoich 30fps. Nie bardzo mam pomysl jak zoptymalizowac wyswietlanie tekstu na ekranie. GML draw_set_font(ArialB); draw_set_color(make_color(250, 250, 250)); draw_set_halign(fa_left); draw_text(5,5,'FPS:'+string(fps)+' / Room Speed:'+string(room_speed)) draw_text(view_xview[0]+180, view_yview[0]+420, "SILA : "+ string(global.sila)+" ZADOWOLENIE :"+string(global.zadowolenie)+" Punkty: "+ string(global.punkty)); draw_text(view_xview[0]+180, view_yview[0]+440, "Roznica wzg. środka kufla i strefy: "+ string(global.roznica)); draw_text(view_xview[0]+180, view_yview[0]+460, "B, C - dodatkowe babelki, W - plama wody, Z - zmiana poziomu zadowolenia"); draw_text(view_xview[0]+180, view_yview[0]+480, "M - nowa mucha, F - flaszka, K - krzeslo, G - gluty"); draw_text(view_xview[0]+180, view_yview[0]+500, "Wlączenie NEONU: 1-6, Swiatlo: S, PAUZA: P, Zmiana ROOMA: O "); draw_text(view_xview[0]+180, view_yview[0]+520, "Dodanie/Odjecie/Zerowanie Punktow: 8/9/0"); draw_text(view_xview[0]+180, view_yview[0]+540, "Dodanie/Odjecie Zadowolenia: Z/X"); draw_text(view_xview[0]+180, view_yview[0]+560, "Sterowanie kuflem piwa: Kursory Lewo/Prawo"); draw_text(view_xview[0]+180, view_yview[0]+580, "R-odczyt HS, Q-zapis HS, N-dodanie zycia"); draw_set_halign(fa_left); draw_set_valign(fa_top); draw_set_font(TimesB); //czy bold i jaka wielkosc okresla sie juz w obiekcie font draw_set_color(make_color(105, 250, 25)); draw_text(view_xview[0]+110, view_yview[0]+49, global.hs_tekst1); draw_set_color(make_color(250, 10, 130)); //od GM 6.1 draw_text(view_xview[0]+110, view_yview[0]+62, global.hs_tekst2); draw_set_color(make_color(75, 230, 250)); //od GM 6.1 draw_text(view_xview[0]+110, view_yview[0]+74, global.hs_tekst3); EDIT: Podzielilem ekran na kawalki w ktorych sa wyswietlane teksty za pomoca surface i dokonuje zmian tylko przy zmianie wartosci zmiennych tekstowych. Efekt jest taki ze gra zaczela dzialac na 30fps do momentu kiedy nastepuje aktualizacja powloki bo wtedy nastepuje cos jakby czkawka.
  19. Tyle ze te 5 FPS maja i gierki nie wykorzystujace ani surfaces ani efektow particles a tym bardziej 3d. Na razie jeszcze powalcze z alternatywnymi sterownikami do grafiki.
  20. Witam! Wpadl mi w rece Netbook Acer Aspire One z grafika Intel GMA 500 i pojawil sie problem. Wszelkie gierki napisane w GM dzialaja koszmarnie wolno. Czy moze ktos ma juz porownanie z innymi zintegrowanymi kartami graficznymi w malych Netbookach? Co ciekawe sam komputer dziala znosnie, testy directX sa ok, dzialaja gierki firmy Zylom (takie byly preinstalowane na tym spzecie), niezle dziala odtwarzanie divxow natomiast kilka prostych gierek napisanych za dawnych czasow w gm4 maja fps ~5. Takze swiezsze "produkcje" (gm7 czy 8) to okolice pieciu klatek na sekunde. Moze ktos cos na to poradzic? Intel GMA to nie jest jakas rewelacja ale tez gierki napisane w GM ktore testuje to nie jakies rozbudowane produkcje a dzialaja jak pokaz slajdow natomiast inne gry o niebo lepiej.
  21. Witam! Konwertuje sobie projekt z gm 4.x do gm 7. Najpierw przerobilem go konwerterem conv4to5 do wersji zjadliwej przez nowy gm a teraz tlumacze kod na nowy. Pytanie dotyczy fontow. Obecnie trzeba zdefiniowac obiekt typu font i tam ustawic wielkosc, pogrubienie itp. Po staremu robilo sie to poprzez font_style = fs_bold; font_size = 42; Moje pytanie brzmi: Czy obecnie nie moge programowo definiowac pogrubienia i wielkosci takiego fontu? Jesli tak to jak? Bo chyba nie zrobili kroku wstecz i nie bede musial definiowac 20 typow tego samego fontu rozniacego sie wielkoscia i tym czy jest pogrubiony czy podkreslony. Pozdrawiam
  22. TO_mek

    Game Maker 8 Beta

    A czy istniej gdzies jakis watek ktory opisuje zmiany w GMLu od wersji 4 (mam do przerobienia kilka starych projektow robionych w gm4). Cos jak to tutaj opisujace roznice miedzy 7 a 8: http://www.gmlscripts.com/forums/viewtopic.php?id=1623
  23. TO_mek

    Game Maker 8 Beta

    Dla niektorych tylko. Moze mi ktos na szybko przekonwertowac ten kod (z 6.1 na 8). GML tlo:=working_directory+"/room_1.jpg"; tlogm:=background2; aaa=background_replace(tlogm,tlo, background_get_transparent(tlogm), background_get_smooth(tlogm), background_get_preload(tlogm));
  24. Witam! Mam kupiona licencje na GM7 (grudzien 2007). Ze wzgledu na to ze uzywam 2 kompow jeden z vista drugi z xp do dzis nie uruchamialem pelnej siodemki tylko uzywalem gm6.1 (na viscie na virtualboxie z xpkiem). Zreszta kupilem oryginalna siodemke bo balem sie ze jak Mark odstapil GM serwisowi yoyo to cena znacznie podskoczy :) a w planach mialem kilka ambitnych pomyslow ktore niestety wciaz sa tylko w sferze planow . Mam kilka pytan: 1. Moze mi ktos wyjasnic jak to jest z ta 3 krotna aktywacja? Czy przy reinstalacji systemu zawsze trace 1 aktywacje? Czy mozna "odzyskac" aktywacje czyli jakby zachowac licencje przed reinstalacja systemu a po ponownej instalce "wgrac" to ponownie? Jest szansa na zrobienie kopii aktywacji (to jakis zapis w rejestrze czy jakis plik) na wypadek padu systemu (co wcale sie tak rzadko nie zdarza)? 2. Czy majac siodemke mam prawo do pelnej osemki? Czy przy osemce wciaz jest ten dziwny limit 3 instalacji? 3. Jak juz wykorzystam 3 aktywacje to musze kupic ponownie licencje. Jesli nie to jak ponownie aktywowac GMa? Slabo znam angielski wiec prosze o lopatologiczne wyjasnienie bez odsylania do opisow na yoyo czy w dokumentacji.
  25. Moge sam :) Skrypt OBROT: //rotating square array min_x:=argument0; min_y:=argument1; max_x:=argument2; max_y:=argument3; kierunek:=argument4; //1-right, -1-left //argument5 - nazwa tablicy if (variable_global_exists(argument5)) then stop:=0 else stop:=1000; if ((min_x) >= (max_x)) then stop:=10; if ((min_y) >= (max_y)) then stop:=100; tmp0:=variable_global_array2_get(argument5,max_x,min_y); i:=min_x; j:=min_y; a:=((max_x+1)div 2); //dla 1->0 2,3->1 4,5->2 b:=max_x-min_x; repeat (stop=0) {//start obrotu repeat ( b ) { //z B=max_x robimy przesuniecie calej kolumny i wiersza (zewnetrznych) i:=max_x; j:=min_y; for (i=max_x; i>=min_x; i+=-1) { //gora: z prawej (2) do lewej (0) tmp1:=variable_global_array2_get(argument5,i,j); variable_global_array2_set(argument5,i,j,tmp0); tmp0:=tmp1;}//i=min_x=0 j=min_y=0 //i,j,tmp1,var>tmp0,tmp0 2,0,X3,>X3,X3=X3 1,0,X2,>X3,X2 0,0,X1,>X2,X1 i:=min_x; j:=min_y+1; for (j=min_y+1; j<=max_y; j+=1) { //lewa: z gory (0) do dolu (2) (j=0; j<=2; j+=1) tmp1:=variable_global_array2_get(argument5,i,j); variable_global_array2_set(argument5,i,j,tmp0); tmp0:=tmp1;}//i=min_x=0 j=max_y=2 //0,0 i:=min_x; j:=max_y; for (i=min_x+1; i<=max_x; i+=1) {//dol: z lewej (0) do prawej (2) tmp1:=variable_global_array2_get(argument5,i,j); variable_global_array2_set(argument5,i,j,tmp0); tmp0:=tmp1;}//i=max_x=2 j=max_y=2 i:=max_x; j:=max_y; for (j=max_x-1; j>=min_x; j+=-1) {//prawa: z dolu (2) do gory (0) tmp1:=variable_global_array2_get(argument5,i,j); variable_global_array2_set(argument5,i,j,tmp0); tmp0:=tmp1;}//i=max_x=2 j=min_y=0 }// koniec petli z B (przesuniecie calej kolumny) min_x+=1; //1 max_x-=1; //1 min_y+=1; //1 max_y-=1; //1 if ((min_x >= max_x) or (min_y >= max_y)) then stop+=1; }//koniec jednego obrotu Wywołanie skryptu OBROT: min_tab:=0; max_tab:=5; for (z=min_tab; z<=(max_tab div 2); z+=1) { obrot(z,z,(max_tab-z),(max_tab-z),-1,'Test'); } gdzie min_tab i max_tab to wielkosc tablicy (minimum i maksimum), Test to tablica DWUWYMIAROWA (w tym przypadku 6x6) Skrypt powinien dzialac na dowolnej tablicy kwadratowej dwuwymiarowej. Oczywiscie pewnie mozna to napisac duzo lepiej i krocej ale to mialo zadzialac a optymalizacji na chwile obecna nie potrzebuje. Jesli ktos ma ochote to moze to poprawic. TOmek
×
×
  • Dodaj nową pozycję...