Skocz do zawartości

Ranking

Popularna zawartość

Treść z najwyższą reputacją w 16.11.2019 uwzględniając wszystkie działy

  1. W sumie to było łatwiejsze niż myślałem. Aczkolwiek jest to najbardziej podstawowa wersja, jaką da się zrobić (tak sądzę). Przykład: https://gmclan.org/up8556_16_Wypisywanie_tekstu.html
    1 punkt
  2. Pewnie, że jest taka możliwość, a nawet i pewnie multum możliwości Jednak ja tutaj nie pomogę, bo nigdy tego nie robiłem. Jednym ze sposobów byłoby rozdzielenie całego stringa w tablicy, na tablice ze znakami (char), a później w pętli for, która wykonywała by się w jakimś interwale czasowym, wypisywać po kolei literki. Niemniej to jest pomysł, który jako pierwszy i od razu przychodzi mi na myśl. Jak jest z jego wykonaniem to nie wiem. Na pewno nie jest on najlepszym pomysłem, z pewnością są lepsze i bardziej optymalne rozwiązania.
    1 punkt
  3. Ale co Ty tu za bezeceństwa napisałeś Nawet nie wiem jak to wytłumaczyć Generalnie, to, kiedy masz przejść do następnego pokoju, sprawdzasz jednym ifem, na podstawie dwóch zmiennych "index" i "czego_wiecej". Jeśli "index" będzie większy, niż klatki z intro (tekst/obrazki) to przejdź do następnego pokoju. Czyli if index > czego_wiecej to goto_room_next(); //Najpierw zwiększaj index if(keyboard_check_pressed(vk_enter)) then index+=1; //Zwiększyć ten indeks o jeden, jeśli naciśne Enter //a dopiero później sprawdzaj var czego_wiecej = max(array_length_1d(msg), sprite_get_number(spr_intro1)); //zobacz, czy jest więcej obrazków czy tekstu i wpisz maks. liczbę if (index >= czego_wiecej-1) // możliwe, że będziesz musiał dać też -1, czyli index == czego_wiecej-1 { //W tym bloku wypisujesz akcje, które mają być spełnione po zakończeniu intra room_goto_next(); } /* TEGO TU NIE MA BYC, WYTNIJ TO, TO JEST POPSUTE I NIEDOBRE if (index == sprite_get_number(spr_intro1)) //teraz możesz tego używać, bo spr_intro1 zawiera cztery klatki { // Slajd kończy się, gdy osiągnie ostanią klatkę spr_intro1 // to koniec } */
    1 punkt
  4. 1. No to zrób if'a :V Znaczy masz już tam jednego co to sprawdza, wystarczy go przerobić pod siebie, nie będzie to trudne. Jedynym minusem tej metody jest to, że masz jedną sprawdzającą "index" na dwie sytuacje, czyli tekst i obrazki. Dlatego zawsze i tekst i obraz musi mieć taką samą pulę, czyli np. 5 obrazków to 5 tekstów (msg[5]). Ale jak masz np. więcej tekstu, to dajesz puste obrazki png, a jak masz więcej obrazków niż tekstu to dajesz pusty tekst msg[] = ""; 2. Zamień kolejność rysowania w draw xD głupol ze mnie. Najpierw niech rysuje obraz, a później tekst. PS: W sumie możesz jeszcze założyć blokadę w draw przy użyciu zmiennej "index", żeby nie wyleciała poza tablice, to wtedy nie będziesz musiał dawać pustych obrazków/tekstu DRAW //Rysuj tekst msg[i] oraz ilustracje z blokadą na tablice //Wskaźnikiem jaki ma być teraz rysowany tekst/obraz, jest zmienna "index", która zmienia się wraz z przyciskiem ENTER draw_sprite(spr_intro1, min(index, sprite_get_number(spr_intro1)-1), x+640, y+360); //najpierw (pod spodem) rysuj obrazek var dl_tablicy = array_length_1d(msg); //zobacz jaka jest dlugosc tablicy, aby zaznaczyc końcową wartosc przy rysowaniu draw_text(x+200, y+750, msg[min(index, dl_tablicy-1)]); //później (nad obrazkiem) rysuj tekst) a w stepie zobaczysz czego jest więcej i do tego się odwołać w ifie var czego_wiecej = max(array_length_1d(msg), sprite_get_number(spr_intro1)); if (index == czego_wiecej) // możliwe, że będziesz musiał dać też -1, czyli index == czego_wiecej-1 { // Slajd kończy się, gdy osiągnie ostanią klatkę spr_intro1 // to koniec }
    1 punkt
  5. if (index == sprite_get_number(spr_ilustracja4)) { // Slajd kończy się, gdy osiągnie numer obrazu spr_ilustracja4 lub długość tablicy msg // to koniec } Pomyśl, jakie są wartości ukryte pod tymi nazwami: Index = zainicjowałeś go w postaci liczby "0" i domyślam się, że wcisnąłeś enter 3 razy, żeby przejść do msg[3]. Teraz index = 3; Sprite_get_number(spr_ilustracja4)) - ta funkcja, tak jak napisał Konrad, zwraca ilość klatek w obrazie. Domyślam się (znowu :V), że jest tam tylko JEDNA klatka, więc Sprite_get_number(spr_ilustracja4)) = 1 i zawsze tam będzie jeden, jeśli obrazek nie jest animacją. Tak więc, warunek zawsze będzie prawdziwy, kiedy po raz pierwszy naciśniesz enter, bo wtedy index = 1; Możesz to zrobić poprzez array_length_1d a jakże, bądź, w taki oto fajny sposób (coś może się nie zgadzać, bo piszę z pamięci): 1) Robisz jeden sprite, o nazwie np. spr_intro1 2) W tym sprite dodajesz spr_ilustracja1, spr_ilustracja2, spr_ilustracja3, spr_ilustracja4 itd. tak, żeby powstała Ci animacja. 3) Create masz dobrze, a w Stepie coś takiego: if (keyboard_check_pressed(vk_enter))//Zwiększyć ten indeks o jeden, jeśli naciśne Enter index+=1; if (index == sprite_get_number(spr_intro1)) //teraz możesz tego używać, bo spr_intro1 zawiera cztery klatki { // Slajd kończy się, gdy osiągnie ostanią klatkę spr_intro1 // to koniec } 4) Draw: //Rysuj tekst msg[i] oraz ilustracje //Wskaźnikiem jaki ma być teraz rysowany tekst/obraz, jest zmienna "index", która zmienia się wraz z przyciskiem ENTER draw_text(x+200, y+750, msg[index]); draw_sprite(spr_intro1, index, x+640, y+360); Pamiętaj, że msg[] i ilość klatek w spr_intro1 musi być taka sama, bo inaczej indeksowanie tablicy Ci się wysypie, ale możesz to zabezpieczyć, np za pomocą funkcji clamp() albo po prostu jak masz więcej obrazków niż tekstu, to daj pustą tablicę, czyli msg[42] = "";
    1 punkt
Ten Ranking jest ustawiony na Warszawa/GMT+02:00
×
×
  • Dodaj nową pozycję...