ALT Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 Co w tym kodzie jest złego? Kiedy uruchamiam grę , gra się zawiesza... GML { for (yy=choose(288,256,224,192,160); yy<470; yy+=32) instance_create(xx,yy,oCube) if yy>=470 { xx+=32 event_user(0) break } }
Sernat Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 A gdzie są nawiasy klamrowe przy bloku kodu występującym pod pętlą for? Inaczej instrukcja break nie ma żadnego sensu. Podobnie warunek przy ifie. Kolejna ciekawostka: GM wymaga, przynajmniej zawsze wymagał, trzech średników przy pętli for.
ALT Opublikowano 25 Lutego 2012 Autor Opublikowano 25 Lutego 2012 Dodanie nowego średnika nie pomogło, a break nie ma tu nic do rzeczy(sprawdzałem).
Sernat Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 A nawiasy klamrowe wstawiłeś? W dodatku samo "event_user( 0 )" wiele nie mówi.
karolo320 Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 a nie przypadkiem wybiera yy, przelatuje fora i znowu wybiera yy i tak w kolko? :)
ALT Opublikowano 25 Lutego 2012 Autor Opublikowano 25 Lutego 2012 Ten kod to event_user 0. Może dlatego się kraszuje?
karolo320 Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 jesli tak, to po zakonczeniu fora zaczynasz drugiego fora
ALT Opublikowano 25 Lutego 2012 Autor Opublikowano 25 Lutego 2012 Poprawiłem: GML { for (yy=choose(288,256,224,192,160); yy<470; yy+=32;) instance_create(xx,yy,oCube) if yy>=470 and !xx>=608 { xx+=32 event_user(0) } } Nie zwiesza się, ale nie działa tak jak powinien
Jaklub Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 Kolejna ciekawostka: GM wymaga, przynajmniej zawsze wymagał, trzech średników przy pętli for. zawsze używałem dwóch średników i wszystko śmigało. również w starszych wersjach GMa.
karolo320 Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 jak powinno dzialac? :D e: w for jest tylko yy, zmienna yy jest tylko w forze, w forze wykonuje sie tylko instance_create
bluks Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 Dawno w GM nie siedzialem ale wdł mnie powinno być: GML { for (yy=choose(288,256,224,192,160); yy<470; yy+=32) instance_create(xx,yy,oCube); if (yy>=470 && !xx>=608) { xx+=32; event_user(0); } } jeżeli if jest poza pętlą lub jeżeli w tej pętli ten if ma być to napisz: GML { for (yy=choose(288,256,224,192,160); yy<470; yy+=32) { instance_create(xx,yy,oCube); if (yy>=470 && !xx>=608) { xx+=32; event_user(0); } } } Przypomnijcie czy w GM bylo trzeba dawac na koncu sredniki. ; p I daj errora jaki ci wyskakuje.
Sernat Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 zawsze używałem dwóch średników i wszystko śmigało. również w starszych wersjach GMa. Mnie nie. Nawet zawsze uczyłem, że jest inaczej niż w innych językach. Zaraz to sprawdzę :P .
taxi_driver Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 Po co ten srednik na końcu? wyglada to conajmniej dziwnie. Ja niedawno szukalem petli nieskonczonej i wstawiajac do petli while wartosc true tez doznawalewm zawiechy....az doszedlem do wniosku ze ... slusznie. Program w GM teoretycznie nie idzie po kolei i nie zatrzymuje sie jego wykonywanie na petli for... on do niej wraca co chwile wiec wraca i wykonuje kolejny raz i kolejny i kolejny ... nie konczac poprzedniej petli..... Tak przynajmniej wykumalem w evencie STEP. Rozwiazanie? wstaw po prostu flage if flaga then { twoja petla { } flaga=false } dzieki czemu twoja petla wykona sie tylko raz. Moge sie mylic ale chce pomóc :)
bluks Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 A sprawdz czy deklarowałeś istnienie "xx", bo zauwasz ze go nie ma. ; p Taxi@ Ty wiesz do czego ogulnie są średniki? Jak byś pisał w innych językach to byś wiedział, gm może patrzy na kolejną linię, ale lepiej zawsze ten średnik dać, rzeby nie było ew. problemów i on nie wygląda dziwnie, tylko jasno określa koniec pewnego działania. I jescze poco mu kur* pętla która wykona się raz, pętla jest poto aby wykonywać coć wielokrotnie w ciągu jednej klatki i poto ona jest. O.o. wdł. ciebie poco jest pętla?
ALT Opublikowano 25 Lutego 2012 Autor Opublikowano 25 Lutego 2012 @Bluks: Działa tak samo jak mój A kod miał generować kolumny oCuba losowej wysokości do końca room'u, a generuje tylko jedną!
bluks Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 A jak generator to spoko, sam tera z generator się bawie.; p. zara ci to rozkminie i przerobie na GML. ew. przerobie komentarz. ; ) weś odpal gierke i sprawdz w specjalnym okienku (chyba z tego co pamiętam to zamiast zielonej to czerwona strzałeczka), gdzie pokarze ci ilość obiektów, bo wydaje mi się, że ty je masz tylko, że ci generuje jeden na drugim, bo pozycja xx w pętli jest stała, zrub, aby np. za karzdym razem dodaławło nie tylko yy+=32, ale i xx+=32 wynik jeszcze nie ten, ale będzie pewność, że na siebie nie włążą. ; p. To ma generować jedną kpt ma kolumne o wysokośći, jakiejś, czy ten skrypt ma generować kolumny losowej wysokości do końca prawej strony, bo zauważ, że on robi chyba tylko jedną z daną wyskokością, jeżeli, nie zatrzymujesz pętli, po końcu stepa, to daj, żeby dawało ci plus 32 na końcu stepa, a nie w pętli to będzie ci to w kułko robić, i daj if'a, jeżeli xx jest większy od szerokości ruma wtedy nie rub pętli, zaraz ci to spisze. ; ) kurcze zara zainstaluje GameMakera i wyślesz mi kawałek plika. ok? tylko na PW. Ja puki co to pisze z pamięci. ; p EDIT2: sprubuj tak: GML for (xx=0;xx<room_width;xx+1) { for (yy=choose(288,256,224,192,160); yy<470; yy+=32) { instance_create(xx*32,yy,oCube); } } I pisz co ci nie pasi, albo na PW wyslij plika to będę wiedział, co konkretnie potrzebujesz, ew dawaj na GG jak masz. ; p możecie mi przypomnieć poco ten event_user(0) do generowania tego?
karolo320 Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 A kod miał generować kolumny oCuba losowej wysokości do końca room'u, a generuje tylko jedną! GML var yy; yy=0 for(i=0;i<=room_width/32;i+=1){ yy=irandom_range(0,iles_tam)div 32*32 instance_create(i*32,yy,oCube) }
bluks Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 To generuje kolumne stałej wysokości(kolumny), na losowej wysokości(pozycji), a mu chodzi raczej, o kolumne losowej WYSOKOŚCI(kolumny), do końca rooma. ALT@ Stary odpisz. ;p Bo ta niewiedza mnie dobija, a to prościzna.
ALT Opublikowano 25 Lutego 2012 Autor Opublikowano 25 Lutego 2012 Jutro ci wyśle,dziś już nie moge (pisze z tableta)
karolo320 Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 GML for (xx=0;xx<room_width/32;xx+1) { for (yy=irandom_range(5,9); yy<=15; yy+=1) { instance_create(xx*32,yy*32,oCube); } }
bluks Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 karol wlasnie mu podobne wyslalem. xD. Jak by co gotowiec: http://www.megafileupload.com/en/file/3417...aALTa-gm81.html (sprawdzone na avast i mcafe) tylko zauwarz karol, że twój tworzy kolumny, o wysokości 15 - wartość losowa. ; p Sprawdzałem i jakoś tak mi wychodziło. EDIT2: mój sam kod w Create GML xx=0; yy=0; max_yy=0; for (xx=0;(xx*32)<room_width;xx+=1) { max_yy=round(random_range(1,5));//5 to maksymalna wysokość kolumny, a 1 to minimalna for (yy=0; (yy*32)<(max_yy*32); yy+=1) { instance_create(xx*32,room_height-yy*32,oCube); } }
karolo320 Opublikowano 25 Lutego 2012 Opublikowano 25 Lutego 2012 wysokosc 15*32=480=wysokosc rooma domyslna
ALT Opublikowano 26 Lutego 2012 Autor Opublikowano 26 Lutego 2012 @bluks: Działa, ale chciałbym wiedzieć czemu w moim kodzie generowanie nie przechodziło do przodu tylko generowało jedno na drugim?
bluks Opublikowano 26 Lutego 2012 Opublikowano 26 Lutego 2012 Spoko.Jutro jak na kompa wejde(jeśli), to ci to dokładnie wytłumacze na PW, lub forum. ; ) I sorry, że tak późno, ale dziś czasu, żeby na kompa wskoczyć nie miałem. ;)
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ę