Paqoo Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Mam taki kod w stepie: switch (surowiec) { case (surowiec<surowiec/2): sprite_index=sprite88; break; case (surowiec<surowiec/10): sprite_index=choose(sprite89,sprite90,sprite91) break; case (surowiec < 1):instance_destroy();break; default:; } Ale z jakiegoś powodu nie działa! 1 warunek jest poprawny, a dalej nie zmienia grafiki... O co chodzi? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Lol, kto Ci powiedział, że to jest poprawne O.o ? switch służy tylko i wyłącznie do sprawdzania konkretnych wartości - nie ma przedziałów liczbowych etc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 3 Lutego 2009 Administratorzy Udostępnij Opublikowano 3 Lutego 2009 bo się pisze tak: case 0: case 1: case 19: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 w switch, case sluzy do pobierania gotowych wartosci. Chodzi o to ze tam powinienes wstawic zmienne lub wartosci, nie zas warunki logiczne. Bo tutaj w case(surowiec<surowiec/2) sprawdza czy surowiec<surowiec/2 i jesli tak to zwraca true, jak nie to false, a ze wszedzie masz warunki logiczne to masz 2 mozliwosci pobieranych danych: true lub false. do tego lepiej juz uzyj warunek if, jesli ma to tak wygladac. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 To nie lepiej zrobić każdą postać surowca w klatkach a następnie wyliczać numer klatki? np. surowiec div 10 i co 10 mniej masz inną klatkę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 3 Lutego 2009 Autor Udostępnij Opublikowano 3 Lutego 2009 Mam coś takiego: if (surowiec<surowiec/2){sprite_index=sprite88;} else if (surowiec<surowiec/10){sprite_index=sprite89;image_index=choose(0, 1, 2);} else if (surowiec < 1){instance_destroy();} I znowu nie działa! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 czym jest zmienna surowiec i do czego służy w Twojej grze? btw. spróbuj zrobic tak jak pablo napisal Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 3 Lutego 2009 Autor Udostępnij Opublikowano 3 Lutego 2009 Zmienna surowiec to jakby ilość surowca w jednej rudzie. Wydobywamy go i ruda się pomniejsza (zmienia grafikę). Nie wiem o co chodzi Pablo :P Szczególnie tutaj np. surowiec div 10 i co 10 mniej masz inną klatkę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Coś mi tu śmierdzi. surowiec<surowiec/2 wtedy gdy surowiec jest ujemny tak samo surowiec<surowiec/10 więc jaki sens mają te warunki? O.o Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TeeGee Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Jak surowiec ma być mniejszy niż surowiec podzielony przez 2 lub 10? :huh: Do tego musiałby mieć wartości ujemne. Ale jakoś wydaje mi się, że raczej (jak wszędzie) surowce liczy się od zera w górę i chodziło Ci o coś innego. Prawdopodobnie powinieneś mieć oddzielną zmienną przechowującą maksymalną wartość surowca i to z nią porównywać aktualny stan. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 3 Lutego 2009 Autor Udostępnij Opublikowano 3 Lutego 2009 Surowiec ma wartość początkową round(random(50)). To chyba nic dziwnego ten kod? Surowiec mniejszy od 1/10 surowca. Mają sens. Jak inaczej pokażesz procent? Wyobraź sobie wartość surowca 50 co ma być mniejsze od 5. Przecież jest to możliwe. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Słuchaj, pomyśl. Jak pizza może być mniejsza od połowy pizzy?! :/ Te warunki nie mają sensu bo to po prostu sprawdzanie czy zmienna jest ujemna jakąs zwaloną metodą. Raczej nie o to ci chodziło. Opisz nam dokładnie co chcesz osiągnąć. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 3 Lutego 2009 Autor Udostępnij Opublikowano 3 Lutego 2009 surowiec/2 - co w tym złego np? Po prostu połowa wartości zmiennej surowiec. Możliwe, że źle to sobie pomyślałem? To jak inaczej zaznaczyć... Po prostu podać wartość np. surowiec<round(random(50))/10? Jaka to różnica. Chce osiągnąć to, że: losuje mi surowiec do 50 - jeśli wartość wyniesie połowę to zmień grafikę na x - jeśli wartość wyniesie 1/10 to wybierz obrazek ze sprita y (są 3 klatki) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Nadal nie wiem o co ci chodzi ale postaram ci przybliżyć o co mi chodzi. Zakładając że surowiec jest równy 5 wtedy masz if(5<5/2) czyli if(5<2.5) Jaki to ma sens? Ten warunek jest prawdziwy jedynie dla liczb ujemnych np. if(-5<-2.5) KPW? EDIT: W takim razie musisz stworzyć dodatkową zmienną. Jedna z wylosowaną wartością a druga z to ten surowiec i je ze sobą porównywać Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 3 Lutego 2009 Autor Udostępnij Opublikowano 3 Lutego 2009 KPW! To jak inaczej zapisać, że chcę mieć: surowiec < połowa wartości surowiec i surowiec < 1/10 wartości surowiec Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TeeGee Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Argh... jak możesz porównywać wartość z samą sobą? Skąd program ma wiedzieć, że chodzi Ci o wartośc początkową? W create: surowiec=round(random(50)); surowiec_max=surowiec; I normalnie już w step: if (surowiec<surowiec_max/2){sprite_index=sprite88;} else if (surowiec<surowiec_max/10){sprite_index=sprite89;image_index=choose(0, 1, 2);} else if (surowiec < 1){instance_destroy();} Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 3 Lutego 2009 Autor Udostępnij Opublikowano 3 Lutego 2009 TeeGee o to chodziło. Ale tu chyba jest coś nie tak: else if (surowiec<surowiec_max/10){sprite_index=sprite89;image_index=choose(0, 1, 2);} Bo ciągle nie wybiera tych klatek! ;( Aha już widzę :D Chyba image_number nie index... LOL! :D Głośno. I dalej nie działa... GM chyba mnie nie lubi :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TeeGee Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 if (surowiec<surowiec_max/2){sprite_index=sprite88;} if (surowiec<surowiec_max/10){sprite_index=sprite89;image_index=choose(0, 1, 2);} else if (surowiec < 1){instance_destroy();} Tak będzie dobrze. Wywaliłem else bo ostatecznie wartość/10 zawsze będzie mniejsza niż wartość/2, a elsesprawia, że drugi warunek jest sprawdzany tylko jeśli pierwszy był nieprawdziwy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 3 Lutego 2009 Autor Udostępnij Opublikowano 3 Lutego 2009 sprite_index=sprite89;image_number=choose(0,1,2); Tu jest coś nie tak. Chyba trzeba to inaczej zapisać, bo nie wykrywa tej klatki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Misiek999 Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 image_index a nie number. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
don_soyer Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 image_number=choose(0,1,2); ?/ image_index = choose(0,1,2) // jesli chodzi Ci o to o czym mysle up: no wlasnie ;] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Zmienna surowiec to jakby ilość surowca w jednej rudzie. Wydobywamy go i ruda się pomniejsza (zmienia grafikę). Nie wiem o co chodzi Pablo :P Szczególnie tutaj Zrobie przykład Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 3 Lutego 2009 Autor Udostępnij Opublikowano 3 Lutego 2009 To cudownie :P Już prawie działa. Tylko przy zamianie na te najmniejsze rudki to już fixuje. sprite_index=sprite89;image_index=choose(0,1,2);change=true; Jakoś nie za bardzo wie, że po zamianie na innego sprita ma losować jego klatki... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Zobacz se jak ja bym to zrobił. https://gmclan.org/up199_11_rysowanie_zasobow.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Paqoo Opublikowano 3 Lutego 2009 Autor Udostępnij Opublikowano 3 Lutego 2009 pablo1517 genialne! :D O to właśnie chodziło! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Przeglądając przykład pabla, ja bym to zrobił jeszcze inaczej ;) W Create dodać zmienną GML resourcemax=100; W Draw rysowanie sprita i paska życia GML draw_sprite(sprite_index,resource div (resourcemax/image_number),x,y); draw_rectangle(x-50,y-62,x-50+((resource/resourcemax)*100),y-50,0); ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 Zrobił byś to samo tylko ty nie miałbyś ramki w pasku i tyle, że byś ustalił max wartość. Ja napisałem przykład, nie gotowca ;> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 3 Lutego 2009 Udostępnij Opublikowano 3 Lutego 2009 @pablo1517, ja to dopisałem do twojego przykładu, i w tym sęk że wystarczy dodać zmienną i podmienić rysowanie sprita i zielonego paska. :3 A do tego niezależnie ile będzie klatek w spricie, "zawsze" pokażą się wszystkie ( Chyba że przyśpieszysz zbieranie ) klatki ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
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ę