Jak stworzyć łamliwą pętlę w grze Scratch? Używam Scratch 2.0 i nie mogę znaleźć żadnego dobrego sposobu na złamanie pętli z wnętrza samej pętli.Łamiąca się pętla w Scratchu?
Odpowiedz
Nota prawna:
Nie ma idealnego sposobu na zrobienie tego. Jeśli możesz znieść ten fakt, możesz kontynuować.
Jest kilka sposobów na zrobienie tego.
Z repeat until
Pierwszym i najbardziej prosty następujący sposób:
Ale to nie jest technicznie część skryptu - to tylko powtórzenie aż jakaś wartość zwraca true.
Dzięki niestandardowym bloku (stop this script
)
W tym celu należy go wewnątrz skryptu, trzeba użyć podstępny mały trick z niestandardowych bloków.
Utwórz niestandardowy blok o nazwie, co chcesz - ale prawdopodobnie wzdłuż linii "breakable loop". Wewnątrz niej utworzyć skrypt:
Korzystając stop script
jesteśmy wyrwanie się skrypt, który jest aktualnie uruchomiony, który - zgodnie z Scratch, jest blok zwyczaj.
See the result! (as scratchblocks)
Z broadcast and wait
Można również użyć metody broadcast-and-wait, bardzo podobną do powyżej:
Choć bardzo proponuję don” t używaj tej metody, jak gdyby jakiekolwiek inne duszki miały łamliwe pętle, których potrzebujesz, aby zmienić nazwę każdego, co może być uciążliwe po użyciu dużej ilości pętle w wielu spritach!
(Uwaga ten błąd został naprawiony w wersji 442 edytora i takich nie stosuje się następujące.)
Pomoc! Mój projekt jest teraz w tyle!
Jak @foi ma noticed, jeśli Twój kod musi być prowadzony wewnątrz ramy prawdopodobnie sprawdzonej działać bez odświeżania ekranu. Niestety, z powodu błędu w odtwarzaczu Scratch, powoduje to, że program zasadniczo przerywa działanie po aktywacji bloku
stop this script
. Jak sobie z tym poradzić?Wynika samą zasadę użyć podczas korzystania biegać bez odświeżania ekranu niestandardowego bloku wewnątrz
forever
pętli - pętla nie używa odświeżania ekranu, podczas gdy w środku robi, co pozwala na chwilę animacje bez względu na to, czy używasz turbo mode.Oto przykład - obraz jest naprawdę zbyt długi, aby go osadzić, więc zamiast niego jest see it here.
Najprostszym sposobem na blok "Powtarzaj do" byłby "lub" twój normalny stan do momentu, w którym stan rozwarcia był do końca.
Dodając zmiennej licznik pętli incremeting w pętli można użyć „powtarzać aż” do replikacji funkcję „repeat n razy” bloku
za pomocą „powtarzać aż do” bloku tylko przerwy warunek dostaniesz odpowiednik "wiecznego" bloku
Jeśli potrzebujesz innego skryptu/sprite'a, aby wywołać break, wtedy publiczna zmienna pozwoli ci zerwać pętlę z dowolnego miejsca i pozwolić pojedynczemu warunkowi przerwać pętle dla różnych duszków.
Zamieszczam obrazek bloków, ale to jest moja pierwsza odpowiedź, a strona mnie nie wpuści!
powodzenia
Możesz użyć [Scratchblocks] (http://scratchblocks.github.io), aby zrobić zdjęcie. ;) Problem polega na tym, że nie wyłamyliśmy technicznie pętli z wnętrza skryptu; po prostu zapętlamy, dopóki pewne warunkowe nie zwróci true. – towerofnix
Jeśli ma znaczenie złamanie środkowej pętli (coś niepotrzebnego w Scratchu), a ostatnia iteracja pętli nie jest niemożliwa do odblokowania w blokach po pętli, to _if
Można zrobić zmienną wewnątrz lub na zewnątrz repeat
i zrobić skrypt tak:
repeat until [[my variable] = [e.g: 1]]
your code
your code
your code
your code
end of repeat until
O tak, teraz czuję się głupio, że o tym nie myślę. Podoba mi się to rozwiązanie. :) – towerofnix
Można zrobić to powtórzyć x razy lub zrobić to mieć pewien punkt, w którym zatrzymuje się, na przykład zmienia się inna zmienna.
W przeciwnym razie nie wydaje mi się, żeby to był wat.
- 1. Niekończąca się pętla w serwlinie - możliwe odzyskanie?
- 2. Podczas gdy pętla kończy się przedwcześnie
- 3. Czy sama pętla może się blokować?
- 4. Pętla 3,000,000,000 iteracje zachowuje się dziwnie
- 5. nieskończona pętla w C++
- 6. Nieskończona pętla w przechwytywaczu
- 7. Nieskończona pętla w EventQueue.isDispatchThread()
- 8. Pętla console.log w nodejs
- 9. Pętla, aby dowiedzieć się, czy katalog istnieje w Uniksie
- 10. sprintf w C, pętla nigdy się nie kończy
- 11. Podwójna pętla w pytonie
- 12. Zagnieżdżona pętla w StringTemplate
- 13. Pętla w Adobe Flex
- 14. Pętla w wierszach DataView
- 15. Pętla w NavigableMap w Javie
- 16. Pętla poprzez "Hashmap" w JavaScript
- 17. Pętla warunkowa w programie użytkowym
- 18. Nieskończona pętla główna w F #
- 19. Płynna pętla wideo w iOS
- 20. Pętla Do-while w Clojure?
- 21. laravel pętla foreach w kontrolerze
- 22. smarty pętla
- 23. Pętla w szablonie siatki Kendo
- 24. Pętla przez obiekt w nunjucks?
- 25. pętla przez kwargs w pytonie
- 26. pętla nad tablicą w gnuplot
- 27. Pętla nad krotkami w bash?
- 28. Pętla typu rodzajowego w C#
- 29. Pętla w trybie natywnego reagowania
- 30. Pętla w każdym wierszu zakresu w Excelu
To reorganizacja! Szalony gość! – towerofnix
Link do przykładowego obrazu jest martwy. – ppperry
Dzięki, naprawione. GitHub nie powoduje przekierowania GISTa podczas zmiany nazwy użytkownika. – towerofnix